]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Merge changes from CUPS 1.7svn-r10704.
authormsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>
Fri, 16 Nov 2012 01:00:05 +0000 (01:00 +0000)
committermsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>
Fri, 16 Nov 2012 01:00:05 +0000 (01:00 +0000)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@4027 a1ca3aef-8c08-0410-bb20-df032aa958be

60 files changed:
CHANGES-1.6.txt
CHANGES.txt
backend/ipp.c
backend/lpd.c
backend/socket.c
backend/usb-darwin.c
cups/adminutil.c
cups/array.c
cups/cups-private.h
cups/cups.h
cups/debug.c
cups/dest-job.c
cups/dest-localization.c
cups/dest.c
cups/encode.c
cups/globals.c
cups/http-addr.c
cups/http-addrlist.c
cups/http-private.h
cups/http-support.c
cups/http.c
cups/http.h
cups/ipp-private.h
cups/ipp-support.c
cups/ipp.c
cups/ipp.h
cups/ppd-cache.c
cups/ppd-private.h
cups/pwg-media.c
cups/raster.h
cups/request.c
cups/testarray.c
cups/testhttp.c
cups/testipp.c
cups/util.c
cups/versioning.h
doc/help/api-httpipp.html
locale/cups.pot
locale/cups.strings
locale/cups_ca.po
locale/cups_es.po
locale/cups_ja.po
monitor/tbcp.c
scheduler/client.c
scheduler/conf.c
scheduler/conf.h
scheduler/dirsvc.c
scheduler/ipp.c
scheduler/job.c
scheduler/listen.c
scheduler/main.c
scheduler/network.c
scheduler/printers.c
scheduler/statbuf.c
systemv/cupstestppd.c
test/ippserver.c
test/ipptool.c
test/run-stp-tests.sh
xcode/CUPS.xcodeproj/project.pbxproj
xcode/config.h

index b7b72b8c16ab4a633b5633245b4524c92f1cf78c..e5e87ae882bbfa6361884596f36adf642b831521 100644 (file)
@@ -11,7 +11,7 @@ CHANGES IN CUPS V1.6.2
        - Fixed EPM packaging files (STR #4199)
        - OpenBSD build fix (STR #4195, STR #4196, STR #4197)
        - The scheduler could crash when using Avahi (STR #4183, STR #4192,
-         STR #4200)
+         STR #4200, STR #4213)
        - The IPP backend could get stuck in an endless loop on certain network
          errors (STR #4194)
        - 32-bit builds failed on Debian (STR #4133)
index 637f4357a7318e4d6d9736ceabcc24f5017c8b87..3f46641592cbc15e894f40c430f043faa4f25ec8 100644 (file)
@@ -1,8 +1,13 @@
-CHANGES.txt - 1.7b1 - 2012-09-30
+CHANGES.txt - 1.7b1 - 2012-11-15
 --------------------------------
 
 CHANGES IN CUPS V1.7b1
 
+       - 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.
+       - CUPS now supports compressing and decompressing streamed data
+         (STR #4168)
        - CUPS now supports higher-level PIN printing, external accounting
          systems, and "print here" printing environments (STR #4169)
        - IRIX is no longer a supported operating system (STR #4092)
index 7f8a17e1be25ae7d5d129cf1a17423f47ab2a7c0..180586e0548ba79283e58b2a729a2b0f672031aa 100644 (file)
@@ -19,7 +19,6 @@
  *   main()                - Send a file to the printer or server.
  *   cancel_job()          - Cancel a print job.
  *   check_printer_state()  - Check the printer state.
- *   compress_files()      - Compress print files.
  *   monitor_printer()     - Monitor the printer state.
  *   new_request()         - Create a new print creation or validation
  *                           request.
@@ -57,6 +56,18 @@ extern void  xpc_connection_set_target_uid(xpc_connection_t connection,
 #endif /* HAVE_GSSAPI && HAVE_XPC */
 
 
+/*
+ * Bits for job-state-reasons we care about...
+ */
+
+#define _CUPS_JSR_ACCOUNT_AUTHORIZATION_FAILED 0x01
+#define _CUPS_JSR_ACCOUNT_CLOSED               0x02
+#define _CUPS_JSR_ACCOUNT_INFO_NEEDED          0x04
+#define _CUPS_JSR_ACCOUNT_LIMIT_REACHED                0x08
+#define _CUPS_JSR_JOB_PASSWORD_WAIT            0x10
+#define _CUPS_JSR_JOB_RELEASE_WAIT             0x20
+
+
 /*
  * Types...
  */
@@ -70,6 +81,7 @@ typedef struct _cups_monitor_s                /**** Monitoring data ****/
   int                  port,           /* Port number */
                        version,        /* IPP version */
                        job_id,         /* Job ID for submitted job */
+                       job_reasons,    /* Job state reasons bits */
                        get_job_attrs;  /* Support Get-Job-Attributes? */
   const char           *job_name;      /* Job name for submitted job */
   http_encryption_t    encryption;     /* Use encryption? */
@@ -107,6 +119,9 @@ static int          password_tries = 0;
                                        /* Password tries */
 static const char * const pattrs[] =   /* Printer attributes we want */
 {
+#ifdef HAVE_LIBZ
+  "compression-supported",
+#endif /* HAVE_LIBZ */
   "copies-supported",
   "cups-version",
   "document-format-supported",
@@ -158,17 +173,16 @@ static void               cancel_job(http_t *http, const char *uri, int id,
 static ipp_pstate_t    check_printer_state(http_t *http, const char *uri,
                                            const char *resource,
                                            const char *user, int version);
-#ifdef HAVE_LIBZ
-static void            compress_files(int num_files, char **files);
-#endif /* HAVE_LIBZ */
 static void            *monitor_printer(_cups_monitor_t *monitor);
 static ipp_t           *new_request(ipp_op_t op, int version, const char *uri,
                                     const char *user, const char *title,
                                     int num_options, cups_option_t *options,
                                     const char *compression, int copies,
                                     const char *format, _ppd_cache_t *pc,
+                                    ppd_file_t *ppd,
                                     ipp_attribute_t *media_col_sup,
-                                    ipp_attribute_t *doc_handling_sup);
+                                    ipp_attribute_t *doc_handling_sup,
+                                    int print_color_mode);
 static const char      *password_cb(const char *prompt, http_t *http,
                                     const char *method, const char *resource,
                                     void *user_data);
@@ -235,12 +249,16 @@ main(int  argc,                           /* I - Number of command-line args */
                prev_delay;             /* Previous delay */
   const char   *compression;           /* Compression mode */
   int          waitjob,                /* Wait for job complete? */
+               waitjob_tries = 0,      /* Number of times we've waited */
                waitprinter;            /* Wait for printer ready? */
   _cups_monitor_t monitor;             /* Monitoring data */
   ipp_attribute_t *job_id_attr;                /* job-id attribute */
   int          job_id;                 /* job-id value */
   ipp_attribute_t *job_sheets;         /* job-media-sheets-completed */
   ipp_attribute_t *job_state;          /* job-state */
+#ifdef HAVE_LIBZ
+  ipp_attribute_t *compression_sup;    /* compression-supported */
+#endif /* HAVE_LIBZ */
   ipp_attribute_t *copies_sup;         /* copies-supported */
   ipp_attribute_t *cups_version;       /* cups-version */
   ipp_attribute_t *format_sup;         /* document-format-supported */
@@ -252,7 +270,8 @@ main(int  argc,                             /* I - Number of command-line args */
   int          create_job = 0,         /* Does printer support Create-Job? */
                get_job_attrs = 0,      /* Does printer support Get-Job-Attributes? */
                send_document = 0,      /* Does printer support Send-Document? */
-               validate_job = 0;       /* Does printer support Validate-Job? */
+               validate_job = 0,       /* Does printer support Validate-Job? */
+               print_color_mode = 0;   /* Does printer support print-color-mode? */
   int          copies,                 /* Number of copies for job */
                copies_remaining;       /* Number of copies remaining */
   const char   *content_type,          /* CONTENT_TYPE environment variable */
@@ -265,8 +284,8 @@ main(int  argc,                             /* I - Number of command-line args */
   struct sigaction action;             /* Actions for POSIX signals */
 #endif /* HAVE_SIGACTION && !HAVE_SIGSET */
   int          version;                /* IPP version */
-  ppd_file_t   *ppd;                   /* PPD file */
-  _ppd_cache_t *pc;                    /* PPD cache and mapping data */
+  ppd_file_t   *ppd = NULL;            /* PPD file */
+  _ppd_cache_t *pc = NULL;             /* PPD cache and mapping data */
   fd_set       input;                  /* Input set for select() */
 
 
@@ -551,6 +570,13 @@ main(int  argc,                            /* I - Number of command-line args */
         if (!_cups_strcasecmp(value, "true") || !_cups_strcasecmp(value, "yes") ||
            !_cups_strcasecmp(value, "on") || !_cups_strcasecmp(value, "gzip"))
          compression = "gzip";
+        else if (!_cups_strcasecmp(value, "deflate"))
+         compression = "deflate";
+        else if (!_cups_strcasecmp(value, "false") ||
+                 !_cups_strcasecmp(value, "no") ||
+                !_cups_strcasecmp(value, "off") ||
+                !_cups_strcasecmp(value, "none"))
+         compression = "none";
       }
 #endif /* HAVE_LIBZ */
       else if (!_cups_strcasecmp(name, "contimeout"))
@@ -601,11 +627,6 @@ main(int  argc,                            /* I - Number of command-line args */
     files        = argv + 6;
     send_options = 1;
 
-#ifdef HAVE_LIBZ
-    if (compression)
-      compress_files(num_files, files);
-#endif /* HAVE_LIBZ */
-
     fprintf(stderr, "DEBUG: %d files to send in job...\n", num_files);
   }
 
@@ -670,7 +691,8 @@ main(int  argc,                             /* I - Number of command-line args */
       return (CUPS_BACKEND_OK);
   }
 
-  http = _httpCreate(hostname, port, addrlist, cupsEncryption(), AF_UNSPEC);
+  http = _httpCreate(hostname, port, addrlist, AF_UNSPEC, cupsEncryption(), 1,
+                     _HTTP_MODE_CLIENT);
   httpSetTimeout(http, 30.0, timeout_cb, NULL);
 
  /*
@@ -808,7 +830,7 @@ main(int  argc,                             /* I - Number of command-line args */
 
   fprintf(stderr, "DEBUG: Connected to %s:%d...\n",
          httpAddrString(http->hostaddr, addrname, sizeof(addrname)),
-         _httpAddrPort(http->hostaddr));
+         httpAddrPort(http->hostaddr));
 
  /*
   * Build a URI for the printer and fill the standard IPP attributes for
@@ -824,6 +846,9 @@ main(int  argc,                             /* I - Number of command-line args */
   * copies...
   */
 
+#ifdef HAVE_LIBZ
+  compression_sup  = NULL;
+#endif /* HAVE_LIBZ */
   copies_sup       = NULL;
   cups_version     = NULL;
   format_sup       = NULL;
@@ -909,16 +934,18 @@ main(int  argc,                           /* I - Number of command-line args */
 
         if (version >= 20)
        {
-         _cupsLangPrintFilter(stderr, "INFO",
-                              _("The printer does not support IPP/%d.%d, trying "
-                                "IPP/%s."), version / 10, version % 10, "1.1");
+         _cupsLangPrintFilter(stderr, "INFO", _("Preparing to print."));
+         fprintf(stderr,
+                 "DEBUG: The printer does not support IPP/%d.%d, trying "
+                 "IPP/1.1.\n", version / 10, version % 10);
          version = 11;
        }
        else
        {
-         _cupsLangPrintFilter(stderr, "INFO",
-                              _("The printer does not support IPP/%d.%d, trying "
-                                "IPP/%s."), version / 10, version % 10, "1.0");
+         _cupsLangPrintFilter(stderr, "INFO", _("Preparing to print."));
+         fprintf(stderr,
+                 "DEBUG: The printer does not support IPP/%d.%d, trying "
+                 "IPP/1.0.\n", version / 10, version % 10);
          version = 10;
         }
 
@@ -927,8 +954,8 @@ main(int  argc,                             /* I - Number of command-line args */
       else if (ipp_status == IPP_NOT_FOUND)
       {
         _cupsLangPrintFilter(stderr, "ERROR",
-                            _("The printer URI is incorrect or no longer "
-                              "exists."));
+                            _("The printer configuration is incorrect or the "
+                              "printer no longer exists."));
 
        ippDelete(supported);
 
@@ -982,9 +1009,15 @@ main(int  argc,                           /* I - Number of command-line args */
 
       if ((printer_state = ippFindAttribute(supported,
                                            "printer-state-reasons",
-                                           IPP_TAG_KEYWORD)) != NULL && !busy)
+                                           IPP_TAG_KEYWORD)) == NULL)
+      {
+        update_reasons(NULL, "+cups-ipp-conformance-failure-report,"
+                            "cups-ipp-missing-printer-state-reasons");
+      }
+      else if (!busy)
       {
        for (i = 0; i < printer_state->num_values; i ++)
+       {
          if (!strcmp(printer_state->values[0].string.text,
                      "spool-area-full") ||
              !strncmp(printer_state->values[0].string.text, "spool-area-full-",
@@ -993,10 +1026,8 @@ main(int  argc,                           /* I - Number of command-line args */
            busy = 1;
            break;
          }
+       }
       }
-      else
-        update_reasons(NULL, "+cups-ipp-conformance-failure-report,"
-                            "cups-ipp-missing-printer-state-reasons");
 
       if (busy)
       {
@@ -1018,6 +1049,35 @@ main(int  argc,                          /* I - Number of command-line args */
     * Check for supported attributes...
     */
 
+#ifdef HAVE_LIBZ
+    if ((compression_sup = ippFindAttribute(supported, "compression-supported",
+                                            IPP_TAG_KEYWORD)) != NULL)
+    {
+     /*
+      * Check whether the requested compression is supported and/or default to
+      * compression if supported...
+      */
+
+      if (compression && !ippContainsString(compression_sup, compression))
+      {
+        fprintf(stderr, "DEBUG: Printer does not support the requested "
+                        "compression value \"%s\".\n", compression);
+        compression = NULL;
+      }
+      else if (!compression)
+      {
+        if (ippContainsString(compression_sup, "deflate"))
+          compression = "deflate";
+        else if (ippContainsString(compression_sup, "gzip"))
+          compression = "gzip";
+
+        if (compression)
+          fprintf(stderr, "DEBUG: Automatically using \"%s\" compression.\n",
+                  compression);
+      }
+    }
+#endif /* HAVE_LIBZ */
+
     if ((copies_sup = ippFindAttribute(supported, "copies-supported",
                                       IPP_TAG_RANGE)) != NULL)
     {
@@ -1056,9 +1116,19 @@ main(int  argc,                          /* I - Number of command-line args */
                media_col_sup->values[i].string.text);
     }
 
+    print_color_mode = ippFindAttribute(supported,
+                                       "print-color-mode-supported",
+                                       IPP_TAG_KEYWORD) != NULL;
+
     if ((operations_sup = ippFindAttribute(supported, "operations-supported",
                                           IPP_TAG_ENUM)) != NULL)
     {
+      fprintf(stderr, "DEBUG: operations-supported (%d values)\n",
+              operations_sup->num_values);
+      for (i = 0; i < operations_sup->num_values; i ++)
+        fprintf(stderr, "DEBUG: [%d] = %s\n", i,
+                ippOpString(operations_sup->values[i].integer));
+
       for (i = 0; i < operations_sup->num_values; i ++)
         if (operations_sup->values[i].integer == IPP_PRINT_JOB)
          break;
@@ -1190,7 +1260,6 @@ main(int  argc,                           /* I - Number of command-line args */
   */
 
   options = NULL;
-  pc      = NULL;
 
   if (send_options)
   {
@@ -1205,7 +1274,8 @@ main(int  argc,                           /* I - Number of command-line args */
       ppd = ppdOpenFile(getenv("PPD"));
       pc  = _ppdCacheCreateWithPPD(ppd);
 
-      ppdClose(ppd);
+      ppdMarkDefaults(ppd);
+      cupsMarkOptions(ppd, num_options, options);
     }
   }
   else
@@ -1328,8 +1398,8 @@ main(int  argc,                           /* I - Number of command-line args */
   {
     request = new_request(IPP_VALIDATE_JOB, version, uri, argv[2],
                           monitor.job_name, num_options, options, compression,
-                         copies_sup ? copies : 1, document_format, pc,
-                         media_col_sup, doc_handling_sup);
+                         copies_sup ? copies : 1, document_format, pc, ppd,
+                         media_col_sup, doc_handling_sup, print_color_mode);
 
     ippDelete(cupsDoRequest(http, request, resource));
 
@@ -1341,15 +1411,20 @@ main(int  argc,                         /* I - Number of command-line args */
     if (job_canceled)
       break;
 
-    if (ipp_status == IPP_SERVICE_UNAVAILABLE || ipp_status == IPP_PRINTER_BUSY)
+    if (ipp_status == IPP_STATUS_ERROR_SERVICE_UNAVAILABLE ||
+        ipp_status == IPP_STATUS_ERROR_BUSY)
     {
       _cupsLangPrintFilter(stderr, "INFO", _("The printer is in use."));
       sleep(10);
     }
-    else if (ipp_status == IPP_DOCUMENT_FORMAT)
+    else if (ipp_status == IPP_STATUS_ERROR_DOCUMENT_FORMAT_NOT_SUPPORTED ||
+             ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_INFO_NEEDED ||
+             ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_CLOSED ||
+             ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_LIMIT_REACHED ||
+             ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED)
       goto cleanup;
-    else if (ipp_status == IPP_FORBIDDEN ||
-            ipp_status == IPP_AUTHENTICATION_CANCELED)
+    else if (ipp_status == IPP_STATUS_ERROR_FORBIDDEN ||
+            ipp_status == IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED)
     {
       const char *www_auth = httpGetField(http, HTTP_FIELD_WWW_AUTHENTICATE);
                                        /* WWW-Authenticate field value */
@@ -1361,7 +1436,7 @@ main(int  argc,                           /* I - Number of command-line args */
 
       goto cleanup;
     }
-    else if (ipp_status == IPP_OPERATION_NOT_SUPPORTED)
+    else if (ipp_status == IPP_STATUS_ERROR_OPERATION_NOT_SUPPORTED)
     {
      /*
       * This is all too common...
@@ -1401,7 +1476,8 @@ main(int  argc,                           /* I - Number of command-line args */
                                                           IPP_PRINT_JOB,
                          version, uri, argv[2], monitor.job_name, num_options,
                          options, compression, copies_sup ? copies : 1,
-                         document_format, pc, media_col_sup, doc_handling_sup);
+                         document_format, pc, ppd, media_col_sup,
+                         doc_handling_sup, print_color_mode);
 
    /*
     * Do the request...
@@ -1490,9 +1566,9 @@ main(int  argc,                           /* I - Number of command-line args */
       if (job_canceled)
         break;
 
-      if (ipp_status == IPP_SERVICE_UNAVAILABLE ||
-          ipp_status == IPP_NOT_POSSIBLE ||
-         ipp_status == IPP_PRINTER_BUSY)
+      if (ipp_status == IPP_STATUS_ERROR_SERVICE_UNAVAILABLE ||
+          ipp_status == IPP_STATUS_ERROR_NOT_POSSIBLE ||
+         ipp_status == IPP_STATUS_ERROR_BUSY)
       {
        _cupsLangPrintFilter(stderr, "INFO", _("The printer is in use."));
        sleep(10);
@@ -1507,8 +1583,12 @@ main(int  argc,                          /* I - Number of command-line args */
          goto cleanup;
        }
       }
-      else if (ipp_status == IPP_ERROR_JOB_CANCELED ||
-               ipp_status == IPP_NOT_AUTHORIZED)
+      else if (ipp_status == IPP_STATUS_ERROR_JOB_CANCELED ||
+               ipp_status == IPP_STATUS_ERROR_NOT_AUTHORIZED ||
+              ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_INFO_NEEDED ||
+              ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_CLOSED ||
+              ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_LIMIT_REACHED ||
+              ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED)
         goto cleanup;
       else
       {
@@ -1517,10 +1597,10 @@ main(int  argc,                         /* I - Number of command-line args */
        */
 
         _cupsLangPrintFilter(stderr, "ERROR",
-                            _("Print file was not accepted."));
+                            _("Print job was not accepted."));
 
-        if (ipp_status == IPP_FORBIDDEN ||
-            ipp_status == IPP_AUTHENTICATION_CANCELED)
+        if (ipp_status == IPP_STATUS_ERROR_FORBIDDEN ||
+            ipp_status == IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED)
        {
          const char *www_auth = httpGetField(http, HTTP_FIELD_WWW_AUTHENTICATE);
                                        /* WWW-Authenticate field value */
@@ -1555,8 +1635,7 @@ main(int  argc,                           /* I - Number of command-line args */
     else if ((job_id_attr = ippFindAttribute(response, "job-id",
                                              IPP_TAG_INTEGER)) == NULL)
     {
-      _cupsLangPrintFilter(stderr, "INFO",
-                          _("Print file accepted - job ID unknown."));
+      fputs("DEBUG: Print job accepted - job ID unknown.\n", stderr);
       update_reasons(NULL, "+cups-ipp-conformance-failure-report,"
                           "cups-ipp-missing-job-id");
       job_id = 0;
@@ -1565,11 +1644,9 @@ main(int  argc,                          /* I - Number of command-line args */
     {
       password_tries = 0;
       monitor.job_id = job_id = job_id_attr->values[0].integer;
-      _cupsLangPrintFilter(stderr, "INFO",
-                           _("Print file accepted - job ID %d."), job_id);
+      fprintf(stderr, "DEBUG: Print job accepted - job ID %d.\n", job_id);
     }
 
-    fprintf(stderr, "DEBUG: job-id=%d\n", job_id);
     ippDelete(response);
 
     if (job_canceled)
@@ -1618,6 +1695,9 @@ main(int  argc,                           /* I - Number of command-line args */
        http_status = cupsSendRequest(http, request, resource, 0);
        if (http_status == HTTP_CONTINUE && request->state == IPP_DATA)
        {
+         if (compression && strcmp(compression, "none"))
+           httpSetField(http, HTTP_FIELD_CONTENT_ENCODING, compression);
+
          if (num_files == 0)
          {
            fd          = 0;
@@ -1689,10 +1769,28 @@ main(int  argc,                         /* I - Number of command-line args */
     else if (ipp_status == IPP_SERVICE_UNAVAILABLE ||
              ipp_status == IPP_NOT_POSSIBLE ||
             ipp_status == IPP_PRINTER_BUSY)
+    {
+      if (argc == 6)
+      {
+       /*
+        * Need to reprocess the entire job; if we have a job ID, cancel the
+        * job first...
+        */
+
+       if (job_id > 0)
+         cancel_job(http, uri, job_id, resource, argv[2], version);
+
+        goto cleanup;
+      }
       continue;
+    }
     else if (ipp_status == IPP_REQUEST_VALUE ||
              ipp_status == IPP_ERROR_JOB_CANCELED ||
              ipp_status == IPP_NOT_AUTHORIZED ||
+             ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_INFO_NEEDED ||
+             ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_CLOSED ||
+             ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_LIMIT_REACHED ||
+             ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED ||
              ipp_status == IPP_INTERNAL_ERROR)
     {
      /*
@@ -1798,6 +1896,17 @@ main(int  argc,                          /* I - Number of command-line args */
           ipp_status = IPP_OK;
           break;
        }
+       else if (ipp_status == IPP_INTERNAL_ERROR)
+       {
+         waitjob_tries ++;
+
+         if (waitjob_tries > 4)
+         {
+           ippDelete(response);
+           ipp_status = IPP_OK;
+           break;
+         }
+       }
       }
 
       if (response)
@@ -1905,6 +2014,7 @@ main(int  argc,                           /* I - Number of command-line args */
 
   cupsFreeOptions(num_options, options);
   _ppdCacheDestroy(pc);
+  ppdClose(ppd);
 
   httpClose(http);
 
@@ -1917,14 +2027,6 @@ main(int  argc,                          /* I - Number of command-line args */
   if (tmpfilename[0])
     unlink(tmpfilename);
 
-#ifdef HAVE_LIBZ
-  if (compression)
-  {
-    for (i = 0; i < num_files; i ++)
-      unlink(files[i]);
-  }
-#endif /* HAVE_LIBZ */
-
  /*
   * Return the queue status...
   */
@@ -1934,8 +2036,21 @@ main(int  argc,                          /* I - Number of command-line args */
       ipp_status <= IPP_OK_CONFLICT)
     fprintf(stderr, "ATTR: auth-info-required=%s\n", auth_info_required);
 
+  if (ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_INFO_NEEDED)
+    fputs("JOBSTATE: account-info-needed\n", stderr);
+  else if (ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_CLOSED)
+    fputs("JOBSTATE: account-closed\n", stderr);
+  else if (ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_LIMIT_REACHED)
+    fputs("JOBSTATE: account-limit-reached\n", stderr);
+  else if (ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED)
+    fputs("JOBSTATE: account-authorization-failed\n", stderr);
+
   if (ipp_status == IPP_NOT_AUTHORIZED || ipp_status == IPP_FORBIDDEN ||
-      ipp_status == IPP_AUTHENTICATION_CANCELED)
+      ipp_status == IPP_AUTHENTICATION_CANCELED ||
+      ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_INFO_NEEDED ||
+      ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_CLOSED ||
+      ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_LIMIT_REACHED ||
+      ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED)
     return (CUPS_BACKEND_AUTH_REQUIRED);
   else if (ipp_status == IPP_INTERNAL_ERROR)
     return (CUPS_BACKEND_STOP);
@@ -2064,77 +2179,6 @@ check_printer_state(
 }
 
 
-#ifdef HAVE_LIBZ
-/*
- * 'compress_files()' - Compress print files.
- */
-
-static void
-compress_files(int  num_files,         /* I - Number of files */
-               char **files)           /* I - Files */
-{
-  int          i,                      /* Looping var */
-               fd;                     /* Temporary file descriptor */
-  ssize_t      bytes;                  /* Bytes read/written */
-  size_t       total;                  /* Total bytes read */
-  cups_file_t  *in,                    /* Input file */
-               *out;                   /* Output file */
-  struct stat  outinfo;                /* Output file information */
-  char         filename[1024],         /* Temporary filename */
-               buffer[32768];          /* Copy buffer */
-
-
-  fprintf(stderr, "DEBUG: Compressing %d job files...\n", num_files);
-  for (i = 0; i < num_files; i ++)
-  {
-    if ((fd = cupsTempFd(filename, sizeof(filename))) < 0)
-    {
-      _cupsLangPrintError("ERROR", _("Unable to create compressed print file"));
-      exit(CUPS_BACKEND_FAILED);
-    }
-
-    if ((out = cupsFileOpenFd(fd, "w9")) == NULL)
-    {
-      _cupsLangPrintError("ERROR", _("Unable to open compressed print file"));
-      exit(CUPS_BACKEND_FAILED);
-    }
-
-    if ((in = cupsFileOpen(files[i], "r")) == NULL)
-    {
-      _cupsLangPrintError("ERROR", _("Unable to open print file"));
-      cupsFileClose(out);
-      exit(CUPS_BACKEND_FAILED);
-    }
-
-    total = 0;
-    while ((bytes = cupsFileRead(in, buffer, sizeof(buffer))) > 0)
-      if (cupsFileWrite(out, buffer, bytes) < bytes)
-      {
-       _cupsLangPrintError("ERROR",
-                           _("Unable to generate compressed print file"));
-        cupsFileClose(in);
-        cupsFileClose(out);
-       exit(CUPS_BACKEND_FAILED);
-      }
-      else
-        total += bytes;
-
-    cupsFileClose(out);
-    cupsFileClose(in);
-
-    files[i] = strdup(filename);
-
-    if (!stat(filename, &outinfo))
-      fprintf(stderr,
-              "DEBUG: File %d compressed to %.1f%% of original size, "
-             CUPS_LLFMT " bytes...\n",
-              i + 1, 100.0 * outinfo.st_size / total,
-             CUPS_LLCAST outinfo.st_size);
-  }
-}
-#endif /* HAVE_LIBZ */
-
-
 /*
  * 'monitor_printer()' - Monitor the printer state.
  */
@@ -2160,8 +2204,8 @@ monitor_printer(
   * Make a copy of the printer connection...
   */
 
-  http = _httpCreate(monitor->hostname, monitor->port, NULL, monitor->encryption,
-                     AF_UNSPEC);
+  http = _httpCreate(monitor->hostname, monitor->port, NULL, AF_UNSPEC,
+                     monitor->encryption, 1, _HTTP_MODE_CLIENT);
   httpSetTimeout(http, 30.0, timeout_cb, NULL);
   if (username[0])
     cupsSetUser(username);
@@ -2173,6 +2217,8 @@ monitor_printer(
 
   delay = _cupsNextDelay(0, &prev_delay);
 
+  monitor->job_reasons = 0;
+
   while (monitor->job_state < IPP_JOB_CANCELED && !job_canceled)
   {
    /*
@@ -2282,6 +2328,50 @@ monitor_printer(
         }
       }
 
+      if ((attr = ippFindAttribute(response, "job-state-reasons",
+                                   IPP_TAG_KEYWORD)) != NULL)
+      {
+        int    i, new_reasons = 0;     /* Looping var, new reasons */
+
+        for (i = 0; i < attr->num_values; i ++)
+        {
+          if (!strcmp(attr->values[i].string.text,
+                      "account-authorization-failed"))
+            new_reasons |= _CUPS_JSR_ACCOUNT_AUTHORIZATION_FAILED;
+          else if (!strcmp(attr->values[i].string.text, "account-closed"))
+            new_reasons |= _CUPS_JSR_ACCOUNT_CLOSED;
+          else if (!strcmp(attr->values[i].string.text, "account-info-needed"))
+            new_reasons |= _CUPS_JSR_ACCOUNT_INFO_NEEDED;
+          else if (!strcmp(attr->values[i].string.text,
+                           "account-limit-reached"))
+            new_reasons |= _CUPS_JSR_ACCOUNT_LIMIT_REACHED;
+          else if (!strcmp(attr->values[i].string.text, "job-password-wait"))
+            new_reasons |= _CUPS_JSR_JOB_PASSWORD_WAIT;
+          else if (!strcmp(attr->values[i].string.text, "job-release-wait"))
+            new_reasons |= _CUPS_JSR_JOB_RELEASE_WAIT;
+        }
+
+        if (new_reasons != monitor->job_reasons)
+        {
+         if (new_reasons & _CUPS_JSR_ACCOUNT_AUTHORIZATION_FAILED)
+           fputs("JOBSTATE: account-authorization-failed\n", stderr);
+         else if (new_reasons & _CUPS_JSR_ACCOUNT_CLOSED)
+           fputs("JOBSTATE: account-closed\n", stderr);
+         else if (new_reasons & _CUPS_JSR_ACCOUNT_INFO_NEEDED)
+           fputs("JOBSTATE: account-info-needed\n", stderr);
+         else if (new_reasons & _CUPS_JSR_ACCOUNT_LIMIT_REACHED)
+           fputs("JOBSTATE: account-limit-reached\n", stderr);
+         else if (new_reasons & _CUPS_JSR_JOB_PASSWORD_WAIT)
+           fputs("JOBSTATE: job-password-wait\n", stderr);
+         else if (new_reasons & _CUPS_JSR_JOB_RELEASE_WAIT)
+           fputs("JOBSTATE: job-release-wait\n", stderr);
+         else
+           fputs("JOBSTATE: job-printing\n", stderr);
+
+         monitor->job_reasons = new_reasons;
+        }
+      }
+
       ippDelete(response);
 
       fprintf(stderr, "DEBUG: (monitor) job-state=%s\n",
@@ -2344,8 +2434,10 @@ new_request(
     int             copies,            /* I - copies value or 0 */
     const char      *format,           /* I - document-format value or NULL */
     _ppd_cache_t    *pc,               /* I - PPD cache and mapping data */
+    ppd_file_t      *ppd,              /* I - PPD file data */
     ipp_attribute_t *media_col_sup,    /* I - media-col-supported values */
-    ipp_attribute_t *doc_handling_sup)  /* I - multiple-document-handling-supported values */
+    ipp_attribute_t *doc_handling_sup,  /* I - multiple-document-handling-supported values */
+    int             print_color_mode)  /* I - Printer supports print-color-mode */
 {
   int          i;                      /* Looping var */
   ipp_t                *request;               /* Request data */
@@ -2357,6 +2449,10 @@ new_request(
                *media_type,            /* media-type value */
                *collate_str,           /* multiple-document-handling value */
                *mandatory;             /* Mandatory attributes */
+  ipp_tag_t    group;                  /* Current group */
+  ipp_attribute_t *attr;               /* Current attribute */
+  const char   *color_attr_name;       /* Supported color attribute */
+  char         buffer[1024];           /* Value buffer */
 
 
  /*
@@ -2402,7 +2498,7 @@ new_request(
   }
 
 #ifdef HAVE_LIBZ
-  if (compression && op != IPP_CREATE_JOB)
+  if (compression && op != IPP_OP_CREATE_JOB && op != IPP_OP_VALIDATE_JOB)
   {
     ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
                 "compression", NULL, compression);
@@ -2420,19 +2516,27 @@ new_request(
     {
       int      num_finishings = 0,     /* Number of finishing values */
                finishings[10];         /* Finishing enum values */
+      ppd_choice_t *choice;            /* Marked choice */
 
      /*
       * Send standard IPP attributes...
       */
 
+      fputs("DEBUG: Adding standard IPP operation/job attributes.\n", stderr);
+
       if (pc->password &&
           (keyword = cupsGetOption("job-password", num_options,
                                    options)) != NULL)
       {
         ippAddOctetString(request, IPP_TAG_OPERATION, "job-password",
                           keyword, strlen(keyword));
+
+        if ((keyword = cupsGetOption("job-password-encryption", num_options,
+                                    options)) == NULL)
+         keyword = "none";
+
         ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
-                     "job-password-encryption", NULL, "none");
+                     "job-password-encryption", NULL, keyword);
       }
 
       if (pc->account_id &&
@@ -2457,6 +2561,7 @@ new_request(
             strcmp(mandatory, "job-account-id") &&
             strcmp(mandatory, "job-accounting-user-id") &&
             strcmp(mandatory, "job-password") &&
+            strcmp(mandatory, "job-password-encryption") &&
             strcmp(mandatory, "media") &&
             strncmp(mandatory, "media-col", 9) &&
             strcmp(mandatory, "multiple-document-handling") &&
@@ -2562,42 +2667,44 @@ new_request(
 
       if ((keyword = cupsGetOption("output-bin", num_options,
                                   options)) == NULL)
-       keyword = _ppdCacheGetBin(pc, cupsGetOption("OutputBin", num_options,
-                                                   options));
+      {
+        if ((choice = ppdFindMarkedChoice(ppd, "OutputBin")) != NULL)
+         keyword = _ppdCacheGetBin(pc, choice->choice);
+      }
 
       if (keyword)
        ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "output-bin",
                     NULL, keyword);
 
+      color_attr_name = print_color_mode ? "print-color-mode" : "output-mode";
+
       if ((keyword = cupsGetOption("print-color-mode", num_options,
                                   options)) != NULL)
-       ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "print-color-mode",
+       ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, color_attr_name,
                     NULL, keyword);
-      else if ((keyword = cupsGetOption("ColorModel", num_options,
-                                       options)) != NULL)
+      else if ((choice = ppdFindMarkedChoice(ppd, "ColorModel")) != NULL)
       {
-       if (!_cups_strcasecmp(keyword, "Gray"))
+       if (!_cups_strcasecmp(choice->choice, "Gray"))
          ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD,
-                      "print-color-mode", NULL, "monochrome");
+                      color_attr_name, NULL, "monochrome");
        else
          ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD,
-                      "print-color-mode", NULL, "color");
+                      color_attr_name, NULL, "color");
       }
 
       if ((keyword = cupsGetOption("print-quality", num_options,
                                   options)) != NULL)
        ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_ENUM, "print-quality",
                      atoi(keyword));
-      else if ((keyword = cupsGetOption("cupsPrintQuality", num_options,
-                                       options)) != NULL)
+      else if ((choice = ppdFindMarkedChoice(ppd, "cupsPrintQuality")) != NULL)
       {
-       if (!_cups_strcasecmp(keyword, "draft"))
+       if (!_cups_strcasecmp(choice->choice, "draft"))
          ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_ENUM, "print-quality",
                        IPP_QUALITY_DRAFT);
-       else if (!_cups_strcasecmp(keyword, "normal"))
+       else if (!_cups_strcasecmp(choice->choice, "normal"))
          ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_ENUM, "print-quality",
                        IPP_QUALITY_NORMAL);
-       else if (!_cups_strcasecmp(keyword, "high"))
+       else if (!_cups_strcasecmp(choice->choice, "high"))
          ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_ENUM, "print-quality",
                        IPP_QUALITY_HIGH);
       }
@@ -2606,16 +2713,15 @@ new_request(
        ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "sides",
                     NULL, keyword);
       else if (pc->sides_option &&
-               (keyword = cupsGetOption(pc->sides_option, num_options,
-                                       options)) != NULL)
+               (choice = ppdFindMarkedChoice(ppd, pc->sides_option)) != NULL)
       {
-       if (!_cups_strcasecmp(keyword, pc->sides_1sided))
+       if (!_cups_strcasecmp(choice->choice, pc->sides_1sided))
          ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "sides",
                       NULL, "one-sided");
-       else if (!_cups_strcasecmp(keyword, pc->sides_2sided_long))
+       else if (!_cups_strcasecmp(choice->choice, pc->sides_2sided_long))
          ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "sides",
                       NULL, "two-sided-long-edge");
-       if (!_cups_strcasecmp(keyword, pc->sides_2sided_short))
+       if (!_cups_strcasecmp(choice->choice, pc->sides_2sided_short))
          ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "sides",
                       NULL, "two-sided-short-edge");
       }
@@ -2721,6 +2827,8 @@ new_request(
       * When talking to another CUPS server, send all options...
       */
 
+      fputs("DEBUG: Adding all operation/job attributes.\n", stderr);
+      cupsEncodeOptions2(request, num_options, options, IPP_TAG_OPERATION);
       cupsEncodeOptions2(request, num_options, options, IPP_TAG_JOB);
     }
 
@@ -2728,6 +2836,34 @@ new_request(
       ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "copies", copies);
   }
 
+  fprintf(stderr, "DEBUG: IPP/%d.%d %s #%d\n", version / 10, version % 10,
+          ippOpString(ippGetOperation(request)), ippGetRequestId(request));
+  for (group = IPP_TAG_ZERO, attr = ippFirstAttribute(request);
+       attr;
+       attr = ippNextAttribute(request))
+  {
+    const char *name = ippGetName(attr);
+
+    if (!name)
+    {
+      group = IPP_TAG_ZERO;
+      continue;
+    }
+
+    if (group != ippGetGroupTag(attr))
+    {
+      group = ippGetGroupTag(attr);
+      fprintf(stderr, "DEBUG: ---- %s ----\n", ippTagString(group));
+    }
+
+    ippAttributeString(attr, buffer, sizeof(buffer));
+    fprintf(stderr, "DEBUG: %s %s%s %s\n", name,
+            ippGetCount(attr) > 1 ? "1setOf " : "",
+            ippTagString(ippGetValueTag(attr)), buffer);
+  }
+
+  fprintf(stderr, "DEBUG: ---- %s ----\n", ippTagString(IPP_TAG_END));
+
   return (request);
 }
 
index 9d9e01b2b657690f9a6cce66d173d516208bc7d7..c4f73155e37bfb7a7bf2c8388bdd5ab0e140be50 100644 (file)
@@ -707,7 +707,7 @@ lpd_queue(const char      *hostname,        /* I - Host to connect to */
     */
 
     fprintf(stderr, "DEBUG: Connecting to %s:%d for printer %s\n", hostname,
-            _httpAddrPort(&(addrlist->addr)), printer);
+            httpAddrPort(&(addrlist->addr)), printer);
     _cupsLangPrintFilter(stderr, "INFO", _("Connecting to printer."));
 
     for (lport = reserve == RESERVE_RFC1179 ? 732 : 1024, addr = addrlist,
@@ -889,7 +889,7 @@ lpd_queue(const char      *hostname,        /* I - Host to connect to */
 
     fprintf(stderr, "DEBUG: Connected to %s:%d (local port %d)...\n",
            httpAddrString(&(addr->addr), addrname, sizeof(addrname)),
-           _httpAddrPort(&(addr->addr)), lport);
+           httpAddrPort(&(addr->addr)), lport);
 
    /*
     * See if the printer supports SNMP...
index 77255a394f871310b85d03bea8c1385f0bcaa284..2da3d07f2a8626e1c538ffbe28ad56e3be451e8c 100644 (file)
@@ -73,10 +73,6 @@ main(int  argc,                              /* I - Number of command-line arguments (6 or 7) */
   int          print_fd;               /* Print file */
   int          copies;                 /* Number of copies to print */
   time_t       start_time;             /* Time of first connect */
-#ifdef __APPLE__
-  time_t       current_time,           /* Current time */
-               wait_time;              /* Time to wait before shutting down socket */
-#endif /* __APPLE__ */
   int          contimeout;             /* Connection timeout */
   int          waiteof;                /* Wait for end-of-file? */
   int          port;                   /* Port number */
@@ -410,7 +406,7 @@ main(int  argc,                             /* I - Number of command-line arguments (6 or 7) */
 
   fprintf(stderr, "DEBUG: Connected to %s:%d...\n",
          httpAddrString(&(addr->addr), addrname, sizeof(addrname)),
-         _httpAddrPort(&(addr->addr)));
+         httpAddrPort(&(addr->addr)));
 
  /*
   * Print everything...
@@ -438,17 +434,6 @@ main(int  argc,                            /* I - Number of command-line arguments (6 or 7) */
       _cupsLangPrintFilter(stderr, "INFO", _("Print file sent."));
   }
 
-#ifdef __APPLE__
- /*
-  * Wait up to 5 seconds to get any pending back-channel data...
-  */
-
-  wait_time = time(NULL) + 5;
-  while (wait_time >= time(&current_time))
-    if (wait_bc(device_fd, wait_time - current_time) <= 0)
-      break;
-#endif /* __APPLE__ */
-
   if (waiteof)
   {
    /*
index 5f303bec5147d9bfba35c0b822c88a6ee8a49124..98cf9804a0b3e90c379aae062d71821ec103e25c 100644 (file)
@@ -96,6 +96,7 @@
 #include <CoreFoundation/CoreFoundation.h>
 #include <IOKit/usb/IOUSBLib.h>
 #include <IOKit/IOCFPlugIn.h>
+#include <libproc.h>
 
 #include <spawn.h>
 #include <pthread.h>
@@ -134,6 +135,26 @@ extern char **environ;
 #define kUSBGenericTOPrinterClassDriver        CFSTR("/System/Library/Printers/Libraries/USBGenericPrintingClass.plugin")
 #define kUSBPrinterClassDeviceNotOpen  -9664   /*kPMInvalidIOMContext*/
 
+#define CRSetCrashLogMessage(m) _crc_make_setter(message, m)
+#define _crc_make_setter(attr, arg) (gCRAnnotations.attr = (uint64_t)(unsigned long)(arg))
+#define CRASH_REPORTER_CLIENT_HIDDEN __attribute__((visibility("hidden")))
+#define CRASHREPORTER_ANNOTATIONS_VERSION 4
+#define CRASHREPORTER_ANNOTATIONS_SECTION "__crash_info"
+
+struct crashreporter_annotations_t {
+       uint64_t version;               // unsigned long
+       uint64_t message;               // char *
+       uint64_t signature_string;      // char *
+       uint64_t backtrace;             // char *
+       uint64_t message2;              // char *
+       uint64_t thread;                // uint64_t
+       uint64_t dialog_mode;           // unsigned int
+};
+
+CRASH_REPORTER_CLIENT_HIDDEN 
+struct crashreporter_annotations_t gCRAnnotations 
+       __attribute__((section("__DATA," CRASHREPORTER_ANNOTATIONS_SECTION))) 
+       = { CRASHREPORTER_ANNOTATIONS_VERSION, 0, 0, 0, 0, 0, 0 };
 
 /*
  * Section 5.3 USB Printing Class spec
@@ -179,7 +200,7 @@ typedef struct classdriver_s                /**** g.classdriver context ****/
   UInt16               vendorID;               /* Vendor id */
   UInt16               productID;              /* Product id */
   printer_interface_t  interface;              /* identify the device to IOKit */
-  UInt8                        outpipe;                /* mandatory bulkOut pipe */
+  UInt8                        outpipe;                /* mandatory bulkOut pipe */
   UInt8                        inpipe;                 /* optional bulkIn pipe */
 
   /* general class requests */
@@ -293,6 +314,7 @@ static pid_t        child_pid;              /* Child PID */
 static void run_legacy_backend(int argc, char *argv[], int fd);        /* Starts child backend process running as a ppc executable */
 #endif /* __i386__ || __x86_64__ */
 static void sigterm_handler(int sig);  /* SIGTERM handler */
+static void sigquit_handler(int sig, siginfo_t *si, void *unused);
 
 #ifdef PARSE_PS_ERRORS
 static const char *next_line (const char *buffer);
@@ -344,10 +366,20 @@ print_device(const char *uri,             /* I - Device URI */
   struct timeval  *timeout,            /* Timeout pointer */
                  tv;                   /* Time value */
   struct timespec cond_timeout;                /* pthread condition timeout */
+  struct sigaction action;             /* Actions for POSIX signals */
 
 
   (void)uri;
 
+ /*
+  * Catch SIGQUIT to determine who is sending it...
+  */
+
+  memset(&action, 0, sizeof(action));
+  action.sa_sigaction = sigquit_handler;
+  action.sa_flags = SA_SIGINFO;
+  sigaction(SIGQUIT, &action, NULL);
+
  /*
   * See if the side-channel descriptor is valid...
   */
@@ -472,9 +504,6 @@ print_device(const char *uri,               /* I - Device URI */
 
   if (!print_fd)
   {
-    struct sigaction   action;         /* POSIX signal action */
-
-
     memset(&action, 0, sizeof(action));
 
     sigemptyset(&action.sa_mask);
@@ -2094,6 +2123,32 @@ sigterm_handler(int sig)         /* I - Signal */
 }
 
 
+/*
+ * 'sigquit_handler()' - SIGQUIT handler.
+ */
+
+static void sigquit_handler(int sig, siginfo_t *si, void *unused)
+{
+  char  *path;
+  char pathbuf[PROC_PIDPATHINFO_MAXSIZE];
+  static char msgbuf[256] = "";
+
+
+  (void)sig;
+  (void)unused;
+
+  if (proc_pidpath(si->si_pid, pathbuf, sizeof(pathbuf)) > 0 &&
+      (path = basename(pathbuf)) != NULL)
+    snprintf(msgbuf, sizeof(msgbuf), "SIGQUIT sent by %s(%d)", path, (int)si->si_pid);
+  else
+    snprintf(msgbuf, sizeof(msgbuf), "SIGQUIT sent by PID %d", (int)si->si_pid);
+
+  CRSetCrashLogMessage(msgbuf);
+
+  abort();
+}
+
+
 #ifdef PARSE_PS_ERRORS
 /*
  * 'next_line()' - Find the next line in a buffer.
index 440e443b5ac58c50dea22d51a25adfd03603a8d7..dba769e0fb13396491bdbb74d32772efc8c348e3 100644 (file)
@@ -882,7 +882,7 @@ cupsAdminGetServerSettings(
       */
 
       if (strcmp(cg->http->hostname, cg->server) ||
-          cg->ipp_port != _httpAddrPort(cg->http->hostaddr) ||
+          cg->ipp_port != httpAddrPort(cg->http->hostaddr) ||
          (cg->http->encryption != cg->encryption &&
           cg->http->encryption == HTTP_ENCRYPT_NEVER))
       {
@@ -901,8 +901,9 @@ cupsAdminGetServerSettings(
 
     if (!cg->http)
     {
-      if ((cg->http = _httpCreate(cupsServer(), ippPort(), NULL,
-                                  cupsEncryption(), AF_UNSPEC)) == NULL)
+      if ((cg->http = _httpCreate(cupsServer(), ippPort(), NULL, AF_UNSPEC,
+                                  cupsEncryption(), 1,
+                                  _HTTP_MODE_CLIENT)) == NULL)
       {
        if (errno)
          _cupsSetError(IPP_SERVICE_UNAVAILABLE, NULL, 0);
index a84f3e2a2f299e56733bf8e6644d5c5262d5e586..7a036784fa8d773fd637aaa70e7b0967c426411a 100644 (file)
@@ -156,8 +156,14 @@ _cupsArrayAddStrings(cups_array_t *a,      /* I - Array */
   int          status = 1;             /* Status of add */
 
 
+  DEBUG_printf(("_cupsArrayAddStrings(a=%p, s=\"%s\", delim='%c')", a, s,
+                delim));
+
   if (!a || !s || !*s)
+  {
+    DEBUG_puts("1_cupsArrayAddStrings: Returning 0");
     return (0);
+  }
 
   if (delim == ' ')
   {
@@ -165,22 +171,32 @@ _cupsArrayAddStrings(cups_array_t *a,     /* I - Array */
     * Skip leading whitespace...
     */
 
+    DEBUG_puts("1_cupsArrayAddStrings: Skipping leading whitespace.");
+
     while (*s && isspace(*s & 255))
       s ++;
+
+    DEBUG_printf(("1_cupsArrayAddStrings: Remaining string \"%s\".", s));
   }
 
-  if (!strchr(s, delim) ||
-      (delim == ' ' && !strchr(s, '\t') && !strchr(s, '\n')))
+  if (!strchr(s, delim) &&
+      (delim != ' ' || (!strchr(s, '\t') && !strchr(s, '\n'))))
   {
    /*
     * String doesn't contain a delimiter, so add it as a single value...
     */
 
+    DEBUG_puts("1_cupsArrayAddStrings: No delimiter seen, adding a single "
+               "value.");
+
     if (!cupsArrayFind(a, (void *)s))
       status = cupsArrayAdd(a, (void *)s);
   }
   else if ((buffer = strdup(s)) == NULL)
+  {
+    DEBUG_puts("1_cupsArrayAddStrings: Unable to duplicate string.");
     status = 0;
+  }
   else
   {
     for (start = end = buffer; *end; start = end)
@@ -202,6 +218,9 @@ _cupsArrayAddStrings(cups_array_t *a,       /* I - Array */
       else
         end = start + strlen(start);
 
+      DEBUG_printf(("1_cupsArrayAddStrings: Adding \"%s\", end=\"%s\"", start,
+                    end));
+
       if (!cupsArrayFind(a, start))
         status &= cupsArrayAdd(a, start);
     }
@@ -209,6 +228,8 @@ _cupsArrayAddStrings(cups_array_t *a,       /* I - Array */
     free(buffer);
   }
 
+  DEBUG_printf(("1_cupsArrayAddStrings: Returning %d.", status));
+
   return (status);
 }
 
index 4918755bf840670946dc63553f49c5e81fbb7cdc..babc0d0814ea637a1d13b2fd01634963e5a85af9 100644 (file)
@@ -87,6 +87,11 @@ typedef struct _cups_globals_s               /**** CUPS global state data ****/
   char                 resolved_uri[1024];
                                        /* Buffer for cupsBackendDeviceURI */
 
+  /* debug.c */
+#  ifdef DEBUG
+  int                  thread_id;      /* Friendly thread ID */
+#  endif /* DEBUG */
+
   /* file.c */
   cups_file_t          *stdio_files[3];/* stdin, stdout, stderr */
 
index e50468508bd08f945ef0421d0311d2818dcff9c9..544841b498cd4747d4c1edbd572d88acb15191f1 100644 (file)
@@ -353,12 +353,12 @@ extern ipp_t              *cupsDoRequest(http_t *http, ipp_t *request,
                                       const char *resource);
 extern http_encryption_t cupsEncryption(void);
 extern void            cupsFreeJobs(int num_jobs, cups_job_t *jobs);
-extern int             cupsGetClasses(char ***classes) _CUPS_DEPRECATED;
+extern int             cupsGetClasses(char ***classes) _CUPS_DEPRECATED_MSG("Use cupsGetDests instead.");
 extern const char      *cupsGetDefault(void);
 extern int             cupsGetJobs(cups_job_t **jobs, const char *name,
                                    int myjobs, int whichjobs);
 extern const char      *cupsGetPPD(const char *name);
-extern int             cupsGetPrinters(char ***printers) _CUPS_DEPRECATED;
+extern int             cupsGetPrinters(char ***printers) _CUPS_DEPRECATED_MSG("Use cupsGetDests instead.");
 extern ipp_status_t    cupsLastError(void);
 extern int             cupsPrintFile(const char *name, const char *filename,
                                      const char *title, int num_options,
@@ -366,7 +366,7 @@ extern int          cupsPrintFile(const char *name, const char *filename,
 extern int             cupsPrintFiles(const char *name, int num_files,
                                       const char **files, const char *title,
                                       int num_options, cups_option_t *options);
-extern char            *cupsTempFile(char *filename, int len) _CUPS_DEPRECATED;
+extern char            *cupsTempFile(char *filename, int len) _CUPS_DEPRECATED_MSG("Use cupsTempFd or cupsTempFile2 instead.");
 extern int             cupsTempFd(char *filename, int len);
 
 extern int             cupsAddDest(const char *name, const char *instance,
index 71b693c70a7b623f75b8d4a5314fbe263453b61d..27ade63ca6ff57d0e902c722d592ca8cbaba793c 100644 (file)
@@ -68,8 +68,24 @@ int                  _cups_debug_level = 1;
 static regex_t         *debug_filter = NULL;
                                        /* Filter expression for messages */
 static int             debug_init = 0; /* Did we initialize debugging? */
-static _cups_mutex_t   debug_mutex = _CUPS_MUTEX_INITIALIZER;
+static _cups_mutex_t   debug_init_mutex = _CUPS_MUTEX_INITIALIZER,
                                        /* Mutex to control initialization */
+                       debug_log_mutex = _CUPS_MUTEX_INITIALIZER;
+                                       /* Mutex to serialize log entries */
+
+
+/*
+ * 'debug_thread_id()' - Return an integer representing the current thread.
+ */
+
+static int                             /* O - Local thread ID */
+debug_thread_id(void)
+{
+  _cups_globals_t *cg = _cupsGlobals();        /* Global data */
+
+
+  return (cg->thread_id);
+}
 
 
 /*
@@ -433,9 +449,9 @@ _cups_debug_printf(const char *format,      /* I - Printf-style format string */
   {
     int        result;                         /* Filter result */
 
-    _cupsMutexLock(&debug_mutex);
+    _cupsMutexLock(&debug_init_mutex);
     result = regexec(debug_filter, format, 0, NULL, 0);
-    _cupsMutexUnlock(&debug_mutex);
+    _cupsMutexUnlock(&debug_init_mutex);
 
     if (result)
       return;
@@ -446,13 +462,13 @@ _cups_debug_printf(const char *format,    /* I - Printf-style format string */
   */
 
   gettimeofday(&curtime, NULL);
-  snprintf(buffer, sizeof(buffer), "%02d:%02d:%02d.%03d ",
-          (int)((curtime.tv_sec / 3600) % 24),
+  snprintf(buffer, sizeof(buffer), "T%03d %02d:%02d:%02d.%03d  ",
+           debug_thread_id(), (int)((curtime.tv_sec / 3600) % 24),
           (int)((curtime.tv_sec / 60) % 60),
           (int)(curtime.tv_sec % 60), (int)(curtime.tv_usec / 1000));
 
   va_start(ap, format);
-  bytes = debug_vsnprintf(buffer + 13, sizeof(buffer) - 14, format, ap) + 13;
+  bytes = debug_vsnprintf(buffer + 19, sizeof(buffer) - 20, format, ap) + 19;
   va_end(ap);
 
   if (bytes >= (sizeof(buffer) - 1))
@@ -470,7 +486,9 @@ _cups_debug_printf(const char *format,      /* I - Printf-style format string */
   * Write it out...
   */
 
+  _cupsMutexLock(&debug_log_mutex);
   write(_cups_debug_fd, buffer, bytes);
+  _cupsMutexUnlock(&debug_log_mutex);
 }
 
 
@@ -514,9 +532,9 @@ _cups_debug_puts(const char *s)             /* I - String to output */
   {
     int        result;                         /* Filter result */
 
-    _cupsMutexLock(&debug_mutex);
+    _cupsMutexLock(&debug_init_mutex);
     result = regexec(debug_filter, s, 0, NULL, 0);
-    _cupsMutexUnlock(&debug_mutex);
+    _cupsMutexUnlock(&debug_init_mutex);
 
     if (result)
       return;
@@ -527,8 +545,8 @@ _cups_debug_puts(const char *s)             /* I - String to output */
   */
 
   gettimeofday(&curtime, NULL);
-  bytes = snprintf(buffer, sizeof(buffer), "%02d:%02d:%02d.%03d %s",
-                  (int)((curtime.tv_sec / 3600) % 24),
+  bytes = snprintf(buffer, sizeof(buffer), "T%03d %02d:%02d:%02d.%03d  %s",
+                   debug_thread_id(), (int)((curtime.tv_sec / 3600) % 24),
                   (int)((curtime.tv_sec / 60) % 60),
                   (int)(curtime.tv_sec % 60), (int)(curtime.tv_usec / 1000),
                   s);
@@ -548,7 +566,9 @@ _cups_debug_puts(const char *s)             /* I - String to output */
   * Write it out...
   */
 
+  _cupsMutexLock(&debug_log_mutex);
   write(_cups_debug_fd, buffer, bytes);
+  _cupsMutexUnlock(&debug_log_mutex);
 }
 
 
@@ -562,7 +582,7 @@ _cups_debug_set(const char *logfile,        /* I - Log file or NULL */
                const char *filter,     /* I - Filter string or NULL */
                int        force)       /* I - Force initialization */
 {
-  _cupsMutexLock(&debug_mutex);
+  _cupsMutexLock(&debug_init_mutex);
 
   if (!debug_init || force)
   {
@@ -624,7 +644,7 @@ _cups_debug_set(const char *logfile,        /* I - Log file or NULL */
     debug_init = 1;
   }
 
-  _cupsMutexUnlock(&debug_mutex);
+  _cupsMutexUnlock(&debug_init_mutex);
 }
 #endif /* DEBUG */
 
index f0792c728fa7a1e4070b56a35fd65690061f9e0b..c9a0d797fa727493a80d8308c6b12361f1bdbd68 100644 (file)
@@ -15,7 +15,7 @@
  *
  * Contents:
  *
- *   cupsCancelDestJob()      - Cancel a job on a destination.
+ *   cupsCancelDestJob()      - Cancel a job on a destination.
  *   cupsCloseDestJob()       - Close a job and start printing.
  *   cupsCreateDestJob()      - Create a job on a destination.
  *   cupsFinishDestDocument() - Finish the current document.
@@ -197,6 +197,7 @@ cupsCreateDestJob(
     ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL,
                  title);
 
+  cupsEncodeOptions2(request, num_options, options, IPP_TAG_OPERATION);
   cupsEncodeOptions2(request, num_options, options, IPP_TAG_JOB);
   cupsEncodeOptions2(request, num_options, options, IPP_TAG_SUBSCRIPTION);
 
@@ -339,6 +340,7 @@ cupsStartDestDocument(
                  "document-format", NULL, format);
   ippAddBoolean(request, IPP_TAG_OPERATION, "last-document", last_document);
 
+  cupsEncodeOptions2(request, num_options, options, IPP_TAG_OPERATION);
   cupsEncodeOptions2(request, num_options, options, IPP_TAG_DOCUMENT);
 
  /*
index ad709ee82e286ed0390f8f80a5925d348490d240..fb52a9a69010f67f28ed390bf3bd138a2bb40f32 100644 (file)
@@ -188,7 +188,7 @@ cups_create_localizations(
   httpGetHostname(http, http_hostname, sizeof(http_hostname));
 
   if (!_cups_strcasecmp(http_hostname, hostname) &&
-      port == _httpAddrPort(http->hostaddr))
+      port == httpAddrPort(http->hostaddr))
   {
    /*
     * Use the same connection...
index 46bc3adb1fe76d09c6587d5ba81bb4e6389249c7..1474eb41e141ca1a373aa1acdd2da3b56d95739a 100644 (file)
@@ -722,7 +722,8 @@ cupsConnectDest(
   else
     encryption = HTTP_ENCRYPT_IF_REQUESTED;
 
-  http = _httpCreate(hostname, port, addrlist, encryption, AF_UNSPEC);
+  http = _httpCreate(hostname, port, addrlist, AF_UNSPEC, encryption, 1,
+                     _HTTP_MODE_CLIENT);
 
  /*
   * Connect if requested...
index 565a43705fd660d9051583fe642486ae3afc77f6..224221c761226e849aa8c97fd15faebc82691d2e 100644 (file)
 
 
 /*
- * Local list of option names and the value tags they should use...
+ * Local list of option names, the value tags they should use, and the list of
+ * supported operations...
  *
- * **** THIS LIST MUST BE SORTED ****
+ * **** THIS LIST MUST BE SORTED BY ATTRIBUTE NAME ****
  */
 
+static const ipp_op_t ipp_job_creation[] =
+{
+  IPP_PRINT_JOB,
+  IPP_PRINT_URI,
+  IPP_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_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_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_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_CUPS_NONE
+};
+
+static const ipp_op_t ipp_set_printer[] =
+{
+  IPP_SET_PRINTER_ATTRIBUTES,
+  CUPS_ADD_MODIFY_PRINTER,
+  CUPS_ADD_MODIFY_CLASS,
+  IPP_OP_CUPS_NONE
+};
+
+static const ipp_op_t cups_am_class[] =
+{
+  CUPS_ADD_MODIFY_CLASS,
+  IPP_OP_CUPS_NONE
+};
+
+static const ipp_op_t cups_am_printer[] =
+{
+  CUPS_ADD_MODIFY_PRINTER,
+  IPP_OP_CUPS_NONE
+};
+
+static const ipp_op_t cups_schemes[] =
+{
+  CUPS_GET_DEVICES,
+  CUPS_GET_PPDS,
+  IPP_OP_CUPS_NONE
+};
+
+static const ipp_op_t cups_get_ppds[] =
+{
+  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_NONE
+};
+
 static const _ipp_option_t ipp_options[] =
 {
   { 1, "auth-info",            IPP_TAG_TEXT,           IPP_TAG_JOB },
@@ -47,18 +136,26 @@ static const _ipp_option_t ipp_options[] =
   { 0, "brightness-default",   IPP_TAG_INTEGER,        IPP_TAG_PRINTER },
   { 0, "columns",              IPP_TAG_INTEGER,        IPP_TAG_JOB },
   { 0, "columns-default",      IPP_TAG_INTEGER,        IPP_TAG_PRINTER },
-  { 0, "compression",          IPP_TAG_KEYWORD,        IPP_TAG_OPERATION },
+  { 0, "compression",          IPP_TAG_KEYWORD,        IPP_TAG_OPERATION,
+                                                       IPP_TAG_ZERO,
+                                                       ipp_doc_creation },
   { 0, "copies",               IPP_TAG_INTEGER,        IPP_TAG_JOB,
                                                        IPP_TAG_DOCUMENT },
   { 0, "copies-default",       IPP_TAG_INTEGER,        IPP_TAG_PRINTER },
   { 0, "device-uri",           IPP_TAG_URI,            IPP_TAG_PRINTER },
   { 1, "document-copies",      IPP_TAG_RANGE,          IPP_TAG_JOB,
-                                                       IPP_TAG_DOCUMENT },
-  { 0, "document-format",      IPP_TAG_MIMETYPE,       IPP_TAG_OPERATION },
+                                                       IPP_TAG_DOCUMENT,
+                                                       ipp_doc_creation },
+  { 0, "document-format",      IPP_TAG_MIMETYPE,       IPP_TAG_OPERATION,
+                                                       IPP_TAG_ZERO,
+                                                       ipp_doc_creation },
   { 0, "document-format-default", IPP_TAG_MIMETYPE,    IPP_TAG_PRINTER },
   { 1, "document-numbers",     IPP_TAG_RANGE,          IPP_TAG_JOB,
-                                                       IPP_TAG_DOCUMENT },
-  { 1, "exclude-schemes",      IPP_TAG_NAME,           IPP_TAG_OPERATION },
+                                                       IPP_TAG_DOCUMENT,
+                                                       ipp_all_print },
+  { 1, "exclude-schemes",      IPP_TAG_NAME,           IPP_TAG_OPERATION,
+                                                       IPP_TAG_ZERO,
+                                                       cups_schemes },
   { 1, "finishings",           IPP_TAG_ENUM,           IPP_TAG_JOB,
                                                        IPP_TAG_DOCUMENT },
   { 1, "finishings-default",   IPP_TAG_ENUM,           IPP_TAG_PRINTER },
@@ -71,11 +168,14 @@ static const _ipp_option_t ipp_options[] =
   { 0, "gamma-default",                IPP_TAG_INTEGER,        IPP_TAG_PRINTER },
   { 0, "hue",                  IPP_TAG_INTEGER,        IPP_TAG_JOB },
   { 0, "hue-default",          IPP_TAG_INTEGER,        IPP_TAG_PRINTER },
-  { 1, "include-schemes",      IPP_TAG_NAME,           IPP_TAG_OPERATION },
+  { 1, "include-schemes",      IPP_TAG_NAME,           IPP_TAG_OPERATION,
+                                                       IPP_TAG_ZERO,
+                                                       cups_schemes },
   { 0, "job-account-id",        IPP_TAG_NAME,           IPP_TAG_JOB },
   { 0, "job-account-id-default",IPP_TAG_NAME,           IPP_TAG_PRINTER },
   { 0, "job-accounting-user-id", IPP_TAG_NAME,          IPP_TAG_JOB },
   { 0, "job-accounting-user-id-default", IPP_TAG_NAME,  IPP_TAG_PRINTER },
+  { 0, "job-authorization-uri",        IPP_TAG_URI,            IPP_TAG_OPERATION },
   { 0, "job-hold-until",       IPP_TAG_KEYWORD,        IPP_TAG_JOB },
   { 0, "job-id",               IPP_TAG_INTEGER,        IPP_TAG_ZERO }, /* never send as option */
   { 0, "job-impressions",      IPP_TAG_INTEGER,        IPP_TAG_ZERO }, /* never send as option */
@@ -86,8 +186,12 @@ static const _ipp_option_t ipp_options[] =
   { 0, "job-media-sheets",     IPP_TAG_INTEGER,        IPP_TAG_ZERO }, /* never send as option */
   { 0, "job-media-sheets-completed", IPP_TAG_INTEGER,  IPP_TAG_ZERO }, /* never send as option */
   { 0, "job-page-limit",       IPP_TAG_INTEGER,        IPP_TAG_PRINTER },
-  { 0, "job-password",          IPP_TAG_STRING,         IPP_TAG_OPERATION },
-  { 0, "job-password-encryption", IPP_TAG_KEYWORD,      IPP_TAG_OPERATION },
+  { 0, "job-password",          IPP_TAG_STRING,         IPP_TAG_OPERATION,
+                                                       IPP_TAG_ZERO,
+                                                       ipp_job_creation },
+  { 0, "job-password-encryption", IPP_TAG_KEYWORD,      IPP_TAG_OPERATION,
+                                                       IPP_TAG_ZERO,
+                                                       ipp_job_creation },
   { 0, "job-priority",         IPP_TAG_INTEGER,        IPP_TAG_JOB },
   { 0, "job-quota-period",     IPP_TAG_INTEGER,        IPP_TAG_PRINTER },
   { 1, "job-sheets",           IPP_TAG_NAME,           IPP_TAG_JOB },
@@ -157,7 +261,33 @@ static const _ipp_option_t ipp_options[] =
   { 0, "penwidth",             IPP_TAG_INTEGER,        IPP_TAG_JOB },
   { 0, "penwidth-default",     IPP_TAG_INTEGER,        IPP_TAG_PRINTER },
   { 0, "port-monitor",         IPP_TAG_NAME,           IPP_TAG_PRINTER },
-  { 0, "ppd-name",             IPP_TAG_NAME,           IPP_TAG_PRINTER },
+  { 0, "ppd-device-id",                IPP_TAG_TEXT,           IPP_TAG_OPERATION,
+                                                       IPP_TAG_ZERO,
+                                                       cups_get_ppds },
+  { 0, "ppd-make",             IPP_TAG_TEXT,           IPP_TAG_OPERATION,
+                                                       IPP_TAG_ZERO,
+                                                       cups_get_ppds },
+  { 0, "ppd-make-and-model",   IPP_TAG_TEXT,           IPP_TAG_OPERATION,
+                                                       IPP_TAG_ZERO,
+                                                       cups_get_ppds },
+  { 0, "ppd-model-number",     IPP_TAG_INTEGER,        IPP_TAG_OPERATION,
+                                                       IPP_TAG_ZERO,
+                                                       cups_get_ppds },
+  { 0, "ppd-name",             IPP_TAG_NAME,           IPP_TAG_OPERATION,
+                                                       IPP_TAG_ZERO,
+                                                       cups_ppd_name },
+  { 0, "ppd-natural-language", IPP_TAG_LANGUAGE,       IPP_TAG_OPERATION,
+                                                       IPP_TAG_ZERO,
+                                                       cups_get_ppds },
+  { 0, "ppd-product",          IPP_TAG_TEXT,           IPP_TAG_OPERATION,
+                                                       IPP_TAG_ZERO,
+                                                       cups_get_ppds },
+  { 0, "ppd-psversion",                IPP_TAG_TEXT,           IPP_TAG_OPERATION,
+                                                       IPP_TAG_ZERO,
+                                                       cups_get_ppds },
+  { 0, "ppd-type",             IPP_TAG_KEYWORD,        IPP_TAG_OPERATION,
+                                                       IPP_TAG_ZERO,
+                                                       cups_get_ppds },
   { 0, "ppi",                  IPP_TAG_INTEGER,        IPP_TAG_JOB },
   { 0, "ppi-default",          IPP_TAG_INTEGER,        IPP_TAG_PRINTER },
   { 0, "prettyprint",          IPP_TAG_BOOLEAN,        IPP_TAG_JOB },
@@ -257,23 +387,27 @@ cupsEncodeOptions2(
     cups_option_t *options,            /* I - Options */
     ipp_tag_t     group_tag)           /* I - Group to encode */
 {
-  int          i, j;                   /* Looping vars */
-  int          count;                  /* Number of values */
-  char         *s,                     /* Pointer into option value */
-               *val,                   /* Pointer to option value */
-               *copy,                  /* Copy of option value */
-               *sep,                   /* Option separator */
-               quote;                  /* Quote character */
-  ipp_attribute_t *attr;               /* IPP attribute */
-  ipp_tag_t    value_tag;              /* IPP value tag */
-  cups_option_t        *option;                /* Current option */
-  ipp_t                *collection;            /* Collection value */
-  int          num_cols;               /* Number of collection values */
-  cups_option_t        *cols;                  /* Collection values */
-
-
-  DEBUG_printf(("cupsEncodeOptions2(ipp=%p, num_options=%d, options=%p, "
-                "group_tag=%x)", ipp, num_options, options, group_tag));
+  int                  i, j;           /* Looping vars */
+  int                  count;          /* Number of values */
+  char                 *s,             /* Pointer into option value */
+                       *val,           /* Pointer to option value */
+                       *copy,          /* Copy of option value */
+                       *sep,           /* Option separator */
+                       quote;          /* Quote character */
+  ipp_attribute_t      *attr;          /* IPP attribute */
+  ipp_tag_t            value_tag;      /* IPP value tag */
+  cups_option_t                *option;        /* Current option */
+  ipp_t                        *collection;    /* Collection value */
+  int                  num_cols;       /* Number of collection values */
+  cups_option_t                *cols;          /* Collection values */
+  ipp_op_t             op;             /* Operation for this request */
+  const ipp_op_t       *ops;           /* List of allowed operations */
+
+
+  DEBUG_printf(("cupsEncodeOptions2(ipp=%p(%s), num_options=%d, options=%p, "
+                "group_tag=%x)", ipp,
+                ipp ? ippOpString(ippGetOperation(ipp)) : "", num_options,
+                options, group_tag));
 
  /*
   * Range check input...
@@ -286,13 +420,18 @@ cupsEncodeOptions2(
   * Do special handling for the document-format/raw options...
   */
 
-  if (group_tag == IPP_TAG_OPERATION)
+  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))
   {
    /*
     * Handle the document format stuff first...
     */
 
-    if ((val = (char *)cupsGetOption("document-format", num_options, options)) != NULL)
+    if ((val = (char *)cupsGetOption("document-format", num_options,
+                                     options)) != NULL)
       ippAddString(ipp, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
                   NULL, val);
     else if (cupsGetOption("raw", num_options, options))
@@ -331,6 +470,22 @@ cupsEncodeOptions2(
         continue;
 
       value_tag = match->value_tag;
+
+      if (match->operations)
+        ops = match->operations;
+      else if (group_tag == IPP_TAG_JOB)
+        ops = ipp_job_creation;
+      else if (group_tag == IPP_TAG_DOCUMENT)
+        ops = ipp_doc_creation;
+      else if (group_tag == IPP_TAG_SUBSCRIPTION)
+        ops = ipp_sub_creation;
+      else if (group_tag == IPP_TAG_PRINTER)
+        ops = ipp_set_printer;
+      else
+      {
+       DEBUG_printf(("2cupsEncodeOptions2: Skipping \"%s\".", option->name));
+        continue;
+      }
     }
     else
     {
@@ -344,10 +499,23 @@ cupsEncodeOptions2(
            strcmp(option->name + namelen - 10, "-supported")))
       {
        if (group_tag != IPP_TAG_JOB && group_tag != IPP_TAG_DOCUMENT)
+       {
+         DEBUG_printf(("2cupsEncodeOptions2: Skipping \"%s\".", option->name));
           continue;
+        }
       }
       else if (group_tag != IPP_TAG_PRINTER)
+      {
+       DEBUG_printf(("2cupsEncodeOptions2: Skipping \"%s\".", option->name));
         continue;
+      }
+
+      if (group_tag == IPP_TAG_JOB)
+        ops = ipp_job_creation;
+      else if (group_tag == IPP_TAG_DOCUMENT)
+        ops = ipp_doc_creation;
+      else
+        ops = ipp_set_printer;
 
       if (!_cups_strcasecmp(option->value, "true") ||
           !_cups_strcasecmp(option->value, "false"))
@@ -356,6 +524,22 @@ cupsEncodeOptions2(
        value_tag = IPP_TAG_NAME;
     }
 
+   /*
+    * Verify that we send this attribute for this operation...
+    */
+
+    while (*ops != IPP_OP_CUPS_NONE)
+      if (op == *ops)
+        break;
+      else
+        ops ++;
+
+    if (*ops == IPP_OP_CUPS_NONE)
+    {
+      DEBUG_printf(("2cupsEncodeOptions2: Skipping \"%s\".", option->name));
+      continue;
+    }
+
    /*
     * Count the number of values...
     */
@@ -631,6 +815,26 @@ cupsEncodeOptions2(
 }
 
 
+#ifdef DEBUG
+/*
+ * '_ippCheckOptions()' - Validate that the option array is sorted properly.
+ */
+
+const char *                           /* O - First out-of-order option or NULL */
+_ippCheckOptions(void)
+{
+  int  i;                              /* Looping var */
+
+
+  for (i = 0; i < (int)(sizeof(ipp_options) / sizeof(ipp_options[0]) - 1); i ++)
+    if (strcmp(ipp_options[i].name, ipp_options[i + 1].name) >= 0)
+      return (ipp_options[i + 1].name);
+
+  return (NULL);
+}
+#endif /* DEBUG */
+
+
 /*
  * '_ippFindOption()' - Find the attribute information for an option.
  */
index d7bd5ac508a89deeb00bba9aafca2e9cb8172fb0..eed949f839eff1578328d077943a5b7f104d1b9d 100644 (file)
  */
 
 
+#ifdef DEBUG
+static int             cups_global_index = 0;
+                                       /* Next thread number */
+#endif /* DEBUG */
 static _cups_threadkey_t cups_globals_key = _CUPS_THREADKEY_INITIALIZER;
                                        /* Thread local storage key */
 #ifdef HAVE_PTHREAD_H
@@ -216,6 +220,14 @@ cups_globals_alloc(void)
   cg->expired_certs = 1;
   cg->expired_root  = 1;
 
+#ifdef DEBUG
+ /*
+  * Friendly thread ID for debugging...
+  */
+
+  cg->thread_id = ++ cups_global_index;
+#endif /* DEBUG */
+
  /*
   * Then set directories as appropriate...
   */
index d80bb8d017641b3ae19b1960c0705513463ab8d0..9cb9bee30544cd6ca73308f1ec3aa8a21a5d658f 100644 (file)
  *
  * Contents:
  *
- *   httpAddrAny()       - Check for the "any" address.
- *   httpAddrEqual()     - Compare two addresses.
+ *   httpAddrAny()      - Check for the "any" address.
+ *   httpAddrEqual()    - Compare two addresses.
+ *   httpAddrLength()   - Return the length of the address in bytes.
+ *   httpAddrListen()   - Create a listening socket bound to the specified
+ *                        address and port.
  *   httpAddrLocalhost() - Check for the local loopback address.
- *   httpAddrLookup()    - Lookup the hostname associated with the address.
- *   _httpAddrPort()     - Get the port number associated with an address.
+ *   httpAddrLookup()   - Lookup the hostname associated with the address.
+ *   httpAddrPort()     - Get the port number associated with an address.
  *   _httpAddrSetPort()  - Set the port number associated with an address.
- *   httpAddrString()    - Convert an IP address to a dotted string.
- *   httpGetHostByName() - Lookup a hostname or IP address, and return
- *                         address records for the specified name.
- *   httpGetHostname()   - Get the FQDN for the local system.
+ *   httpAddrString()   - Convert an address to a numeric string.
+ *   httpGetHostByName() - Lookup a hostname or IPv4 address, and return
+ *                        address records for the specified name.
+ *   httpGetHostname()  - Get the FQDN for the connection or local system.
  */
 
 /*
@@ -130,6 +133,75 @@ httpAddrLength(const http_addr_t *addr)    /* I - Address */
 }
 
 
+/*
+ * 'httpAddrListen()' - Create a listening socket bound to the specified
+ *                      address and port.
+ *
+ * @since CUPS 1.7@
+ */
+
+int                                    /* O - Socket or -1 on error */
+httpAddrListen(http_addr_t *addr,      /* I - Address to bind to */
+               int         port)       /* I - Port number to bind to */
+{
+  int          fd = -1,                /* Socket */
+               val;                    /* Socket value */
+
+
+ /*
+  * Range check input...
+  */
+
+  if (!addr || port <= 0)
+    return (-1);
+
+  if ((fd = socket(addr->addr.sa_family, SOCK_STREAM, 0)) < 0)
+  {
+    _cupsSetHTTPError(HTTP_STATUS_ERROR);
+    return (-1);
+  }
+
+  val = 1;
+  setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val));
+
+#ifdef IPV6_V6ONLY
+  if (addr->addr.sa_family == AF_INET6)
+    setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &val, sizeof(val));
+#endif /* IPV6_V6ONLY */
+
+  _httpAddrSetPort(addr, port);
+
+  if (bind(fd, (struct sockaddr *)addr, httpAddrLength(addr)))
+  {
+    _cupsSetHTTPError(HTTP_STATUS_ERROR);
+
+    close(fd);
+
+    return (-1);
+  }
+
+  if (listen(fd, 5))
+  {
+    _cupsSetHTTPError(HTTP_STATUS_ERROR);
+
+    close(fd);
+
+    return (-1);
+  }
+
+#ifdef SO_NOSIGPIPE
+ /*
+  * Disable SIGPIPE for this socket.
+  */
+
+  val = 1;
+  setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, &val, sizeof(val));
+#endif /* SO_NOSIGPIPE */
+
+  return (fd);
+}
+
+
 /*
  * 'httpAddrLocalhost()' - Check for the local loopback address.
  *
@@ -290,11 +362,13 @@ httpAddrLookup(
 
 
 /*
- * '_httpAddrPort()' - Get the port number associated with an address.
+ * 'httpAddrPort()' - Get the port number associated with an address.
+ *
+ * @since CUPS 1.7@
  */
 
 int                                    /* O - Port number */
-_httpAddrPort(http_addr_t *addr)       /* I - Address */
+httpAddrPort(http_addr_t *addr)                /* I - Address */
 {
   if (!addr)
     return (ippPort());
@@ -308,6 +382,13 @@ _httpAddrPort(http_addr_t *addr)   /* I - Address */
     return (ippPort());
 }
 
+int                                    /* O - Port number */
+_httpAddrPort(http_addr_t *addr)       /* I - Address */
+{
+ /* TODO: Remove in CUPS 1.8 */
+  return (httpAddrPort(addr));
+}
+
 
 /*
  * '_httpAddrSetPort()' - Set the port number associated with an address.
index 223a68695ffcb7308f249d27848f0e0e2db0caca..e62a556f490e51363f2f3613cb2a3bff8cc5489c 100644 (file)
  *
  * Contents:
  *
- *   httpAddrConnect()  - Connect to any of the addresses in the list.
+ *   httpAddrConnect() - Connect to any of the addresses in the list.
  *   httpAddrConnect2() - Connect to any of the addresses in the list with a
- *                        timeout and optional cancel.
+ *                       timeout and optional cancel.
+ *   httpAddrCopyList() - Copy an address list.
  *   httpAddrFreeList() - Free an address list.
- *   httpAddrGetList()  - Get a list of addresses for a hostname.
+ *   httpAddrGetList() - Get a list of addresses for a hostname.
  */
 
 /*
@@ -119,7 +120,7 @@ httpAddrConnect2(
 
     DEBUG_printf(("2httpAddrConnect2: Trying %s:%d...",
                  httpAddrString(&(addrlist->addr), temp, sizeof(temp)),
-                 _httpAddrPort(&(addrlist->addr))));
+                 httpAddrPort(&(addrlist->addr))));
 
     if ((*sock = (int)socket(_httpAddrFamily(&(addrlist->addr)), SOCK_STREAM,
                              0)) < 0)
@@ -201,7 +202,7 @@ httpAddrConnect2(
     {
       DEBUG_printf(("1httpAddrConnect2: Connected to %s:%d...",
                    httpAddrString(&(addrlist->addr), temp, sizeof(temp)),
-                   _httpAddrPort(&(addrlist->addr))));
+                   httpAddrPort(&(addrlist->addr))));
 
 #ifdef O_NONBLOCK
       fcntl(*sock, F_SETFL, flags);
@@ -282,7 +283,7 @@ httpAddrConnect2(
           {
            DEBUG_printf(("1httpAddrConnect2: Connected to %s:%d...",
                          httpAddrString(&peer, temp, sizeof(temp)),
-                         _httpAddrPort(&peer)));
+                         httpAddrPort(&peer)));
 
            return (addrlist);
          }
@@ -295,7 +296,7 @@ httpAddrConnect2(
 
     DEBUG_printf(("1httpAddrConnect2: Unable to connect to %s:%d: %s",
                  httpAddrString(&(addrlist->addr), temp, sizeof(temp)),
-                 _httpAddrPort(&(addrlist->addr)), strerror(errno)));
+                 httpAddrPort(&(addrlist->addr)), strerror(errno)));
 
 #ifndef WIN32
     if (errno == EINPROGRESS)
@@ -327,6 +328,55 @@ httpAddrConnect2(
 }
 
 
+
+/*
+ * 'httpAddrCopyList()' - Copy an address list.
+ *
+ * @since CUPS 1.7@
+ */
+
+http_addrlist_t        *                       /* O - New address list or @code NULL@ on error */
+httpAddrCopyList(
+    http_addrlist_t *src)              /* I - Source address list */
+{
+  http_addrlist_t      *dst = NULL,    /* First list entry */
+                       *prev = NULL,   /* Previous list entry */
+                       *current = NULL;/* Current list entry */
+
+
+  while (src)
+  {
+    if ((current = malloc(sizeof(http_addrlist_t))) == NULL)
+    {
+      current = dst;
+
+      while (current)
+      {
+        prev    = current;
+        current = current->next;
+
+        free(prev);
+      }
+
+      return (NULL);
+    }
+
+    memcpy(current, src, sizeof(http_addrlist_t));
+
+    current->next = NULL;
+
+    if (prev)
+      prev->next = current;
+    else
+      dst = current;
+
+    src = src->next;
+  }
+
+  return (dst);
+}
+
+
 /*
  * 'httpAddrFreeList()' - Free an address list.
  *
index 5e21c472db6e3d822082dbac3f162916662132e1..d6cbeaf833d30a48cd35e567c30c07f943c790e2 100644 (file)
@@ -136,6 +136,10 @@ typedef int socklen_t;
 #    endif /* HAVE_GETIFADDRS */
 #  endif /* !WIN32 */
 
+#  ifdef HAVE_LIBZ
+#    include <zlib.h>
+#  endif /* HAVE_LIBZ */
+
 
 /*
  * C++ magic...
@@ -236,7 +240,22 @@ typedef void *http_tls_t;
 typedef void *http_tls_credentials_t;
 #  endif /* HAVE_LIBSSL */
 
-struct _http_s                         /**** HTTP connection structure. ****/
+typedef enum _http_coding_e            /**** HTTP content coding enumeration ****/
+{
+  _HTTP_CODING_IDENTITY,               /* No content coding */
+  _HTTP_CODING_GZIP,                   /* LZ77+gzip decompression */
+  _HTTP_CODING_DEFLATE,                        /* LZ77+zlib compression */
+  _HTTP_CODING_GUNZIP,                 /* LZ77+gzip decompression */
+  _HTTP_CODING_INFLATE                 /* LZ77+zlib decompression */
+} _http_coding_t;
+
+typedef enum _http_mode_e              /**** HTTP mode enumeration ****/
+{
+  _HTTP_MODE_CLIENT,                   /* Client connected to server */
+  _HTTP_MODE_SERVER                    /* Server connected (accepted) from client */
+} _http_mode_t;
+
+struct _http_s                         /**** HTTP connection structure ****/
 {
   int                  fd;             /* File descriptor for this socket */
   int                  blocking;       /* To block or not to block */
@@ -249,8 +268,8 @@ struct _http_s                              /**** HTTP connection structure. ****/
   struct sockaddr_in   _hostaddr;      /* Address of connected host (deprecated) */
   char                 hostname[HTTP_MAX_HOST],
                                        /* Name of connected host */
-                       fields[HTTP_FIELD_MAX][HTTP_MAX_VALUE];
-                                       /* Field values */
+                       fields[HTTP_FIELD_ACCEPT_ENCODING][HTTP_MAX_VALUE];
+                                       /* Field values up to Accept-Encoding */
   char                 *data;          /* Pointer to data buffer */
   http_encoding_t      data_encoding;  /* Chunked or not */
   int                  _data_remaining;/* Number of bytes left (deprecated) */
@@ -264,16 +283,19 @@ struct _http_s                            /**** HTTP connection structure. ****/
   int                  nonce_count;    /* Nonce count */
   http_tls_t           tls;            /* TLS state information */
   http_encryption_t    encryption;     /* Encryption requirements */
+
   /**** New in CUPS 1.1.19 ****/
   fd_set               *input_set;     /* select() set for httpWait() (deprecated) */
   http_status_t                expect;         /* Expect: header */
   char                 *cookie;        /* Cookie value(s) */
+
   /**** New in CUPS 1.1.20 ****/
   char                 _authstring[HTTP_MAX_VALUE],
                                        /* Current Authentication value (deprecated) */
                        userpass[HTTP_MAX_VALUE];
                                        /* Username:password string */
   int                  digest_tries;   /* Number of tries for digest auth */
+
   /**** New in CUPS 1.2 ****/
   off_t                        data_remaining; /* Number of bytes left */
   http_addr_t          *hostaddr;      /* Current host address and port */
@@ -281,6 +303,7 @@ struct _http_s                              /**** HTTP connection structure. ****/
   char                 wbuffer[HTTP_MAX_BUFFER];
                                        /* Buffer for outgoing data */
   int                  wused;          /* Write buffer bytes used */
+
   /**** New in CUPS 1.3 ****/
   char                 *field_authorization;
                                        /* Authorization field */
@@ -293,6 +316,7 @@ struct _http_s                              /**** HTTP connection structure. ****/
 #  ifdef HAVE_AUTHORIZATION_H
   AuthorizationRef     auth_ref;       /* Authorization ref */
 #  endif /* HAVE_AUTHORIZATION_H */
+
   /**** New in CUPS 1.5 ****/
   http_tls_credentials_t tls_credentials;
                                        /* TLS credentials */
@@ -303,6 +327,17 @@ struct _http_s                             /**** HTTP connection structure. ****/
 #  ifdef HAVE_GSSAPI
   char                 gsshost[256];   /* Hostname for Kerberos */
 #  endif /* HAVE_GSSAPI */
+
+  /**** New in CUPS 1.7 ****/
+  _http_mode_t         mode;           /* _HTTP_MODE_CLIENT or _HTTP_MODE_SERVER */
+  char                 *accept_encoding,
+                                       /* Accept-Encoding field */
+                       *allow,         /* Allow field */
+                       *server;        /* Server field */
+#  ifdef HAVE_LIBZ
+  _http_coding_t       coding;         /* _HTTP_CODING_xxx */
+  z_stream             stream;         /* (De)compression stream */
+#  endif /* HAVE_LIBZ */
 };
 
 
@@ -368,15 +403,17 @@ extern void       _cups_freeifaddrs(struct ifaddrs *addrs);
  */
 
 #define                        _httpAddrFamily(addrp) (addrp)->addr.sa_family
-extern int             _httpAddrPort(http_addr_t *addr);
+extern int             _httpAddrPort(http_addr_t *addr)
+                                     _CUPS_DEPRECATED_MSG("Use httpAddrPort "
+                                                          "instead.");
 extern void            _httpAddrSetPort(http_addr_t *addr, int port);
 extern char            *_httpAssembleUUID(const char *server, int port,
                                           const char *name, int number,
                                           char *buffer, size_t bufsize);
 extern http_t          *_httpCreate(const char *host, int port,
-                                    http_addrlist_t *addrlist,
+                                    http_addrlist_t *addrlist, int family,
                                     http_encryption_t encryption,
-                                    int family);
+                                    int blocking, _http_mode_t mode);
 extern http_tls_credentials_t
                        _httpCreateCredentials(cups_array_t *credentials);
 extern char            *_httpDecodeURI(char *dst, const char *src,
@@ -385,7 +422,8 @@ extern void         _httpDisconnect(http_t *http);
 extern char            *_httpEncodeURI(char *dst, const char *src,
                                        size_t dstsize);
 extern void            _httpFreeCredentials(http_tls_credentials_t credentials);
-extern ssize_t         _httpPeek(http_t *http, char *buffer, size_t length);
+extern ssize_t         _httpPeek(http_t *http, char *buffer, size_t length)
+                                 _CUPS_DEPRECATED_MSG("Use httpPeek instead.");
 extern const char      *_httpResolveURI(const char *uri, char *resolved_uri,
                                         size_t resolved_size, int options,
                                         int (*cb)(void *context),
index e69b44d055fb2fa8e95eac58d2babea4a7a7afff..2b0d9a827b35b08510a12deec4c2a5716dd704c4 100644 (file)
@@ -1542,10 +1542,16 @@ _httpResolveURI(
 #  ifdef HAVE_DNSSD
     if (DNSServiceCreateConnection(&ref) == kDNSServiceErr_NoError)
     {
+      int interface = kDNSServiceInterfaceIndexAny;
+                                       /* Lookup on any interface */
+
+      if (!strcmp(scheme, "ippusb"))
+        interface = kDNSServiceInterfaceIndexLocalOnly;
+
       localref = ref;
       if (DNSServiceResolve(&localref,
-                            kDNSServiceFlagsShareConnection, 0, hostname, regtype,
-                           "local.", http_resolve_cb,
+                            kDNSServiceFlagsShareConnection, interface,
+                            hostname, regtype, "local.", http_resolve_cb,
                            &uribuf) == kDNSServiceErr_NoError)
       {
        int     fds;                    /* Number of ready descriptors */
@@ -1619,7 +1625,7 @@ _httpResolveURI(
              domainref = ref;
              if (DNSServiceResolve(&domainref,
                                    kDNSServiceFlagsShareConnection,
-                                   0, hostname, regtype, domain,
+                                   interface, hostname, regtype, domain,
                                    http_resolve_cb,
                                    &uribuf) == kDNSServiceErr_NoError)
                domainsent = 1;
@@ -1747,7 +1753,7 @@ _httpResolveURI(
 #endif /* HAVE_DNSSD || HAVE_AVAHI */
 
     if ((options & _HTTP_RESOLVE_STDERR) && !uri)
-      _cupsLangPrintFilter(stderr, "ERROR", _("Unable to find printer."));
+      _cupsLangPrintFilter(stderr, "INFO", _("Unable to find printer."));
   }
   else
   {
index c53465b2ffb8753ba5569a8214fe244a3a7187cf..a547c47afe299d2ee879c5ab522558be29081d38 100644 (file)
  *
  * Contents:
  *
- *   httpAddCredential()      - Allocates and adds a single credential to an
- *                             array.
- *   _httpBIOMethods()       - Get the OpenSSL BIO methods for HTTP
- *                             connections.
- *   httpBlocking()          - Set blocking/non-blocking behavior on a
- *                             connection.
- *   httpCheck()             - Check to see if there is a pending response
- *                             from the server.
- *   httpClearCookie()       - Clear the cookie value(s).
- *   httpClearFields()       - Clear HTTP request fields.
- *   httpClose()             - Close an HTTP connection.
- *   httpConnect()           - Connect to a HTTP server.
- *   httpConnectEncrypt()     - Connect to a HTTP server using encryption.
- *   httpCopyCredentials()    - Copy the credentials associated with an
- *                             encrypted connection.
- *   _httpCreate()           - Create an unconnected HTTP connection.
- *   _httpCreateCredentials() - Create credentials in the internal format.
- *   httpDelete()            - Send a DELETE request to the server.
- *   _httpDisconnect()       - Disconnect a HTTP connection.
- *   httpEncryption()        - Set the required encryption on the link.
- *   httpError()             - Get the last error on a connection.
- *   httpFlush()             - Flush data from a HTTP connection.
- *   httpFlushWrite()        - Flush data in write buffer.
- *   _httpFreeCredentials()   - Free internal credentials.
- *   httpFreeCredentials()    - Free an array of credentials.
- *   httpGet()               - Send a GET request to the server.
- *   httpGetAuthString()      - Get the current authorization string.
- *   httpGetBlocking()       - Get the blocking/non-block state of a
- *                             connection.
- *   httpGetCookie()         - Get any cookie data from the response.
- *   httpGetFd()             - Get the file descriptor associated with a
- *                             connection.
- *   httpGetField()          - Get a field value from a request/response.
- *   httpGetLength()         - Get the amount of data remaining from the
- *                             content-length or transfer-encoding fields.
- *   httpGetLength2()        - Get the amount of data remaining from the
- *                             content-length or transfer-encoding fields.
- *   httpGets()              - Get a line of text from a HTTP connection.
- *   httpGetState()          - Get the current state of the HTTP request.
- *   httpGetStatus()         - Get the status of the last HTTP request.
- *   httpGetSubField()       - Get a sub-field value.
- *   httpGetSubField2()       - Get a sub-field value.
- *   httpGetVersion()        - Get the HTTP version at the other end.
- *   httpHead()              - Send a HEAD request to the server.
- *   httpInitialize()        - Initialize the HTTP interface library and set
- *                             the default HTTP proxy (if any).
- *   httpOptions()           - Send an OPTIONS request to the server.
- *   _httpPeek()             - Peek at data from a HTTP connection.
- *   httpPost()              - Send a POST request to the server.
- *   httpPrintf()            - Print a formatted string to a HTTP connection.
- *   httpPut()               - Send a PUT request to the server.
- *   httpRead()              - Read data from a HTTP connection.
- *   httpRead2()             - Read data from a HTTP connection.
- *   _httpReadCDSA()         - Read function for the CDSA library.
- *   _httpReadGNUTLS()       - Read function for the GNU TLS library.
- *   httpReconnect()         - Reconnect to a HTTP server.
- *   httpReconnect2()        - Reconnect to a HTTP server with timeout and
- *                             optional cancel.
- *   httpSetAuthString()      - Set the current authorization string.
- *   httpSetCredentials()     - Set the credentials associated with an
- *                             encrypted connection.
- *   httpSetCookie()         - Set the cookie value(s).
- *   httpSetExpect()         - Set the Expect: header in a request.
- *   httpSetField()          - Set the value of an HTTP header.
- *   httpSetLength()         - Set the content-length and content-encoding.
- *   httpSetTimeout()        - Set read/write timeouts and an optional
- *                             callback.
- *   httpTrace()             - Send an TRACE request to the server.
- *   _httpUpdate()           - Update the current HTTP status for incoming
- *                             data.
- *   httpUpdate()            - Update the current HTTP state for incoming
- *                             data.
- *   _httpWait()             - Wait for data available on a connection (no
- *                             flush).
- *   httpWait()              - Wait for data available on a connection.
- *   httpWrite()             - Write data to a HTTP connection.
- *   httpWrite2()            - Write data to a HTTP connection.
- *   _httpWriteCDSA()        - Write function for the CDSA library.
- *   _httpWriteGNUTLS()       - Write function for the GNU TLS library.
- *   http_bio_ctrl()         - Control the HTTP connection.
- *   http_bio_free()         - Free OpenSSL data.
- *   http_bio_new()          - Initialize an OpenSSL BIO structure.
- *   http_bio_puts()         - Send a string for OpenSSL.
- *   http_bio_read()         - Read data for OpenSSL.
- *   http_bio_write()        - Write data for OpenSSL.
- *   http_debug_hex()        - Do a hex dump of a buffer.
- *   http_field()            - Return the field index for a field name.
- *   http_read_ssl()         - Read from a SSL/TLS connection.
- *   http_send()             - Send a request with all fields and the trailing
- *                             blank line.
- *   http_set_credentials()   - Set the SSL/TLS credentials.
- *   http_set_timeout()       - Set the socket timeout values.
- *   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_upgrade()          - Force upgrade to TLS encryption.
- *   http_write()            - Write a buffer to a HTTP connection.
- *   http_write_chunk()       - Write a chunked buffer.
- *   http_write_ssl()        - Write to a SSL/TLS connection.
+ *   httpAcceptConnection()      - Accept a new HTTP client connection from
+ *                                 the specified listening socket.
+ *   httpAddCredential()         - Allocates and adds a single credential to
+ *                                 an array.
+ *   _httpBIOMethods()           - Get the OpenSSL BIO methods for HTTP
+ *                                 connections.
+ *   httpBlocking()              - Set blocking/non-blocking behavior on a
+ *                                 connection.
+ *   httpCheck()                 - Check to see if there is a pending response
+ *                                 from the server.
+ *   httpClearCookie()           - Clear the cookie value(s).
+ *   httpClearFields()           - Clear HTTP request fields.
+ *   httpClose()                 - Close an HTTP connection.
+ *   httpConnect()               - Connect to a HTTP server.
+ *   httpConnect2()              - Connect to a HTTP server.
+ *   httpConnectEncrypt()        - Connect to a HTTP server using encryption.
+ *   httpCopyCredentials()       - Copy the credentials associated with an
+ *                                 encrypted connection.
+ *   _httpCreate()               - Create an unconnected HTTP connection.
+ *   _httpCreateCredentials()    - Create credentials in the internal format.
+ *   httpDelete()                - Send a DELETE request to the server.
+ *   _httpDisconnect()           - Disconnect a HTTP connection.
+ *   httpEncryption()            - Set the required encryption on the link.
+ *   httpError()                 - Get the last error on a connection.
+ *   httpFlush()                 - Flush data from a HTTP connection.
+ *   httpFlushWrite()            - Flush data in write buffer.
+ *   _httpFreeCredentials()      - Free internal credentials.
+ *   httpFreeCredentials()       - Free an array of credentials.
+ *   httpGet()                   - Send a GET request to the server.
+ *   httpGetContentEncoding()     - Get a common content encoding, if any,
+ *                                  between the client and server.
+ *   httpGetAuthString()         - Get the current authorization string.
+ *   httpGetBlocking()           - Get the blocking/non-block state of a
+ *                                 connection.
+ *   httpGetCookie()             - Get any cookie data from the response.
+ *   httpGetExpect()              - Get the value of the Expect header, if any.
+ *   httpGetFd()                 - Get the file descriptor associated with a
+ *                                 connection.
+ *   httpGetField()              - Get a field value from a request/response.
+ *   httpGetLength()             - Get the amount of data remaining from the
+ *                                 content-length or transfer-encoding fields.
+ *   httpGetLength2()            - Get the amount of data remaining from the
+ *                                 content-length or transfer-encoding fields.
+ *   httpGets()                  - Get a line of text from a HTTP connection.
+ *   httpGetState()              - Get the current state of the HTTP request.
+ *   httpGetStatus()             - Get the status of the last HTTP request.
+ *   httpGetSubField()           - Get a sub-field value.
+ *   httpGetSubField2()          - Get a sub-field value.
+ *   httpGetVersion()            - Get the HTTP version at the other end.
+ *   httpHead()                  - Send a HEAD request to the server.
+ *   httpInitialize()            - Initialize the HTTP interface library and
+ *                                 set the default HTTP proxy (if any).
+ *   httpOptions()               - Send an OPTIONS request to the server.
+ *   httpPeek()                  - Peek at data from a HTTP connection.
+ *   httpPost()                  - Send a POST request to the server.
+ *   httpPrintf()                - Print a formatted string to a HTTP
+ *                                 connection.
+ *   httpPut()                   - Send a PUT request to the server.
+ *   httpRead()                  - Read data from a HTTP connection.
+ *   httpRead2()                 - Read data from a HTTP connection.
+ *   _httpReadCDSA()             - Read function for the CDSA library.
+ *   _httpReadGNUTLS()           - Read function for the GNU TLS library.
+ *   httpReadRequest()           - Read a HTTP request from a connection.
+ *   httpReconnect()             - Reconnect to a HTTP server.
+ *   httpReconnect2()            - Reconnect to a HTTP server with timeout and
+ *                                 optional cancel.
+ *   httpSetAuthString()         - Set the current authorization string.
+ *   httpSetCredentials()        - Set the credentials associated with an
+ *                                 encrypted connection.
+ *   httpSetCookie()             - Set the cookie value(s).
+ *   httpSetExpect()             - Set the Expect: header in a request.
+ *   httpSetField()              - Set the value of an HTTP header.
+ *   httpSetLength()             - Set the content-length and
+ *                                 content-encoding.
+ *   httpSetTimeout()            - Set read/write timeouts and an optional
+ *                                 callback.
+ *   httpTrace()                 - Send an TRACE request to the server.
+ *   _httpUpdate()               - Update the current HTTP status for incoming
+ *                                 data.
+ *   httpUpdate()                - Update the current HTTP state for incoming
+ *                                 data.
+ *   _httpWait()                 - Wait for data available on a connection (no
+ *                                 flush).
+ *   httpWait()                  - Wait for data available on a connection.
+ *   httpWrite()                 - Write data to a HTTP connection.
+ *   httpWrite2()                - Write data to a HTTP connection.
+ *   _httpWriteCDSA()            - Write function for the CDSA library.
+ *   _httpWriteGNUTLS()          - Write function for the GNU TLS library.
+ *   httpWriteResponse()         - Write a HTTP response to a client
+ *                                 connection.
+ *   http_bio_ctrl()             - Control the HTTP connection.
+ *   http_bio_free()             - Free OpenSSL data.
+ *   http_bio_new()              - Initialize an OpenSSL BIO structure.
+ *   http_bio_puts()             - Send a string for OpenSSL.
+ *   http_bio_read()             - Read data for OpenSSL.
+ *   http_bio_write()            - Write data for OpenSSL.
+ *   http_content_coding_finish() - Finish doing any content encoding.
+ *   http_content_coding_start()  - Start doing content encoding.
+ *   http_debug_hex()            - Do a hex dump of a buffer.
+ *   http_field()                - Return the field index for a field name.
+ *   http_read_ssl()             - Read from a SSL/TLS connection.
+ *   http_send()                 - Send a request with all fields and the
+ *                                 trailing blank line.
+ *   http_set_credentials()      - Set the SSL/TLS credentials.
+ *   http_set_length()            - Set the data_encoding and data_remaining
+ *                                  values.
+ *   http_set_timeout()          - Set the socket timeout values.
+ *   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_upgrade()              - Force upgrade to TLS encryption.
+ *   http_write()                - Write a buffer to a HTTP connection.
+ *   http_write_chunk()          - Write a chunked buffer.
+ *   http_write_ssl()            - Write to a SSL/TLS connection.
  */
 
 /*
  * Local functions...
  */
 
+#ifdef HAVE_LIBZ
+static void            http_content_coding_finish(http_t *http);
+static void            http_content_coding_start(http_t *http,
+                                                 const char *value);
+#endif /* HAVE_LIBZ */
 #ifdef DEBUG
 static void            http_debug_hex(const char *prefix, const char *buffer,
                                       int bytes);
@@ -160,6 +180,7 @@ static int          http_read_ssl(http_t *http, char *buf, int len);
 static int             http_set_credentials(http_t *http);
 #  endif /* HAVE_CDSASSL ** HAVE_SECCERTIFICATECOPYDATA */
 #endif /* HAVE_SSL */
+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 HAVE_SSL
@@ -202,25 +223,31 @@ static const char * const http_fields[] =
                          "Transfer-Encoding",
                          "Upgrade",
                          "User-Agent",
-                         "WWW-Authenticate"
+                         "WWW-Authenticate",
+                         "Accept-Encoding",
+                         "Allow",
+                         "Server"
                        };
 #ifdef DEBUG
 static const char * const http_states[] =
                        {
-                         "HTTP_WAITING",
-                         "HTTP_OPTIONS",
-                         "HTTP_GET",
-                         "HTTP_GET_SEND",
-                         "HTTP_HEAD",
-                         "HTTP_POST",
-                         "HTTP_POST_RECV",
-                         "HTTP_POST_SEND",
-                         "HTTP_PUT",
-                         "HTTP_PUT_RECV",
-                         "HTTP_DELETE",
-                         "HTTP_TRACE",
-                         "HTTP_CLOSE",
-                         "HTTP_STATUS"
+                         "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 */
 
@@ -253,6 +280,91 @@ static BIO_METHOD  http_bio_methods =
 #endif /* HAVE_SSL && HAVE_LIBSSL */
 
 
+/*
+ * 'httpAcceptConnection()' - Accept a new HTTP client connection from the
+ *                            specified listening socket.
+ *
+ * @since CUPS 1.7@
+ */
+
+http_t *                               /* O - HTTP connection or @code NULL@ */
+httpAcceptConnection(int fd,           /* I - Listen socket file descriptor */
+                     int blocking)     /* I - 1 if the connection should be
+                                              blocking, 0 otherwise */
+{
+  http_t               *http;          /* HTTP connection */
+  http_addrlist_t      addrlist;       /* Dummy address list */
+  socklen_t            addrlen;        /* Length of address */
+  int                  val;            /* Socket option value */
+
+
+ /*
+  * Range check input...
+  */
+
+  if (fd < 0)
+    return (NULL);
+
+ /*
+  * Create the client connection...
+  */
+
+  memset(&addrlist, 0, sizeof(addrlist));
+
+  if ((http = _httpCreate(NULL, 0, &addrlist, AF_UNSPEC,
+                          HTTP_ENCRYPTION_IF_REQUESTED, blocking,
+                          _HTTP_MODE_SERVER)) == NULL)
+    return (NULL);
+
+ /*
+  * Accept the client and get the remote address...
+  */
+
+  addrlen = sizeof(http_addr_t);
+
+  if ((http->fd = accept(fd, (struct sockaddr *)&(http->addrlist->addr),
+                        &addrlen)) < 0)
+  {
+    _cupsSetHTTPError(HTTP_STATUS_ERROR);
+    httpClose(http);
+
+    return (NULL);
+  }
+
+  httpAddrString(&(http->addrlist->addr), http->hostname,
+                sizeof(http->hostname));
+
+#ifdef SO_NOSIGPIPE
+ /*
+  * Disable SIGPIPE for this socket.
+  */
+
+  val = 1;
+  setsockopt(http->fd, SOL_SOCKET, SO_NOSIGPIPE, &val, sizeof(val));
+#endif /* SO_NOSIGPIPE */
+
+ /*
+  * Using TCP_NODELAY improves responsiveness, especially on systems
+  * with a slow loopback interface.  Since we write large buffers
+  * when sending print files and requests, there shouldn't be any
+  * performance penalty for this...
+  */
+
+  val = 1;
+  setsockopt(http->fd, IPPROTO_TCP, TCP_NODELAY, (char *)&val, sizeof(val));
+
+#ifdef FD_CLOEXEC
+ /*
+  * Close this socket when starting another process...
+  */
+
+  fcntl(http->fd, F_SETFD, FD_CLOEXEC);
+#endif /* FD_CLOEXEC */
+
+  return (http);
+}
+
+
 /*
  * 'httpAddCredential()' - Allocates and adds a single credential to an array.
  *
@@ -355,13 +467,19 @@ httpClearCookie(http_t *http)             /* I - Connection to server */
 void
 httpClearFields(http_t *http)          /* I - Connection to server */
 {
+  DEBUG_printf(("httpClearFields(http=%p)", http));
+
   if (http)
   {
     memset(http->fields, 0, sizeof(http->fields));
-    if (http->hostname[0] == '/')
-      httpSetField(http, HTTP_FIELD_HOST, "localhost");
-    else
-      httpSetField(http, HTTP_FIELD_HOST, http->hostname);
+
+    if (http->mode == _HTTP_MODE_CLIENT)
+    {
+      if (http->hostname[0] == '/')
+       httpSetField(http, HTTP_FIELD_HOST, "localhost");
+      else
+       httpSetField(http, HTTP_FIELD_HOST, http->hostname);
+    }
 
     if (http->field_authorization)
     {
@@ -369,6 +487,24 @@ httpClearFields(http_t *http)              /* I - Connection to server */
       http->field_authorization = NULL;
     }
 
+    if (http->accept_encoding)
+    {
+      _cupsStrFree(http->accept_encoding);
+      http->accept_encoding = NULL;
+    }
+
+    if (http->allow)
+    {
+      _cupsStrFree(http->allow);
+      http->allow = NULL;
+    }
+
+    if (http->server)
+    {
+      _cupsStrFree(http->server);
+      http->server = NULL;
+    }
+
     http->expect = (http_status_t)0;
   }
 }
@@ -435,7 +571,7 @@ httpClose(http_t *http)                     /* I - Connection to server */
 /*
  * 'httpConnect()' - Connect to a HTTP server.
  *
- * This function is deprecated - use @link httpConnectEncrypt@ instead.
+ * This function is deprecated - use @link httpConnect2@ instead.
  *
  * @deprecated@
  */
@@ -444,52 +580,83 @@ http_t *                          /* O - New HTTP connection */
 httpConnect(const char *host,          /* I - Host to connect to */
             int        port)           /* I - Port number */
 {
-  return (httpConnectEncrypt(host, port, HTTP_ENCRYPT_IF_REQUESTED));
+  return (httpConnect2(host, port, NULL, AF_UNSPEC, HTTP_ENCRYPT_IF_REQUESTED,
+                       1, 30000, NULL));
 }
 
 
 /*
- * 'httpConnectEncrypt()' - Connect to a HTTP server using encryption.
+ * 'httpConnect2()' - Connect to a HTTP server.
+ *
+ * @since CUPS 1.7@
  */
 
 http_t *                               /* O - New HTTP connection */
-httpConnectEncrypt(
+httpConnect2(
     const char        *host,           /* I - Host to connect to */
     int               port,            /* I - Port number */
-    http_encryption_t encryption)      /* I - Type of encryption to use */
+    http_addrlist_t   *addrlist,       /* I - List of addresses or NULL to lookup */
+    int               family,          /* I - Address family to use or @code AF_UNSPEC@ for any */
+    http_encryption_t encryption,      /* I - Type of encryption to use */
+    int               blocking,                /* I - 1 for blocking connection, 0 for non-blocking */
+    int               msec,            /* I - Connection timeout in milliseconds */
+    int               *cancel)         /* I - Pointer to "cancel" variable */
 {
   http_t       *http;                  /* New HTTP connection */
 
 
-  DEBUG_printf(("httpConnectEncrypt(host=\"%s\", port=%d, encryption=%d)",
-                host, port, encryption));
+  DEBUG_printf(("httpConnect2(host=\"%s\", port=%d, addrlist=%p, family=%d, "
+                "encryption=%d, blocking=%d, msec=%d, cancel=%p)", host, port,
+                addrlist, family, encryption, blocking, msec, cancel));
 
  /*
   * Create the HTTP structure...
   */
 
-  if ((http = _httpCreate(host, port, NULL, encryption, AF_UNSPEC)) == NULL)
+  if ((http = _httpCreate(host, port, addrlist, family, encryption, blocking,
+                          _HTTP_MODE_CLIENT)) == NULL)
     return (NULL);
 
  /*
   * Connect to the remote system...
   */
 
-  if (!httpReconnect(http))
+  if (!httpReconnect2(http, msec, cancel))
     return (http);
 
  /*
   * Could not connect to any known address - bail out!
   */
 
-  httpAddrFreeList(http->addrlist);
-
-  free(http);
+  httpClose(http);
 
   return (NULL);
 }
 
 
+/*
+ * 'httpConnectEncrypt()' - Connect to a HTTP server using encryption.
+ *
+ * This function is now deprecated. Please use the @link httpConnect2@ function
+ * instead.
+ *
+ * @deprecated@
+ */
+
+http_t *                               /* O - New HTTP connection */
+httpConnectEncrypt(
+    const char        *host,           /* I - Host to connect to */
+    int               port,            /* I - Port number */
+    http_encryption_t encryption)      /* I - Type of encryption to use */
+{
+  DEBUG_printf(("httpConnectEncrypt(host=\"%s\", port=%d, encryption=%d)",
+                host, port, encryption));
+
+  return (httpConnect2(host, port, NULL, AF_UNSPEC, encryption, 1, 30000,
+                       NULL));
+}
+
+
 /*
  * 'httpCopyCredentials()' - Copy the credentials associated with an encrypted
  *                          connection.
@@ -567,17 +734,21 @@ _httpCreate(
     const char        *host,           /* I - Hostname */
     int               port,            /* I - Port number */
     http_addrlist_t   *addrlist,       /* I - Address list or NULL */
+    int               family,          /* I - Address family or AF_UNSPEC */
     http_encryption_t encryption,      /* I - Encryption to use */
-    int               family)          /* I - Address family or AF_UNSPEC */
+    int               blocking,                /* I - 1 for blocking mode */
+    _http_mode_t      mode)            /* I - _HTTP_MODE_CLIENT or _SERVER */
 {
   http_t       *http;                  /* New HTTP connection */
   char         service[255];           /* Service name */
+  http_addrlist_t *myaddrlist = NULL;  /* My address list */
 
 
-  DEBUG_printf(("4_httpCreate(host=\"%s\", port=%d, encryption=%d)",
-                host, port, encryption));
+  DEBUG_printf(("4_httpCreate(host=\"%s\", port=%d, addrlist=%p, family=%d, "
+                "encryption=%d, blocking=%d, mode=%d)", host, port, addrlist,
+                family, encryption, blocking, mode));
 
-  if (!host)
+  if (!host && mode == _HTTP_MODE_CLIENT)
     return (NULL);
 
   httpInitialize();
@@ -586,11 +757,19 @@ _httpCreate(
   * Lookup the host...
   */
 
-  sprintf(service, "%d", port);
+  if (addrlist)
+  {
+    myaddrlist = httpAddrCopyList(addrlist);
+  }
+  else
+  {
+    snprintf(service, sizeof(service), "%d", port);
+
+    myaddrlist = httpAddrGetList(host, family, service);
+  }
 
-  if (!addrlist)
-    if ((addrlist = httpAddrGetList(host, family, service)) == NULL)
-      return (NULL);
+  if (!myaddrlist)
+    return (NULL);
 
  /*
   * Allocate memory for the structure...
@@ -607,20 +786,22 @@ _httpCreate(
   * Initialize the HTTP data...
   */
 
+  http->mode     = mode;
   http->activity = time(NULL);
-  http->addrlist = addrlist;
-  http->blocking = 1;
+  http->addrlist = myaddrlist;
+  http->blocking = blocking;
   http->fd       = -1;
 #ifdef HAVE_GSSAPI
   http->gssctx   = GSS_C_NO_CONTEXT;
   http->gssname  = GSS_C_NO_NAME;
 #endif /* HAVE_GSSAPI */
-  http->version  = HTTP_1_1;
+  http->version  = HTTP_VERSION_1_1;
 
-  strlcpy(http->hostname, host, sizeof(http->hostname));
+  if (host)
+    strlcpy(http->hostname, host, sizeof(http->hostname));
 
   if (port == 443)                     /* Always use encryption for https */
-    http->encryption = HTTP_ENCRYPT_ALWAYS;
+    http->encryption = HTTP_ENCRYPTION_ALWAYS;
   else
     http->encryption = encryption;
 
@@ -785,7 +966,7 @@ httpFlush(http_t *http)                     /* I - Connection to server */
 
 
   DEBUG_printf(("httpFlush(http=%p), state=%s", http,
-                http_states[http->state]));
+                http_states[http->state + 1]));
 
  /*
   * Temporarily set non-blocking mode so we don't get stuck in httpRead()...
@@ -808,13 +989,16 @@ httpFlush(http_t *http)                   /* I - Connection to server */
 
   http->blocking = blocking;
 
-  if (http->state == oldstate && http->state != HTTP_WAITING && http->fd >= 0)
+  if (http->state == oldstate && http->state != HTTP_STATE_WAITING &&
+      http->fd >= 0)
   {
    /*
     * Didn't get the data back, so close the current connection.
     */
 
-    http->state = HTTP_WAITING;
+    DEBUG_puts("1httpFlush: Setting state to HTTP_STATE_WAITING and closing.");
+
+    http->state = HTTP_STATE_WAITING;
 
 #ifdef HAVE_SSL
     if (http->tls)
@@ -844,7 +1028,8 @@ httpFlushWrite(http_t *http)               /* I - Connection to server */
   int  bytes;                          /* Bytes written */
 
 
-  DEBUG_printf(("httpFlushWrite(http=%p)", http));
+  DEBUG_printf(("httpFlushWrite(http=%p) data_encoding=%d", http,
+                http ? http->data_encoding : -1));
 
   if (!http || !http->wused)
   {
@@ -853,7 +1038,7 @@ httpFlushWrite(http_t *http)               /* I - Connection to server */
     return (0);
   }
 
-  if (http->data_encoding == HTTP_ENCODE_CHUNKED)
+  if (http->data_encoding == HTTP_ENCODING_CHUNKED)
     bytes = http_write_chunk(http, http->wbuffer, http->wused);
   else
     bytes = http_write(http, http->wbuffer, http->wused);
@@ -929,6 +1114,94 @@ httpGet(http_t     *http,         /* I - Connection to server */
 }
 
 
+/*
+ * 'httpGetContentEncoding()' - Get a common content encoding, if any, between
+ *                              the client and server.
+ *
+ * This function uses the value of the Accepts-Encoding HTTP header and must be
+ * called after receiving a response from the server or a request from the
+ * client.  The value returned can be use in subsequent requests (for clients)
+ * or in the response (for servers) in order to compress the content stream.
+ *
+ * @since CUPS 1.7@
+ */
+
+const char *                           /* O - Content-Coding value or
+                                              @code NULL@ for the identity
+                                              coding. */
+httpGetContentEncoding(http_t *http)   /* I - Connection to client/server */
+{
+#ifdef HAVE_LIBZ
+  if (http && http->accept_encoding)
+  {
+    int                i;                      /* Looping var */
+    char       temp[HTTP_MAX_VALUE],   /* Copy of Accepts-Encoding value */
+               *start,                 /* Start of coding value */
+               *end;                   /* End of coding value */
+    double     qvalue;                 /* "qvalue" for coding */
+    struct lconv *loc = localeconv();  /* Locale data */
+    static const char * const codings[] =
+    {                                  /* Supported content codings */
+      "deflate",
+      "gzip",
+      "x-deflate",
+      "x-gzip"
+    };
+
+    strlcpy(temp, http->accept_encoding, sizeof(temp));
+
+    for (start = temp; *start; start = end)
+    {
+     /*
+      * Find the end of the coding name...
+      */
+
+      qvalue = 1.0;
+      end    = start;
+      while (*end && *end != ';' && *end != ',' && !isspace(*end & 255))
+        end ++;
+
+      if (*end == ';')
+      {
+       /*
+        * Grab the qvalue as needed...
+        */
+
+        if (!strncmp(end, ";q=", 3))
+          qvalue = _cupsStrScand(end + 3, NULL, loc);
+
+       /*
+        * Skip past all attributes...
+        */
+
+        *end++ = '\0';
+        while (*end && *end != ',' && !isspace(*end & 255))
+          end ++;
+      }
+      else if (*end)
+        *end++ = '\0';
+
+      while (*end && isspace(*end & 255))
+       end ++;
+
+     /*
+      * Check value if it matches something we support...
+      */
+
+      if (qvalue <= 0.0)
+        continue;
+
+      for (i = 0; i < (int)(sizeof(codings) / sizeof(codings[0])); i ++)
+        if (!strcmp(start, codings[i]))
+          return (codings[i]);
+    }
+  }
+#endif /* HAVE_LIBZ */
+
+  return (NULL);
+}
+
+
 /*
  * 'httpGetAuthString()' - Get the current authorization string.
  *
@@ -976,6 +1249,25 @@ httpGetCookie(http_t *http)               /* I - HTTP connecion */
 }
 
 
+/*
+ * 'httpGetExpect()' - Get the value of the Expect header, if any.
+ *
+ * Returns @code HTTP_STATUS_NONE@ if there is no Expect header, otherwise
+ * returns the expected HTTP status code, typically @code HTTP_STATUS_CONTINUE@.
+ *
+ * @since CUPS 1.7@
+ */
+
+http_status_t                          /* O - Expect: status, if any */
+httpGetExpect(http_t *http)            /* I - Connection to client */
+{
+  if (!http)
+    return (HTTP_STATUS_ERROR);
+  else
+    return (http->expect);
+}
+
+
 /*
  * 'httpGetFd()' - Get the file descriptor associated with a connection.
  *
@@ -999,18 +1291,32 @@ httpGetField(http_t       *http, /* I - Connection to server */
 {
   if (!http || field <= HTTP_FIELD_UNKNOWN || field >= HTTP_FIELD_MAX)
     return (NULL);
-  else if (field == HTTP_FIELD_AUTHORIZATION &&
-          http->field_authorization)
+
+  switch (field)
   {
-   /*
-    * Special case for WWW-Authenticate: as its contents can be
-    * longer than HTTP_MAX_VALUE...
-    */
+    case HTTP_FIELD_ACCEPT_ENCODING :
+        return (http->accept_encoding);
+
+    case HTTP_FIELD_ALLOW :
+        return (http->allow);
+
+    case HTTP_FIELD_SERVER :
+        return (http->server);
+
+    case HTTP_FIELD_AUTHORIZATION :
+        if (http->field_authorization)
+       {
+        /*
+         * Special case for WWW-Authenticate: as its contents can be
+         * longer than HTTP_MAX_VALUE...
+         */
+
+         return (http->field_authorization);
+       }
 
-    return (http->field_authorization);
+    default :
+        return (http->fields[field]);
   }
-  else
-    return (http->fields[field]);
 }
 
 
@@ -1055,8 +1361,11 @@ httpGetLength(http_t *http)              /* I - Connection to server */
 off_t                                  /* O - Content length */
 httpGetLength2(http_t *http)           /* I - Connection to server */
 {
+  off_t                        remaining;      /* Remaining length */
+
+
   DEBUG_printf(("2httpGetLength2(http=%p), state=%s", http,
-                http_states[http->state]));
+                http_states[http->state + 1]));
 
   if (!http)
     return (-1);
@@ -1064,48 +1373,46 @@ httpGetLength2(http_t *http)            /* I - Connection to server */
   if (!_cups_strcasecmp(http->fields[HTTP_FIELD_TRANSFER_ENCODING], "chunked"))
   {
     DEBUG_puts("4httpGetLength2: chunked request!");
-
-    http->data_encoding  = HTTP_ENCODE_CHUNKED;
-    http->data_remaining = 0;
+    remaining = 0;
   }
   else
   {
-    http->data_encoding = HTTP_ENCODE_LENGTH;
-
    /*
     * The following is a hack for HTTP servers that don't send a
-    * content-length or transfer-encoding field...
+    * Content-Length or Transfer-Encoding field...
     *
-    * If there is no content-length then the connection must close
+    * If there is no Content-Length then the connection must close
     * after the transfer is complete...
     */
 
     if (!http->fields[HTTP_FIELD_CONTENT_LENGTH][0])
     {
      /*
-      * Default content length is 0 for errors and 2^31-1 for other
-      * successful requests...
+      * Default content length is 0 for errors and certain types of operations,
+      * and 2^31-1 for other successful requests...
       */
 
-      if (http->status >= HTTP_MULTIPLE_CHOICES)
-        http->data_remaining = 0;
+      if (http->status >= HTTP_MULTIPLE_CHOICES ||
+          http->state == HTTP_STATE_OPTIONS ||
+          (http->state == HTTP_STATE_GET && http->mode == _HTTP_MODE_SERVER) ||
+          http->state == HTTP_STATE_HEAD ||
+          (http->state == HTTP_STATE_PUT && http->mode == _HTTP_MODE_CLIENT) ||
+          http->state == HTTP_STATE_DELETE ||
+          http->state == HTTP_STATE_TRACE ||
+          http->state == HTTP_STATE_CONNECT)
+        remaining = 0;
       else
-        http->data_remaining = 2147483647;
+        remaining = 2147483647;
     }
-    else
-      http->data_remaining = strtoll(http->fields[HTTP_FIELD_CONTENT_LENGTH],
-                                     NULL, 10);
+    else if ((remaining = strtoll(http->fields[HTTP_FIELD_CONTENT_LENGTH],
+                                 NULL, 10)) < 0)
+      remaining = -1;
 
     DEBUG_printf(("4httpGetLength2: content_length=" CUPS_LLFMT,
-                  CUPS_LLCAST http->data_remaining));
+                  CUPS_LLCAST remaining));
   }
 
-  if (http->data_remaining <= INT_MAX)
-    http->_data_remaining = (int)http->data_remaining;
-  else
-    http->_data_remaining = INT_MAX;
-
-  return (http->data_remaining);
+  return (remaining);
 }
 
 
@@ -1300,7 +1607,7 @@ httpGets(char   *line,                    /* I - Line to read into */
 http_state_t                           /* O - HTTP state */
 httpGetState(http_t *http)             /* I - Connection to server */
 {
-  return (http ? http->state : HTTP_ERROR);
+  return (http ? http->state : HTTP_STATE_ERROR);
 }
 
 
@@ -1472,7 +1779,7 @@ httpGetSubField2(http_t       *http,      /* I - Connection to server */
 http_version_t                         /* O - Version number */
 httpGetVersion(http_t *http)           /* I - Connection to server */
 {
-  return (http ? http->version : HTTP_1_0);
+  return (http ? http->version : HTTP_VERSION_1_0);
 }
 
 
@@ -1584,17 +1891,19 @@ httpOptions(http_t     *http,           /* I - Connection to server */
 
 
 /*
- * '_httpPeek()' - Peek at data from a HTTP connection.
+ * 'httpPeek()' - Peek at data from a HTTP connection.
  *
  * This function copies available data from the given HTTP connection, reading
  * a buffer as needed.  The data is still available for reading using
  * @link httpRead@ or @link httpRead2@.
  *
  * For non-blocking connections the usual timeouts apply.
+ *
+ * @since CUPS 1.7@
  */
 
 ssize_t                                        /* O - Number of bytes copied */
-_httpPeek(http_t *http,                        /* I - Connection to server */
+httpPeek(http_t *http,                 /* I - Connection to server */
           char   *buffer,              /* I - Buffer for data */
          size_t length)                /* I - Maximum number of bytes */
 {
@@ -1602,7 +1911,7 @@ _httpPeek(http_t *http,                   /* I - Connection to server */
   char         len[32];                /* Length string */
 
 
-  DEBUG_printf(("_httpPeek(http=%p, buffer=%p, length=" CUPS_LLFMT ")",
+  DEBUG_printf(("httpPeek(http=%p, buffer=%p, length=" CUPS_LLFMT ")",
                 http, buffer, CUPS_LLCAST length));
 
   if (http == NULL || buffer == NULL)
@@ -1614,26 +1923,26 @@ _httpPeek(http_t *http,                 /* I - Connection to server */
   if (length <= 0)
     return (0);
 
-  if (http->data_encoding == HTTP_ENCODE_CHUNKED &&
+  if (http->data_encoding == HTTP_ENCODING_CHUNKED &&
       http->data_remaining <= 0)
   {
-    DEBUG_puts("2_httpPeek: Getting chunk length...");
+    DEBUG_puts("2httpPeek: Getting chunk length...");
 
     if (httpGets(len, sizeof(len), http) == NULL)
     {
-      DEBUG_puts("1_httpPeek: Could not get length!");
+      DEBUG_puts("1httpPeek: Could not get length!");
       return (0);
     }
 
     http->data_remaining = strtoll(len, NULL, 16);
     if (http->data_remaining < 0)
     {
-      DEBUG_puts("1_httpPeek: Negative chunk length!");
+      DEBUG_puts("1httpPeek: Negative chunk length!");
       return (0);
     }
   }
 
-  DEBUG_printf(("2_httpPeek: data_remaining=" CUPS_LLFMT,
+  DEBUG_printf(("2httpPeek: data_remaining=" CUPS_LLFMT,
                 CUPS_LLCAST http->data_remaining));
 
   if (http->data_remaining <= 0)
@@ -1643,19 +1952,22 @@ _httpPeek(http_t *http,                 /* I - Connection to server */
     * data, go idle...
     */
 
-    if (http->data_encoding == HTTP_ENCODE_CHUNKED)
+    if (http->data_encoding == HTTP_ENCODING_CHUNKED)
       httpGets(len, sizeof(len), http);
 
-    if (http->state == HTTP_POST_RECV)
+    if (http->state == HTTP_STATE_POST_RECV)
       http->state ++;
     else
-      http->state = HTTP_WAITING;
+      http->state = HTTP_STATE_WAITING;
+
+    DEBUG_printf(("1httpPeek: 0-length chunk, set state to %s.",
+                  http_states[http->state + 1]));
 
    /*
     * Prevent future reads for this request...
     */
 
-    http->data_encoding = HTTP_ENCODE_LENGTH;
+    http->data_encoding = HTTP_ENCODING_FIELDS;
 
     return (0);
   }
@@ -1686,7 +1998,7 @@ _httpPeek(http_t *http,                   /* I - Connection to server */
     else
       buflen = http->data_remaining;
 
-    DEBUG_printf(("2_httpPeek: Reading %d bytes into buffer.", (int)buflen));
+    DEBUG_printf(("2httpPeek: Reading %d bytes into buffer.", (int)buflen));
 
     do
     {
@@ -1738,10 +2050,10 @@ _httpPeek(http_t *http,                 /* I - Connection to server */
     }
     while (bytes < 0);
 
-    DEBUG_printf(("2_httpPeek: Read " CUPS_LLFMT " bytes into buffer.",
+    DEBUG_printf(("2httpPeek: Read " CUPS_LLFMT " bytes into buffer.",
                   CUPS_LLCAST bytes));
 #ifdef DEBUG
-    http_debug_hex("_httpPeek", http->buffer, (int)bytes);
+    http_debug_hex("httpPeek", http->buffer, (int)bytes);
 #endif /* DEBUG */
 
     http->used = bytes;
@@ -1754,7 +2066,7 @@ _httpPeek(http_t *http,                   /* I - Connection to server */
 
     bytes = (ssize_t)length;
 
-    DEBUG_printf(("2_httpPeek: grabbing %d bytes from input buffer...",
+    DEBUG_printf(("2httpPeek: grabbing %d bytes from input buffer...",
                   (int)bytes));
 
     memcpy(buffer, http->buffer, length);
@@ -1783,12 +2095,21 @@ _httpPeek(http_t *http,                 /* I - Connection to server */
   }
 
 #ifdef DEBUG
-  http_debug_hex("_httpPeek", buffer, (int)bytes);
+  http_debug_hex("httpPeek", buffer, (int)bytes);
 #endif /* DEBUG */
 
   return (bytes);
 }
 
+ssize_t                                        /* O - Number of bytes copied */
+_httpPeek(http_t *http,                        /* I - Connection to server */
+          char   *buffer,              /* I - Buffer for data */
+         size_t length)                /* I - Maximum number of bytes */
+{
+ /* TODO: Remove in CUPS 1.8 */
+  return (httpPeek(http, buffer, length));
+}
+
 
 /*
  * 'httpPost()' - Send a POST request to the server.
@@ -1824,9 +2145,9 @@ httpPrintf(http_t     *http,              /* I - Connection to server */
   bytes = vsnprintf(buf, sizeof(buf), format, ap);
   va_end(ap);
 
-  DEBUG_printf(("3httpPrintf: %s", buf));
+  DEBUG_printf(("3httpPrintf: (%d bytes) %s", bytes, buf));
 
-  if (http->data_encoding == HTTP_ENCODE_FIELDS)
+  if (http->data_encoding == HTTP_ENCODING_FIELDS)
     return (httpWrite2(http, buf, bytes));
   else
   {
@@ -1889,8 +2210,9 @@ httpRead2(http_t *http,                   /* I - Connection to server */
   char         len[32];                /* Length string */
 
 
-  DEBUG_printf(("httpRead2(http=%p, buffer=%p, length=" CUPS_LLFMT ")",
-                http, buffer, CUPS_LLCAST length));
+  DEBUG_printf(("httpRead2(http=%p, buffer=%p, length=" CUPS_LLFMT
+                ") coding=%d", http, buffer, CUPS_LLCAST length,
+                http->coding));
 
   if (http == NULL || buffer == NULL)
     return (-1);
@@ -1901,7 +2223,7 @@ httpRead2(http_t *http,                   /* I - Connection to server */
   if (length <= 0)
     return (0);
 
-  if (http->data_encoding == HTTP_ENCODE_CHUNKED &&
+  if (http->data_encoding == HTTP_ENCODING_CHUNKED &&
       http->data_remaining <= 0)
   {
     DEBUG_puts("2httpRead2: Getting chunk length...");
@@ -1920,39 +2242,53 @@ httpRead2(http_t *http,                 /* I - Connection to server */
     }
   }
 
-  DEBUG_printf(("2httpRead2: data_remaining=" CUPS_LLFMT,
-                CUPS_LLCAST http->data_remaining));
+  DEBUG_printf(("2httpRead2: data_remaining=" CUPS_LLFMT ", used=%d",
+                CUPS_LLCAST http->data_remaining, http->used));
 
-  if (http->data_remaining <= 0)
+  if (http->data_remaining <= 0 && http->data_encoding != HTTP_ENCODING_FIELDS)
   {
    /*
     * A zero-length chunk ends a transfer; unless we are reading POST
     * data, go idle...
     */
 
-    if (http->data_encoding == HTTP_ENCODE_CHUNKED)
+#ifdef HAVE_LIBZ
+    if (http->coding)
+      http_content_coding_finish(http);
+#endif /* HAVE_LIBZ */
+
+    if (http->data_encoding == HTTP_ENCODING_CHUNKED)
       httpGets(len, sizeof(len), http);
 
-    if (http->state == HTTP_POST_RECV)
+    if (http->state == HTTP_STATE_POST_RECV)
       http->state ++;
     else
-      http->state = HTTP_WAITING;
+      http->state = HTTP_STATE_WAITING;
+
+    DEBUG_printf(("1httpRead2: 0-length chunk, set state to %s.",
+                  http_states[http->state + 1]));
 
    /*
     * Prevent future reads for this request...
     */
 
-    http->data_encoding = HTTP_ENCODE_LENGTH;
+    http->data_encoding = HTTP_ENCODING_FIELDS;
 
     return (0);
   }
-  else if (length > (size_t)http->data_remaining)
+  else if ((http->data_encoding == HTTP_ENCODING_LENGTH ||
+            http->coding == _HTTP_CODING_IDENTITY) &&
+           length > (size_t)http->data_remaining)
     length = (size_t)http->data_remaining;
 
+#ifdef HAVE_LIBZ
+  if (http->used == 0 && (length <= 256 || http->coding))
+#else
   if (http->used == 0 && length <= 256)
+#endif /* HAVE_LIBZ */
   {
    /*
-    * Buffer small reads for better performance...
+    * Buffer small/compressed reads for better performance...
     */
 
     ssize_t    buflen;                 /* Length of read for buffer */
@@ -2034,6 +2370,57 @@ httpRead2(http_t *http,                  /* I - Connection to server */
     http->used = bytes;
   }
 
+#ifdef HAVE_LIBZ
+  if (http->coding)
+  {
+    int                zerr;                   /* Decompressor error */
+    off_t      comp_avail,             /* Maximum bytes for decompression */
+               comp_bytes;             /* Compressed bytes "used" */
+
+    if (http->used > http->data_remaining)
+      comp_avail = http->data_remaining;
+    else
+      comp_avail = http->used;
+
+    DEBUG_printf(("2httpRead2: length=%d, avail_in=%d", (int)length,
+                  (int)comp_avail));
+
+    http->stream.next_in   = (Bytef *)http->buffer;
+    http->stream.avail_in  = comp_avail;
+    http->stream.next_out  = (Bytef *)buffer;
+    http->stream.avail_out = length;
+
+    if ((zerr = inflate(&(http->stream), Z_SYNC_FLUSH)) < Z_OK)
+    {
+      DEBUG_printf(("2httpRead2: zerr=%d", zerr));
+      http->error = EIO;
+      return (-1);
+    }
+
+    bytes      = length - http->stream.avail_out;
+    comp_bytes = comp_avail - http->stream.avail_in;
+
+    DEBUG_printf(("2httpRead2: avail_in=%d, avail_out=%d, bytes=%d, "
+                  "comp_bytes=%d", http->stream.avail_in,
+                  http->stream.avail_out, (int)bytes, (int)comp_bytes));
+
+    if ((http->used - comp_bytes) > 0)
+    {
+      http->used -= comp_bytes;
+      memmove(http->buffer, http->stream.next_in, http->used);
+    }
+    else
+      http->used = 0;
+
+   /*
+    * Adjust remaining bytes since chunk/content lengths are compressed while
+    * CUPS HTTP APIs return uncompressed sizes...
+    */
+
+    http->data_remaining += bytes - comp_bytes;
+  }
+  else
+#endif /* HAVE_LIBZ */
   if (http->used > 0)
   {
     if (length > (size_t)http->used)
@@ -2168,12 +2555,23 @@ httpRead2(http_t *http,                 /* I - Connection to server */
 
   if (http->data_remaining == 0)
   {
-    if (http->data_encoding == HTTP_ENCODE_CHUNKED)
+    if (http->data_encoding == HTTP_ENCODING_CHUNKED)
       httpGets(len, sizeof(len), http);
-    else if (http->state == HTTP_POST_RECV)
-      http->state ++;
     else
-      http->state = HTTP_WAITING;
+    {
+#ifdef HAVE_LIBZ
+      if (http->coding)
+       http_content_coding_finish(http);
+#endif /* HAVE_LIBZ */
+
+      if (http->state == HTTP_STATE_POST_RECV)
+        http->state ++;
+      else
+        http->state = HTTP_STATE_WAITING;
+
+      DEBUG_printf(("1httpRead2: End of content, set state to %s.",
+                    http_states[http->state + 1]));
+    }
   }
 
   return (bytes);
@@ -2289,79 +2687,243 @@ _httpReadGNUTLS(
 
 
 /*
- * 'httpReconnect()' - Reconnect to a HTTP server.
+ * 'httpReadRequest()' - Read a HTTP request from a connection.
+ *
+ * @since CUPS 1.7@
  */
 
-int                                    /* O - 0 on success, non-zero on failure */
-httpReconnect(http_t *http)            /* I - Connection to server */
+http_state_t                           /* O - New state of connection */
+httpReadRequest(http_t *http,          /* I - HTTP connection */
+                char   *uri,           /* I - URI buffer */
+               size_t urilen)          /* I - Size of URI buffer */
 {
-  DEBUG_printf(("httpReconnect(http=%p)", http));
-
-  return (httpReconnect2(http, 30000, NULL));
-}
-
+  char line[4096],                     /* HTTP request line */
+       *req_method,                    /* HTTP request method */
+       *req_uri,                       /* HTTP request URI */
+       *req_version;                   /* HTTP request version number string */
 
-/*
- * 'httpReconnect2()' - Reconnect to a HTTP server with timeout and optional
- *                      cancel.
- */
 
-int                                    /* O - 0 on success, non-zero on failure */
-httpReconnect2(http_t *http,           /* I - Connection to server */
-              int    msec,             /* I - Timeout in milliseconds */
-              int    *cancel)          /* I - Pointer to "cancel" variable */
-{
-  http_addrlist_t      *addr;          /* Connected address */
-#ifdef DEBUG
-  http_addrlist_t      *current;       /* Current address */
-  char                 temp[256];      /* Temporary address string */
-#endif /* DEBUG */
+ /*
+  * Range check input...
+  */
 
+  DEBUG_printf(("httpReadRequest(http=%p, uri=%p, urilen=" CUPS_LLFMT ")",
+                http, uri, CUPS_LLCAST urilen));
 
-  DEBUG_printf(("httpReconnect2(http=%p, msec=%d, cancel=%p)", http, msec,
-                cancel));
+  if (uri)
+    *uri = '\0';
 
-  if (!http)
+  if (!http || !uri || urilen < 1)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
-    return (-1);
+    DEBUG_puts("1httpReadRequest: Bad arguments, returning HTTP_STATE_ERROR.");
+    return (HTTP_STATE_ERROR);
   }
-
-#ifdef HAVE_SSL
-  if (http->tls)
+  else if (http->state != HTTP_STATE_WAITING)
   {
-    DEBUG_puts("2httpReconnect2: Shutting down SSL/TLS...");
-    http_shutdown_ssl(http);
+    DEBUG_printf(("1httpReadRequest: Bad state %s, returning HTTP_STATE_ERROR.",
+                  http_states[http->state + 1]));
+    return (HTTP_STATE_ERROR);
   }
-#endif /* HAVE_SSL */
 
  /*
-  * Close any previously open socket...
+  * Reset state...
   */
 
-  if (http->fd >= 0)
-  {
-    DEBUG_printf(("2httpReconnect2: Closing socket %d...", http->fd));
-
-#ifdef WIN32
-    closesocket(http->fd);
-#else
-    close(http->fd);
-#endif /* WIN32 */
+  httpClearFields(http);
 
-    http->fd = -1;
-  }
+  http->activity       = time(NULL);
+  http->data_encoding  = HTTP_ENCODING_FIELDS;
+  http->data_remaining = 0;
+  http->keep_alive     = HTTP_KEEPALIVE_OFF;
+  http->status         = HTTP_STATUS_OK;
+  http->version        = HTTP_VERSION_1_1;
 
  /*
-  * Reset all state (except fields, which may be reused)...
+  * Read a line from the socket...
   */
 
-  http->state           = HTTP_WAITING;
-  http->status          = HTTP_CONTINUE;
-  http->version         = HTTP_1_1;
+  if (!httpGets(line, sizeof(line), http))
+  {
+    DEBUG_puts("1httpReadRequest: Unable to read, returning HTTP_STATE_ERROR");
+    return (HTTP_STATE_ERROR);
+  }
+
+  if (!line[0])
+  {
+    DEBUG_puts("1httpReadRequest: Blank line, returning HTTP_STATE_WAITING");
+    return (HTTP_STATE_WAITING);
+  }
+
+  DEBUG_printf(("1httpReadRequest: %s", line));
+
+ /*
+  * Parse it...
+  */
+
+  req_method = line;
+  req_uri    = line;
+
+  while (*req_uri && !isspace(*req_uri & 255))
+    req_uri ++;
+
+  if (!*req_uri)
+  {
+    DEBUG_puts("1httpReadRequest: No request URI.");
+    return (HTTP_STATE_ERROR);
+  }
+
+  *req_uri++ = '\0';
+
+  while (*req_uri && isspace(*req_uri & 255))
+    req_uri ++;
+
+  req_version = req_uri;
+
+  while (*req_version && !isspace(*req_version & 255))
+    req_version ++;
+
+  if (!*req_version)
+  {
+    DEBUG_puts("1httpReadRequest: No request protocol version.");
+    return (HTTP_STATE_ERROR);
+  }
+
+  *req_version++ = '\0';
+
+  while (*req_version && isspace(*req_version & 255))
+    req_version ++;
+
+ /*
+  * Validate...
+  */
+
+  if (!strcmp(req_method, "OPTIONS"))
+    http->state = HTTP_STATE_OPTIONS;
+  else if (!strcmp(req_method, "GET"))
+    http->state = HTTP_STATE_GET;
+  else if (!strcmp(req_method, "HEAD"))
+    http->state = HTTP_STATE_HEAD;
+  else if (!strcmp(req_method, "POST"))
+    http->state = HTTP_STATE_POST;
+  else if (!strcmp(req_method, "PUT"))
+    http->state = HTTP_STATE_PUT;
+  else if (!strcmp(req_method, "DELETE"))
+    http->state = HTTP_STATE_DELETE;
+  else if (!strcmp(req_method, "TRACE"))
+    http->state = HTTP_STATE_TRACE;
+  else if (!strcmp(req_method, "CONNECT"))
+    http->state = HTTP_STATE_CONNECT;
+  else
+  {
+    DEBUG_printf(("1httpReadRequest: Unknown method \"%s\".", req_method));
+    return (HTTP_STATE_UNKNOWN_METHOD);
+  }
+
+  DEBUG_printf(("1httpReadRequest: Set state to %s.",
+                http_states[http->state + 1]));
+
+  if (!strcmp(req_version, "HTTP/1.0"))
+  {
+    http->version    = HTTP_VERSION_1_0;
+    http->keep_alive = HTTP_KEEPALIVE_OFF;
+  }
+  else if (!strcmp(req_version, "HTTP/1.1"))
+  {
+    http->version    = HTTP_VERSION_1_1;
+    http->keep_alive = HTTP_KEEPALIVE_ON;
+  }
+  else
+  {
+    DEBUG_printf(("1httpReadRequest: Unknown version \"%s\".", req_version));
+    return (HTTP_STATE_UNKNOWN_VERSION);
+  }
+
+  DEBUG_printf(("1httpReadRequest: URI is \"%s\".", req_uri));
+  strlcpy(uri, req_uri, urilen);
+
+  return (http->state);
+}
+
+
+/*
+ * 'httpReconnect()' - Reconnect to a HTTP server.
+ *
+ * This function is deprecated. Please use the @link httpReconnect2@ function
+ * instead.
+ *
+ * @deprecated@
+ */
+
+int                                    /* O - 0 on success, non-zero on failure */
+httpReconnect(http_t *http)            /* I - Connection to server */
+{
+  DEBUG_printf(("httpReconnect(http=%p)", http));
+
+  return (httpReconnect2(http, 30000, NULL));
+}
+
+
+/*
+ * 'httpReconnect2()' - Reconnect to a HTTP server with timeout and optional
+ *                      cancel.
+ */
+
+int                                    /* O - 0 on success, non-zero on failure */
+httpReconnect2(http_t *http,           /* I - Connection to server */
+              int    msec,             /* I - Timeout in milliseconds */
+              int    *cancel)          /* I - Pointer to "cancel" variable */
+{
+  http_addrlist_t      *addr;          /* Connected address */
+#ifdef DEBUG
+  http_addrlist_t      *current;       /* Current address */
+  char                 temp[256];      /* Temporary address string */
+#endif /* DEBUG */
+
+
+  DEBUG_printf(("httpReconnect2(http=%p, msec=%d, cancel=%p)", http, msec,
+                cancel));
+
+  if (!http)
+  {
+    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
+    return (-1);
+  }
+
+#ifdef HAVE_SSL
+  if (http->tls)
+  {
+    DEBUG_puts("2httpReconnect2: Shutting down SSL/TLS...");
+    http_shutdown_ssl(http);
+  }
+#endif /* HAVE_SSL */
+
+ /*
+  * Close any previously open socket...
+  */
+
+  if (http->fd >= 0)
+  {
+    DEBUG_printf(("2httpReconnect2: Closing socket %d...", http->fd));
+
+#ifdef WIN32
+    closesocket(http->fd);
+#else
+    close(http->fd);
+#endif /* WIN32 */
+
+    http->fd = -1;
+  }
+
+ /*
+  * Reset all state (except fields, which may be reused)...
+  */
+
+  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_ENCODE_LENGTH;
+  http->data_encoding   = HTTP_ENCODING_FIELDS;
   http->_data_remaining = 0;
   http->used            = 0;
   http->expect          = 0;
@@ -2377,7 +2939,7 @@ httpReconnect2(http_t *http,              /* I - Connection to server */
   for (current = http->addrlist; current; current = current->next)
     DEBUG_printf(("2httpReconnect2: Address %s:%d",
                   httpAddrString(&(current->addr), temp, sizeof(temp)),
-                  _httpAddrPort(&(current->addr))));
+                  httpAddrPort(&(current->addr))));
 #endif /* DEBUG */
 
   if ((addr = httpAddrConnect2(http->addrlist, &(http->fd), msec,
@@ -2432,7 +2994,7 @@ httpReconnect2(http_t *http,              /* I - Connection to server */
 
   DEBUG_printf(("1httpReconnect2: Connected to %s:%d...",
                httpAddrString(http->hostaddr, temp, sizeof(temp)),
-               _httpAddrPort(http->hostaddr)));
+               httpAddrPort(http->hostaddr)));
 
   return (0);
 }
@@ -2547,14 +3109,16 @@ httpSetCookie(http_t     *http,         /* I - Connection */
 /*
  * 'httpSetExpect()' - Set the Expect: header in a request.
  *
- * Currently only HTTP_CONTINUE is supported for the "expect" argument.
+ * Currently only @code HTTP_STATUS_CONTINUE@ is supported for the "expect"
+ * argument.
  *
  * @since CUPS 1.2/OS X 10.5@
  */
 
 void
 httpSetExpect(http_t        *http,     /* I - Connection to server */
-              http_status_t expect)    /* I - HTTP status to expect (HTTP_CONTINUE) */
+              http_status_t expect)    /* I - HTTP status to expect
+                                              (@code HTTP_CONTINUE@) */
 {
   if (http)
     http->expect = expect;
@@ -2570,13 +3134,42 @@ httpSetField(http_t       *http,        /* I - Connection to server */
              http_field_t field,       /* I - Field index */
             const char   *value)       /* I - Value */
 {
+  DEBUG_printf(("httpSetField(http=%p, field=%d(%s), value=\"%s\")", http,
+                field, http_fields[field], value));
+
   if (http == NULL ||
       field < HTTP_FIELD_ACCEPT_LANGUAGE ||
-      field > HTTP_FIELD_WWW_AUTHENTICATE ||
+      field >= HTTP_FIELD_MAX ||
       value == NULL)
     return;
 
-  strlcpy(http->fields[field], value, HTTP_MAX_VALUE);
+  switch (field)
+  {
+    case HTTP_FIELD_ACCEPT_ENCODING :
+        if (http->accept_encoding)
+          _cupsStrFree(http->accept_encoding);
+
+        http->accept_encoding = _cupsStrAlloc(value);
+        break;
+
+    case HTTP_FIELD_ALLOW :
+        if (http->allow)
+          _cupsStrFree(http->allow);
+
+        http->allow = _cupsStrAlloc(value);
+        break;
+
+    case HTTP_FIELD_SERVER :
+        if (http->server)
+          _cupsStrFree(http->server);
+
+        http->server = _cupsStrAlloc(value);
+        break;
+
+    default :
+       strlcpy(http->fields[field], value, HTTP_MAX_VALUE);
+       break;
+  }
 
   if (field == HTTP_FIELD_AUTHORIZATION)
   {
@@ -2628,6 +3221,14 @@ httpSetField(http_t       *http, /* I - Connection to server */
       }
     }
   }
+#ifdef HAVE_LIBZ
+  else if (field == HTTP_FIELD_CONTENT_ENCODING &&
+           http->data_encoding != HTTP_ENCODING_FIELDS)
+  {
+    DEBUG_puts("1httpSetField: Calling http_content_coding_start.");
+    http_content_coding_start(http, value);
+  }
+#endif /* HAVE_LIBZ */
 }
 
 
@@ -2641,6 +3242,9 @@ void
 httpSetLength(http_t *http,            /* I - Connection to server */
               size_t length)           /* I - Length (0 for chunked) */
 {
+  DEBUG_printf(("httpSetLength(http=%p, length=" CUPS_LLFMT ")", http,
+                CUPS_LLCAST length));
+
   if (!http)
     return;
 
@@ -2720,7 +3324,7 @@ _httpUpdate(http_t        *http,  /* I - Connection to server */
 
 
   DEBUG_printf(("_httpUpdate(http=%p, status=%p), state=%s", http, status,
-                http_states[http->state]));
+                http_states[http->state + 1]));
 
  /*
   * Grab a single line from the connection...
@@ -2740,12 +3344,12 @@ _httpUpdate(http_t        *http,        /* I - Connection to server */
     * Blank line means the start of the data section (if any).  Return
     * the result code, too...
     *
-    * If we get status 100 (HTTP_CONTINUE), then we *don't* change states.
-    * Instead, we just return HTTP_CONTINUE to the caller and keep on
-    * tryin'...
+    * If we get status 100 (HTTP_STATUS_CONTINUE), then we *don't* change
+    * states.  Instead, we just return HTTP_STATUS_CONTINUE to the caller and
+    * keep on tryin'...
     */
 
-    if (http->status == HTTP_CONTINUE)
+    if (http->status == HTTP_STATUS_CONTINUE)
     {
       *status = http->status;
       return (0);
@@ -2769,29 +3373,48 @@ _httpUpdate(http_t        *http,        /* I - Connection to server */
        return (0);
       }
 
-      *status = HTTP_CONTINUE;
+      *status = HTTP_STATUS_CONTINUE;
       return (0);
     }
 #endif /* HAVE_SSL */
 
-    httpGetLength2(http);
+    if (http_set_length(http) < 0)
+    {
+      DEBUG_puts("1_httpUpdate: Bad Content-Length.");
+      http->error  = EINVAL;
+      http->status = *status = HTTP_ERROR;
+      return (0);
+    }
 
     switch (http->state)
     {
       case HTTP_GET :
       case HTTP_POST :
-      case HTTP_POST_RECV :
+      case HTTP_STATE_POST_RECV :
       case HTTP_PUT :
          http->state ++;
+
+         DEBUG_printf(("1_httpUpdate: Set state to %s.",
+                       http_states[http->state + 1]));
+
       case HTTP_POST_SEND :
       case HTTP_HEAD :
          break;
 
       default :
-         http->state = HTTP_WAITING;
+         http->state = HTTP_STATE_WAITING;
+
+         DEBUG_puts("1_httpUpdate: Unknown state, reset state to "
+                    "HTTP_STATE_WAITING.");
          break;
     }
 
+#ifdef HAVE_LIBZ
+    DEBUG_puts("1_httpUpdate: Calling http_content_coding_start.");
+    http_content_coding_start(http,
+                              httpGetField(http, HTTP_FIELD_CONTENT_ENCODING));
+#endif /* HAVE_LIBZ */
+
     *status = http->status;
     return (0);
   }
@@ -2809,6 +3432,8 @@ _httpUpdate(http_t        *http,  /* I - Connection to server */
       return (0);
     }
 
+    httpClearFields(http);
+
     http->version = (http_version_t)(major * 100 + minor);
     *status       = http->status = (http_status_t)intstatus;
   }
@@ -2822,6 +3447,8 @@ _httpUpdate(http_t        *http,  /* I - Connection to server */
     while (_cups_isspace(*value))
       value ++;
 
+    DEBUG_printf(("1_httpUpdate: Header %s: %s", line, value));
+
    /*
     * Be tolerants of servers that send unknown attribute fields...
     */
@@ -2852,7 +3479,8 @@ _httpUpdate(http_t        *http,  /* I - Connection to server */
   else
   {
     DEBUG_printf(("1_httpUpdate: Bad response line \"%s\"!", line));
-    *status = http->status = HTTP_ERROR;
+    http->error  = EINVAL;
+    http->status = *status = HTTP_ERROR;
     return (0);
   }
 
@@ -2871,7 +3499,7 @@ httpUpdate(http_t *http)          /* I - Connection to server */
 
 
   DEBUG_printf(("httpUpdate(http=%p), state=%s", http,
-                http_states[http->state]));
+                http_states[http->state + 1]));
 
  /*
   * Flush pending data, if any...
@@ -2889,7 +3517,7 @@ httpUpdate(http_t *http)          /* I - Connection to server */
   * If we haven't issued any commands, then there is nothing to "update"...
   */
 
-  if (http->state == HTTP_WAITING)
+  if (http->state == HTTP_STATE_WAITING)
     return (HTTP_CONTINUE);
 
  /*
@@ -3117,8 +3745,11 @@ httpWrite2(http_t     *http,             /* I - Connection to server */
   * Range check input...
   */
 
-  if (http == NULL || buffer == NULL)
+  if (!http || !buffer)
+  {
+    DEBUG_puts("1httpWrite2: Returning -1 due to bad input.");
     return (-1);
+  }
 
  /*
   * Mark activity on the connection...
@@ -3130,6 +3761,46 @@ httpWrite2(http_t     *http,             /* I - Connection to server */
   * Buffer small writes for better performance...
   */
 
+#ifdef HAVE_LIBZ
+  if (http->coding)
+  {
+    DEBUG_printf(("1httpWrite2: http->coding=%d", http->coding));
+
+    if (length == 0)
+    {
+      http_content_coding_finish(http);
+      bytes = 0;
+    }
+    else
+    {
+      http->stream.next_in   = (Bytef *)buffer;
+      http->stream.avail_in  = length;
+      http->stream.next_out  = (Bytef *)http->wbuffer + http->wused;
+      http->stream.avail_out = sizeof(http->wbuffer) - http->wused;
+
+      while (deflate(&(http->stream), Z_NO_FLUSH) == Z_OK)
+      {
+       http->wused = sizeof(http->wbuffer) - http->stream.avail_out;
+
+        if (http->stream.avail_out == 0)
+        {
+         if (httpFlushWrite(http) < 0)
+         {
+           DEBUG_puts("1httpWrite2: Unable to flush, returning -1.");
+           return (-1);
+         }
+
+         http->stream.next_out  = (Bytef *)http->wbuffer;
+         http->stream.avail_out = sizeof(http->wbuffer);
+       }
+      }
+
+      http->wused = sizeof(http->wbuffer) - http->stream.avail_out;
+      bytes       = length;
+    }
+  }
+  else
+#endif /* HAVE_LIBZ */
   if (length > 0)
   {
     if (http->wused && (length + http->wused) > sizeof(http->wbuffer))
@@ -3163,7 +3834,7 @@ httpWrite2(http_t     *http,              /* I - Connection to server */
       DEBUG_printf(("2httpWrite2: Writing " CUPS_LLFMT " bytes to socket...",
                     CUPS_LLCAST length));
 
-      if (http->data_encoding == HTTP_ENCODE_CHUNKED)
+      if (http->data_encoding == HTTP_ENCODING_CHUNKED)
        bytes = (ssize_t)http_write_chunk(http, buffer, (int)length);
       else
        bytes = (ssize_t)http_write(http, buffer, (int)length);
@@ -3172,7 +3843,7 @@ httpWrite2(http_t     *http,              /* I - Connection to server */
                     CUPS_LLCAST bytes));
     }
 
-    if (http->data_encoding == HTTP_ENCODE_LENGTH)
+    if (http->data_encoding == HTTP_ENCODING_LENGTH)
       http->data_remaining -= bytes;
   }
   else
@@ -3182,20 +3853,23 @@ httpWrite2(http_t     *http,            /* I - Connection to server */
   * Handle end-of-request processing...
   */
 
-  if ((http->data_encoding == HTTP_ENCODE_CHUNKED && length == 0) ||
-      (http->data_encoding == HTTP_ENCODE_LENGTH && http->data_remaining == 0))
+  if ((http->data_encoding == HTTP_ENCODING_CHUNKED && length == 0) ||
+      (http->data_encoding == HTTP_ENCODING_LENGTH && http->data_remaining == 0))
   {
    /*
     * Finished with the transfer; unless we are sending POST or PUT
     * data, go idle...
     */
 
-    DEBUG_puts("2httpWrite: changing states...");
+    DEBUG_puts("2httpWrite2: Changing states.");
 
     if (http->wused)
-      httpFlushWrite(http);
+    {
+      if (httpFlushWrite(http) < 0)
+        return (-1);
+    }
 
-    if (http->data_encoding == HTTP_ENCODE_CHUNKED)
+    if (http->data_encoding == HTTP_ENCODING_CHUNKED)
     {
      /*
       * Send a 0-length chunk at the end of the request...
@@ -3207,11 +3881,21 @@ httpWrite2(http_t     *http,            /* I - Connection to server */
       * Reset the data state...
       */
 
-      http->data_encoding  = HTTP_ENCODE_LENGTH;
+      http->data_encoding  = HTTP_ENCODING_FIELDS;
       http->data_remaining = 0;
     }
+
+    if (http->state == HTTP_STATE_POST_RECV)
+      http->state ++;
+    else
+      http->state = HTTP_STATE_WAITING;
+
+    DEBUG_printf(("2httpWrite2: New state is %s.",
+                  http_states[http->state + 1]));
   }
 
+  DEBUG_printf(("1httpWrite2: Returning " CUPS_LLFMT ".", CUPS_LLCAST bytes));
+
   return (bytes);
 }
 
@@ -3292,6 +3976,187 @@ _httpWriteGNUTLS(
 #endif /* HAVE_SSL && HAVE_GNUTLS */
 
 
+/*
+ * 'httpWriteResponse()' - Write a HTTP response to a client connection.
+ *
+ * @since CUPS 1.7@
+ */
+
+int                                    /* O - 0 on success, -1 on error */
+httpWriteResponse(http_t        *http, /* I - HTTP connection */
+                 http_status_t status) /* I - Status code */
+{
+  http_encoding_t      old_encoding;   /* Old data_encoding value */
+  off_t                        old_remaining;  /* Old data_remaining value */
+
+
+ /*
+  * Range check input...
+  */
+
+  DEBUG_printf(("httpWriteResponse(http=%p, status=%d)", http, status));
+
+  if (!http || status < HTTP_STATUS_CONTINUE)
+  {
+    DEBUG_puts("1httpWriteResponse: Bad input.");
+    return (-1);
+  }
+
+ /*
+  * Set the various standard fields if they aren't already...
+  */
+
+  if (!http->fields[HTTP_FIELD_DATE][0])
+    httpSetField(http, HTTP_FIELD_DATE, httpGetDateString(time(NULL)));
+
+  if (status >= HTTP_BAD_REQUEST && http->keep_alive)
+  {
+    http->keep_alive = 0;
+    httpSetField(http, HTTP_FIELD_KEEP_ALIVE, "");
+  }
+
+  if (http->version == HTTP_VERSION_1_1)
+  {
+    if (!http->fields[HTTP_FIELD_CONNECTION][0])
+    {
+      if (http->keep_alive)
+       httpSetField(http, HTTP_FIELD_CONNECTION, "Keep-Alive");
+      else
+       httpSetField(http, HTTP_FIELD_CONNECTION, "close");
+    }
+
+    if (http->keep_alive && !http->fields[HTTP_FIELD_KEEP_ALIVE][0])
+      httpSetField(http, HTTP_FIELD_KEEP_ALIVE, "timeout=10");
+  }
+
+#ifdef HAVE_SSL
+  if (status == HTTP_STATUS_UPGRADE_REQUIRED)
+  {
+    if (!http->fields[HTTP_FIELD_CONNECTION][0])
+      httpSetField(http, HTTP_FIELD_CONNECTION, "Upgrade");
+
+    if (!http->fields[HTTP_FIELD_UPGRADE][0])
+      httpSetField(http, HTTP_FIELD_UPGRADE, "TLS/1.2,TLS/1.1,TLS/1.0");
+  }
+#endif /* HAVE_SSL */
+
+  if (!http->server)
+    httpSetField(http, HTTP_FIELD_SERVER, CUPS_MINIMAL);
+
+#ifdef HAVE_LIBZ
+ /*
+  * Set the Accept-Encoding field if it isn't already...
+  */
+
+  if (!http->accept_encoding)
+    httpSetField(http, HTTP_FIELD_ACCEPT_ENCODING, "gzip, deflate, identity");
+#endif /* HAVE_LIBZ */
+
+ /*
+  * Send the response header...
+  */
+
+  old_encoding        = http->data_encoding;
+  old_remaining       = http->data_remaining;
+  http->data_encoding = HTTP_ENCODING_FIELDS;
+
+  if (httpPrintf(http, "HTTP/%d.%d %d %s\r\n", http->version / 100,
+                 http->version % 100, (int)status, httpStatus(status)) < 0)
+  {
+    http->status = HTTP_STATUS_ERROR;
+    return (-1);
+  }
+
+  if (status != HTTP_STATUS_CONTINUE)
+  {
+   /*
+    * 100 Continue doesn't have the rest of the response headers...
+    */
+
+    int                i;                      /* Looping var */
+    const char *value;                 /* Field value */
+
+    for (i = 0; i < HTTP_FIELD_MAX; i ++)
+    {
+      if ((value = httpGetField(http, i)) != NULL && *value)
+      {
+       if (httpPrintf(http, "%s: %s\r\n", http_fields[i], value) < 1)
+       {
+         http->status = HTTP_STATUS_ERROR;
+         return (-1);
+       }
+      }
+    }
+
+    if (http->cookie)
+    {
+      if (httpPrintf(http, "Set-Cookie: %s path=/%s\r\n", http->cookie,
+                     http->tls ? " secure" : "") < 1)
+      {
+       http->status = HTTP_ERROR;
+       return (-1);
+      }
+    }
+  }
+
+  if (httpWrite2(http, "\r\n", 2) < 2)
+  {
+    http->status = HTTP_ERROR;
+    return (-1);
+  }
+
+  if (httpFlushWrite(http) < 0)
+  {
+    http->status = HTTP_ERROR;
+    return (-1);
+  }
+
+  if (status == HTTP_STATUS_CONTINUE)
+  {
+   /*
+    * Restore the old data_encoding and data_length values...
+    */
+
+    http->data_encoding  = old_encoding;
+    http->data_remaining = old_remaining;
+
+    if (old_remaining <= INT_MAX)
+      http->_data_remaining = (int)old_remaining;
+    else
+      http->_data_remaining = INT_MAX;
+  }
+  else if (http->state == HTTP_STATE_OPTIONS ||
+           http->state == HTTP_STATE_HEAD ||
+           http->state == HTTP_STATE_PUT ||
+           http->state == HTTP_STATE_TRACE ||
+           http->state == HTTP_STATE_CONNECT)
+  {
+    DEBUG_printf(("1httpWriteResponse: Resetting state to HTTP_STATE_WAITING, "
+                  "was %s.", http_states[http->state + 1]));
+    http->state = HTTP_STATE_WAITING;
+  }
+  else
+  {
+   /*
+    * Force data_encoding and data_length to be set according to the response
+    * headers...
+    */
+
+    http_set_length(http);
+
+   /*
+    * Then start any content encoding...
+    */
+
+    DEBUG_puts("1httpWriteResponse: Calling http_content_coding_start.");
+    http_content_coding_start(http,
+                             httpGetField(http, HTTP_FIELD_CONTENT_ENCODING));
+  }
+
+  return (0);
+}
+
+
 #if defined(HAVE_SSL) && defined(HAVE_LIBSSL)
 /*
  * 'http_bio_ctrl()' - Control the HTTP connection.
@@ -3441,6 +4306,152 @@ http_bio_write(BIO        *h,           /* I - BIO data */
 #endif /* HAVE_SSL && HAVE_LIBSSL */
 
 
+#ifdef HAVE_LIBZ
+/*
+ * 'http_content_coding_finish()' - Finish doing any content encoding.
+ */
+
+static void
+http_content_coding_finish(
+    http_t *http)                      /* I - HTTP connection */
+{
+  int  zerr;                           /* Compression status */
+
+
+  switch (http->coding)
+  {
+    case _HTTP_CODING_DEFLATE :
+    case _HTTP_CODING_GZIP :
+        do
+        {
+          http->stream.next_out  = (Bytef *)http->wbuffer + http->wused;
+          http->stream.avail_out = sizeof(http->wbuffer) - http->wused;
+
+          zerr = deflate(&(http->stream), Z_FINISH);
+
+          http->wused = sizeof(http->wbuffer) - http->stream.avail_out;
+          if (http->wused == sizeof(http->wbuffer))
+            httpFlushWrite(http);
+        }
+        while (zerr == Z_OK);
+
+        deflateEnd(&(http->stream));
+
+        if (http->wused)
+          httpFlushWrite(http);
+        break;
+
+    case _HTTP_CODING_INFLATE :
+    case _HTTP_CODING_GUNZIP :
+        inflateEnd(&(http->stream));
+        break;
+
+    default :
+        break;
+  }
+
+  http->coding = _HTTP_CODING_IDENTITY;
+}
+
+
+/*
+ * 'http_content_coding_start()' - Start doing content encoding.
+ */
+
+static void
+http_content_coding_start(
+    http_t     *http,                  /* I - HTTP connection */
+    const char *value)                 /* I - Value of Content-Encoding */
+{
+  int                  zerr;           /* Error/status */
+  _http_coding_t       coding;         /* Content coding value */
+
+
+  DEBUG_printf(("http_content_coding_start(http=%p, value=\"%s\")", http,
+                value));
+
+  if (http->coding != _HTTP_CODING_IDENTITY)
+  {
+    DEBUG_printf(("1http_content_coding_start: http->coding already %d.",
+                  http->coding));
+    return;
+  }
+  else if (!strcmp(value, "x-gzip") || !strcmp(value, "gzip"))
+  {
+    if (http->state == HTTP_GET_SEND || http->state == HTTP_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)
+      coding = http->mode == _HTTP_MODE_CLIENT ? _HTTP_CODING_GZIP :
+                                                 _HTTP_CODING_GUNZIP;
+    else
+    {
+      DEBUG_puts("1http_content_coding_start: Not doing content coding.");
+      return;
+    }
+  }
+  else if (!strcmp(value, "x-deflate") || !strcmp(value, "deflate"))
+  {
+    if (http->state == HTTP_GET_SEND || http->state == HTTP_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)
+      coding = http->mode == _HTTP_MODE_CLIENT ? _HTTP_CODING_DEFLATE :
+                                                 _HTTP_CODING_INFLATE;
+    else
+    {
+      DEBUG_puts("1http_content_coding_start: Not doing content coding.");
+      return;
+    }
+  }
+  else
+  {
+    DEBUG_puts("1http_content_coding_start: Not doing content coding.");
+    return;
+  }
+
+  memset(&(http->stream), 0, sizeof(http->stream));
+
+  switch (coding)
+  {
+    case _HTTP_CODING_DEFLATE :
+    case _HTTP_CODING_GZIP :
+        if (http->wused)
+          httpFlushWrite(http);
+
+        if ((zerr = deflateInit2(&(http->stream), Z_DEFAULT_COMPRESSION,
+                                 Z_DEFLATED,
+                                coding == _HTTP_CODING_DEFLATE ? 11 : 27, 7,
+                                Z_DEFAULT_STRATEGY)) < Z_OK)
+        {
+          http->status = HTTP_ERROR;
+          http->error  = zerr == Z_MEM_ERROR ? ENOMEM : EINVAL;
+          return;
+        }
+        break;
+
+    case _HTTP_CODING_INFLATE :
+    case _HTTP_CODING_GUNZIP :
+        if ((zerr = inflateInit2(&(http->stream), 32 + 15)) < Z_OK)
+        {
+          http->status = HTTP_ERROR;
+          http->error  = zerr == Z_MEM_ERROR ? ENOMEM : EINVAL;
+          return;
+        }
+        break;
+
+    default :
+        break;
+  }
+
+  http->coding = coding;
+
+  DEBUG_printf(("1http_content_coding_start: http->coding now %d.",
+               http->coding));
+}
+#endif /* HAVE_LIBZ */
+
+
 #ifdef DEBUG
 /*
  * 'http_debug_hex()' - Do a hex dump of a buffer.
@@ -3611,15 +4622,16 @@ http_read_ssl(http_t *http,             /* I - Connection to server */
  * 'http_send()' - Send a request with all fields and the trailing blank line.
  */
 
-static int                     /* O - 0 on success, non-zero on error */
-http_send(http_t       *http,  /* I - Connection to server */
-          http_state_t request,        /* I - Request code */
-         const char   *uri)    /* I - URI */
+static int                             /* O - 0 on success, non-zero on error */
+http_send(http_t       *http,          /* I - Connection to server */
+          http_state_t request,                /* I - Request code */
+         const char   *uri)            /* I - URI */
 {
-  int          i;              /* Looping var */
-  char         buf[1024];      /* Encoded URI buffer */
-  static const char * const codes[] =
-               {               /* Request code strings */
+  int          i;                      /* Looping var */
+  char         buf[1024];              /* Encoded URI buffer */
+  const char   *value;                 /* Field value */
+  static const char * const codes[] =  /* Request code strings */
+               {
                  NULL,
                  "OPTIONS",
                  "GET",
@@ -3632,7 +4644,9 @@ http_send(http_t       *http,     /* I - Connection to server */
                  NULL,
                  "DELETE",
                  "TRACE",
-                 "CLOSE"
+                 "CLOSE",
+                 NULL,
+                 NULL
                };
 
 
@@ -3649,6 +4663,15 @@ http_send(http_t       *http,    /* I - Connection to server */
   if (!http->fields[HTTP_FIELD_USER_AGENT][0])
     httpSetField(http, HTTP_FIELD_USER_AGENT, CUPS_MINIMAL);
 
+#ifdef HAVE_LIBZ
+ /*
+  * Set the Accept-Encoding field if it isn't already...
+  */
+
+  if (!http->accept_encoding)
+    httpSetField(http, HTTP_FIELD_ACCEPT_ENCODING, "gzip, deflate, identity");
+#endif /* HAVE_LIBZ */
+
  /*
   * Encode the URI as needed...
   */
@@ -3659,7 +4682,8 @@ http_send(http_t       *http,     /* I - Connection to server */
   * See if we had an error the last time around; if so, reconnect...
   */
 
-  if (http->status == HTTP_ERROR || http->status >= HTTP_BAD_REQUEST)
+  if (http->fd < 0 || http->status == HTTP_ERROR ||
+      http->status >= HTTP_BAD_REQUEST)
     if (httpReconnect(http))
       return (-1);
 
@@ -3679,7 +4703,7 @@ http_send(http_t       *http,     /* I - Connection to server */
   */
 
   http->state         = request;
-  http->data_encoding = HTTP_ENCODE_FIELDS;
+  http->data_encoding = HTTP_ENCODING_FIELDS;
 
   if (request == HTTP_POST || request == HTTP_PUT)
     http->state ++;
@@ -3690,7 +4714,7 @@ http_send(http_t       *http,     /* I - Connection to server */
   if (http->encryption == HTTP_ENCRYPT_REQUIRED && !http->tls)
   {
     httpSetField(http, HTTP_FIELD_CONNECTION, "Upgrade");
-    httpSetField(http, HTTP_FIELD_UPGRADE, "TLS/1.0,SSL/2.0,SSL/3.0");
+    httpSetField(http, HTTP_FIELD_UPGRADE, "TLS/1.2,TLS/1.1,TLS/1.0");
   }
 #endif /* HAVE_SSL */
 
@@ -3701,22 +4725,20 @@ http_send(http_t       *http,   /* I - Connection to server */
   }
 
   for (i = 0; i < HTTP_FIELD_MAX; i ++)
-    if (http->fields[i][0] != '\0')
+    if ((value = httpGetField(http, i)) != NULL && *value)
     {
-      DEBUG_printf(("9http_send: %s: %s", http_fields[i],
-                    httpGetField(http, i)));
+      DEBUG_printf(("9http_send: %s: %s", http_fields[i], value));
 
       if (i == HTTP_FIELD_HOST)
       {
-       if (httpPrintf(http, "Host: %s:%d\r\n", httpGetField(http, i),
-                      _httpAddrPort(http->hostaddr)) < 1)
+       if (httpPrintf(http, "Host: %s:%d\r\n", value,
+                      httpAddrPort(http->hostaddr)) < 1)
        {
          http->status = HTTP_ERROR;
          return (-1);
        }
       }
-      else if (httpPrintf(http, "%s: %s\r\n", http_fields[i],
-                         httpGetField(http, i)) < 1)
+      else if (httpPrintf(http, "%s: %s\r\n", http_fields[i], value) < 1)
       {
        http->status = HTTP_ERROR;
        return (-1);
@@ -3730,8 +4752,8 @@ http_send(http_t       *http,     /* I - Connection to server */
       return (-1);
     }
 
-  if (http->expect == HTTP_CONTINUE &&
-      (http->state == HTTP_POST_RECV || http->state == HTTP_PUT_RECV))
+  if (http->expect == HTTP_CONTINUE && http->mode == _HTTP_MODE_CLIENT &&
+      (http->state == HTTP_STATE_POST_RECV || http->state == HTTP_PUT_RECV))
     if (httpPrintf(http, "Expect: 100-continue\r\n") < 1)
     {
       http->status = HTTP_ERROR;
@@ -3747,7 +4769,7 @@ http_send(http_t       *http,     /* I - Connection to server */
   if (httpFlushWrite(http) < 0)
     return (-1);
 
-  httpGetLength2(http);
+  http_set_length(http);
   httpClearFields(http);
 
  /*
@@ -3866,6 +4888,57 @@ http_set_credentials(http_t *http)       /* I - Connection to server */
 #endif /* HAVE_SSL */
 
 
+/*
+ * 'http_set_length()' - Set the data_encoding and data_remaining values.
+ */
+
+static off_t                           /* O - Remainder or -1 on error */
+http_set_length(http_t *http)          /* I - Connection */
+{
+  off_t        remaining;                      /* Remainder */
+
+
+  DEBUG_printf(("http_set_length(http=%p) mode=%d state=%s", http, http->mode,
+                http_states[http->state + 1]));
+
+  if ((remaining = httpGetLength2(http)) >= 0)
+  {
+    if (http->mode == _HTTP_MODE_SERVER &&
+       http->state != HTTP_STATE_GET_SEND &&
+       http->state != HTTP_STATE_POST &&
+       http->state != HTTP_STATE_POST_SEND)
+    {
+      DEBUG_puts("1http_set_length: Not setting data_encoding/remaining.");
+      return (remaining);
+    }
+
+    if (!_cups_strcasecmp(http->fields[HTTP_FIELD_TRANSFER_ENCODING],
+                          "chunked"))
+    {
+      DEBUG_puts("1http_set_length: Setting data_encoding to "
+                 "HTTP_ENCODING_CHUNKED.");
+      http->data_encoding = HTTP_ENCODING_CHUNKED;
+    }
+    else
+    {
+      DEBUG_puts("1http_set_length: Setting data_encoding to "
+                 "HTTP_ENCODING_LENGTH.");
+      http->data_encoding = HTTP_ENCODING_LENGTH;
+    }
+
+    DEBUG_printf(("1http_set_length: Setting data_remaining to " CUPS_LLFMT ".",
+                  CUPS_LLCAST remaining));
+    http->data_remaining = remaining;
+
+    if (remaining <= INT_MAX)
+      http->_data_remaining = remaining;
+    else
+      http->_data_remaining = INT_MAX;
+  }
+
+  return (remaining);
+}
+
 /*
  * 'http_set_timeout()' - Set the socket timeout values.
  */
@@ -4459,7 +5532,7 @@ http_upgrade(http_t *http)                /* I - Connection to server */
 
   httpClearFields(http);
   httpSetField(http, HTTP_FIELD_CONNECTION, "upgrade");
-  httpSetField(http, HTTP_FIELD_UPGRADE, "TLS/1.2, TLS/1.1, TLS/1.0, SSL/3.0");
+  httpSetField(http, HTTP_FIELD_UPGRADE, "TLS/1.2,TLS/1.1,TLS/1.0");
 
   if ((ret = httpOptions(http, "*")) == 0)
   {
index 3aefd53b3ccf0df1233dcb3ac3740376fef71446..3c8a32113e09097b217aa6fdb85d802cdd695343 100644 (file)
@@ -126,17 +126,30 @@ typedef enum http_auth_e          /**** HTTP authentication types ****/
 
 typedef enum http_encoding_e           /**** HTTP transfer encoding values ****/
 {
-  HTTP_ENCODE_LENGTH,                  /* Data is sent with Content-Length */
-  HTTP_ENCODE_CHUNKED,                 /* Data is chunked */
-  HTTP_ENCODE_FIELDS                   /* Sending HTTP fields */
+  HTTP_ENCODING_LENGTH,                        /* Data is sent with Content-Length */
+  HTTP_ENCODING_CHUNKED,               /* Data is chunked */
+  HTTP_ENCODING_FIELDS                 /* Sending HTTP fields */
+
+#  ifndef _CUPS_NO_DEPRECATED
+#    define HTTP_ENCODE_LENGTH HTTP_ENCODING_LENGTH
+#    define HTTP_ENCODE_CHUNKED        HTTP_ENCODING_CHUNKED
+#    define HTTP_ENCODE_FIELDS HTTP_ENCODING_FIELDS
+#  endif /* !_CUPS_NO_DEPRECATED */
 } http_encoding_t;
 
 typedef enum http_encryption_e         /**** HTTP encryption values ****/
 {
-  HTTP_ENCRYPT_IF_REQUESTED,           /* Encrypt if requested (TLS upgrade) */
-  HTTP_ENCRYPT_NEVER,                  /* Never encrypt */
-  HTTP_ENCRYPT_REQUIRED,               /* Encryption is required (TLS upgrade) */
-  HTTP_ENCRYPT_ALWAYS                  /* Always encrypt (SSL) */
+  HTTP_ENCRYPTION_IF_REQUESTED,                /* Encrypt if requested (TLS upgrade) */
+  HTTP_ENCRYPTION_NEVER,               /* Never encrypt */
+  HTTP_ENCRYPTION_REQUIRED,            /* Encryption is required (TLS upgrade) */
+  HTTP_ENCRYPTION_ALWAYS               /* Always encrypt (SSL) */
+
+#  ifndef _CUPS_NO_DEPRECATED
+#    define HTTP_ENCRYPT_IF_REQUESTED  HTTP_ENCRYPTION_IF_REQUESTED
+#    define HTTP_ENCRYPT_NEVER         HTTP_ENCRYPTION_NEVER
+#    define HTTP_ENCRYPT_REQUIRED      HTTP_ENCRYPTION_REQUIRED
+#    define HTTP_ENCRYPT_ALWAYS                HTTP_ENCRYPTION_ALWAYS
+#  endif /* !_CUPS_NO_DEPRECATED */
 } http_encryption_t;
 
 typedef enum http_field_e              /**** HTTP field names ****/
@@ -169,6 +182,9 @@ typedef enum http_field_e           /**** HTTP field names ****/
   HTTP_FIELD_UPGRADE,                  /* Upgrade field */
   HTTP_FIELD_USER_AGENT,               /* User-Agent field */
   HTTP_FIELD_WWW_AUTHENTICATE,         /* WWW-Authenticate field */
+  HTTP_FIELD_ACCEPT_ENCODING,          /* Accepting-Encoding field @since CUPS 1.7@ */
+  HTTP_FIELD_ALLOW,                    /* Allow field @since CUPS 1.7@ */
+  HTTP_FIELD_SERVER,                   /* Server field @since CUPS 1.7@ */
   HTTP_FIELD_MAX                       /* Maximum field index */
 } http_field_t;
 
@@ -182,90 +198,181 @@ typedef enum http_state_e                /**** HTTP state values; states
                                         **** are server-oriented...
                                         ****/
 {
-  HTTP_WAITING,                                /* Waiting for command */
-  HTTP_OPTIONS,                                /* OPTIONS command, waiting for blank line */
-  HTTP_GET,                            /* GET command, waiting for blank line */
-  HTTP_GET_SEND,                       /* GET command, sending data */
-  HTTP_HEAD,                           /* HEAD command, waiting for blank line */
-  HTTP_POST,                           /* POST command, waiting for blank line */
-  HTTP_POST_RECV,                      /* POST command, receiving data */
-  HTTP_POST_SEND,                      /* POST command, sending data */
-  HTTP_PUT,                            /* PUT command, waiting for blank line */
-  HTTP_PUT_RECV,                       /* PUT command, receiving data */
-  HTTP_DELETE,                         /* DELETE command, waiting for blank line */
-  HTTP_TRACE,                          /* TRACE command, waiting for blank line */
-  HTTP_CLOSE,                          /* CLOSE command, waiting for blank line */
-  HTTP_STATUS                          /* Command complete, sending status */
+  HTTP_STATE_ERROR = -1,               /* Error on socket */
+  HTTP_STATE_WAITING,                  /* Waiting for command */
+  HTTP_STATE_OPTIONS,                  /* OPTIONS command, waiting for blank line */
+  HTTP_STATE_GET,                      /* GET command, waiting for blank line */
+  HTTP_STATE_GET_SEND,                 /* GET command, sending data */
+  HTTP_STATE_HEAD,                     /* HEAD command, waiting for blank line */
+  HTTP_STATE_POST,                     /* POST command, waiting for blank line */
+  HTTP_STATE_POST_RECV,                        /* POST command, receiving data */
+  HTTP_STATE_POST_SEND,                        /* POST command, sending data */
+  HTTP_STATE_PUT,                      /* PUT command, waiting for blank line */
+  HTTP_STATE_PUT_RECV,                 /* PUT command, receiving data */
+  HTTP_STATE_DELETE,                   /* DELETE command, waiting for blank line */
+  HTTP_STATE_TRACE,                    /* TRACE command, waiting for blank line */
+  HTTP_STATE_CONNECT,                  /* CONNECT command, waiting for blank line */
+  HTTP_STATE_STATUS,                   /* Command complete, sending status */
+  HTTP_STATE_UNKNOWN_METHOD,           /* Unknown request method, waiting for blank line @since CUPS 1.7@ */
+  HTTP_STATE_UNKNOWN_VERSION           /* Unknown request method, waiting for blank line @since CUPS 1.7@ */
+
+#  ifndef _CUPS_NO_DEPRECATED
+#    define HTTP_WAITING       HTTP_STATE_WAITING
+#    define HTTP_OPTIONS       HTTP_STATE_OPTIONS
+#    define HTTP_GET           HTTP_STATE_GET
+#    define HTTP_GET_SEND      HTTP_STATE_GET_SEND
+#    define HTTP_HEAD          HTTP_STATE_HEAD
+#    define HTTP_POST          HTTP_STATE_POST
+#    define HTTP_POST_RECV     HTTP_STATE_POST_RECV
+#    define HTTP_POST_SEND     HTTP_STATE_POST_SEND
+#    define HTTP_PUT           HTTP_STATE_PUT
+#    define HTTP_PUT_RECV      HTTP_STATE_PUT_RECV
+#    define HTTP_DELETE                HTTP_STATE_DELETE
+#    define HTTP_TRACE         HTTP_STATE_TRACE
+#    define HTTP_CLOSE         HTTP_STATE_CONNECT
+#    define HTTP_STATUS                HTTP_STATE_STATUS
+#  endif /* !_CUPS_NO_DEPRECATED */
 } http_state_t;
 
 typedef enum http_status_e             /**** HTTP status codes ****/
 {
-  HTTP_ERROR = -1,                     /* An error response from httpXxxx() */
-
-  HTTP_CONTINUE = 100,                 /* Everything OK, keep going... */
-  HTTP_SWITCHING_PROTOCOLS,            /* HTTP upgrade to TLS/SSL */
-
-  HTTP_OK = 200,                       /* OPTIONS/GET/HEAD/POST/TRACE command was successful */
-  HTTP_CREATED,                                /* PUT command was successful */
-  HTTP_ACCEPTED,                       /* DELETE command was successful */
-  HTTP_NOT_AUTHORITATIVE,              /* Information isn't authoritative */
-  HTTP_NO_CONTENT,                     /* Successful command, no new data */
-  HTTP_RESET_CONTENT,                  /* Content was reset/recreated */
-  HTTP_PARTIAL_CONTENT,                        /* Only a partial file was recieved/sent */
-
-  HTTP_MULTIPLE_CHOICES = 300,         /* Multiple files match request */
-  HTTP_MOVED_PERMANENTLY,              /* Document has moved permanently */
-  HTTP_MOVED_TEMPORARILY,              /* Document has moved temporarily */
-  HTTP_SEE_OTHER,                      /* See this other link... */
-  HTTP_NOT_MODIFIED,                   /* File not modified */
-  HTTP_USE_PROXY,                      /* Must use a proxy to access this URI */
-
-  HTTP_BAD_REQUEST = 400,              /* Bad request */
-  HTTP_UNAUTHORIZED,                   /* Unauthorized to access host */
-  HTTP_PAYMENT_REQUIRED,               /* Payment required */
-  HTTP_FORBIDDEN,                      /* Forbidden to access this URI */
-  HTTP_NOT_FOUND,                      /* URI was not found */
-  HTTP_METHOD_NOT_ALLOWED,             /* Method is not allowed */
-  HTTP_NOT_ACCEPTABLE,                 /* Not Acceptable */
-  HTTP_PROXY_AUTHENTICATION,           /* Proxy Authentication is Required */
-  HTTP_REQUEST_TIMEOUT,                        /* Request timed out */
-  HTTP_CONFLICT,                       /* Request is self-conflicting */
-  HTTP_GONE,                           /* Server has gone away */
-  HTTP_LENGTH_REQUIRED,                        /* A content length or encoding is required */
-  HTTP_PRECONDITION,                   /* Precondition failed */
-  HTTP_REQUEST_TOO_LARGE,              /* Request entity too large */
-  HTTP_URI_TOO_LONG,                   /* URI too long */
-  HTTP_UNSUPPORTED_MEDIATYPE,          /* The requested media type is unsupported */
-  HTTP_REQUESTED_RANGE,                        /* The requested range is not satisfiable */
-  HTTP_EXPECTATION_FAILED,             /* The expectation given in an Expect header field was not met */
-  HTTP_UPGRADE_REQUIRED = 426,         /* Upgrade to SSL/TLS required */
-
-  HTTP_SERVER_ERROR = 500,             /* Internal server error */
-  HTTP_NOT_IMPLEMENTED,                        /* Feature not implemented */
-  HTTP_BAD_GATEWAY,                    /* Bad gateway */
-  HTTP_SERVICE_UNAVAILABLE,            /* Service is unavailable */
-  HTTP_GATEWAY_TIMEOUT,                        /* Gateway connection timed out */
-  HTTP_NOT_SUPPORTED,                  /* HTTP version not supported */
-
-  HTTP_AUTHORIZATION_CANCELED = 1000,  /* User canceled authorization @since CUPS 1.4@ */
-  HTTP_PKI_ERROR,                      /* Error negotiating a secure connection @since CUPS 1.5/OS X 10.7@ */
-  HTTP_WEBIF_DISABLED                  /* Web interface is disabled @private@ */
+  HTTP_STATUS_ERROR = -1,              /* An error response from httpXxxx() */
+  HTTP_STATUS_NONE = 0,                        /* No Expect value @since CUPS 1.7@ */
+
+  HTTP_STATUS_CONTINUE = 100,          /* Everything OK, keep going... */
+  HTTP_STATUS_SWITCHING_PROTOCOLS,     /* HTTP upgrade to TLS/SSL */
+
+  HTTP_STATUS_OK = 200,                        /* OPTIONS/GET/HEAD/POST/TRACE command was successful */
+  HTTP_STATUS_CREATED,                 /* PUT command was successful */
+  HTTP_STATUS_ACCEPTED,                        /* DELETE command was successful */
+  HTTP_STATUS_NOT_AUTHORITATIVE,       /* Information isn't authoritative */
+  HTTP_STATUS_NO_CONTENT,              /* Successful command, no new data */
+  HTTP_STATUS_RESET_CONTENT,           /* Content was reset/recreated */
+  HTTP_STATUS_PARTIAL_CONTENT,         /* Only a partial file was recieved/sent */
+
+  HTTP_STATUS_MULTIPLE_CHOICES = 300,  /* Multiple files match request */
+  HTTP_STATUS_MOVED_PERMANENTLY,       /* Document has moved permanently */
+  HTTP_STATUS_MOVED_TEMPORARILY,       /* Document has moved temporarily */
+  HTTP_STATUS_SEE_OTHER,               /* See this other link... */
+  HTTP_STATUS_NOT_MODIFIED,            /* File not modified */
+  HTTP_STATUS_USE_PROXY,               /* Must use a proxy to access this URI */
+
+  HTTP_STATUS_BAD_REQUEST = 400,       /* Bad request */
+  HTTP_STATUS_UNAUTHORIZED,            /* Unauthorized to access host */
+  HTTP_STATUS_PAYMENT_REQUIRED,                /* Payment required */
+  HTTP_STATUS_FORBIDDEN,               /* Forbidden to access this URI */
+  HTTP_STATUS_NOT_FOUND,               /* URI was not found */
+  HTTP_STATUS_METHOD_NOT_ALLOWED,      /* Method is not allowed */
+  HTTP_STATUS_NOT_ACCEPTABLE,          /* Not Acceptable */
+  HTTP_STATUS_PROXY_AUTHENTICATION,    /* Proxy Authentication is Required */
+  HTTP_STATUS_REQUEST_TIMEOUT,         /* Request timed out */
+  HTTP_STATUS_CONFLICT,                        /* Request is self-conflicting */
+  HTTP_STATUS_GONE,                    /* Server has gone away */
+  HTTP_STATUS_LENGTH_REQUIRED,         /* A content length or encoding is required */
+  HTTP_STATUS_PRECONDITION,            /* Precondition failed */
+  HTTP_STATUS_REQUEST_TOO_LARGE,       /* Request entity too large */
+  HTTP_STATUS_URI_TOO_LONG,            /* URI too long */
+  HTTP_STATUS_UNSUPPORTED_MEDIATYPE,   /* The requested media type is unsupported */
+  HTTP_STATUS_REQUESTED_RANGE,         /* The requested range is not satisfiable */
+  HTTP_STATUS_EXPECTATION_FAILED,      /* The expectation given in an Expect header field was not met */
+  HTTP_STATUS_UPGRADE_REQUIRED = 426,  /* Upgrade to SSL/TLS required */
+
+  HTTP_STATUS_SERVER_ERROR = 500,      /* Internal server error */
+  HTTP_STATUS_NOT_IMPLEMENTED,         /* Feature not implemented */
+  HTTP_STATUS_BAD_GATEWAY,             /* Bad gateway */
+  HTTP_STATUS_SERVICE_UNAVAILABLE,     /* Service is unavailable */
+  HTTP_STATUS_GATEWAY_TIMEOUT,         /* Gateway connection timed out */
+  HTTP_STATUS_NOT_SUPPORTED,           /* HTTP version not supported */
+
+  CUPS_STATUS_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@ */
+
+#  ifndef _CUPS_NO_DEPRECATED
+/* Old names for this enumeration */
+#    define HTTP_ERROR                 HTTP_STATUS_ERROR
+
+#    define HTTP_CONTINUE              HTTP_STATUS_CONTINUE
+#    define HTTP_SWITCHING_PROTOCOLS   HTTP_STATUS_SWITCHING_PROTOCOLS
+
+#    define HTTP_OK                    HTTP_STATUS_OK
+#    define HTTP_CREATED               HTTP_STATUS_CREATED
+#    define HTTP_ACCEPTED              HTTP_STATUS_ACCEPTED
+#    define HTTP_NOT_AUTHORITATIVE     HTTP_STATUS_NOT_AUTHORITATIVE
+#    define HTTP_NO_CONTENT            HTTP_STATUS_NO_CONTENT
+#    define HTTP_RESET_CONTENT         HTTP_STATUS_RESET_CONTENT
+#    define HTTP_PARTIAL_CONTENT       HTTP_STATUS_PARTIAL_CONTENT
+
+#    define HTTP_MULTIPLE_CHOICES      HTTP_STATUS_MULTIPLE_CHOICES
+#    define HTTP_MOVED_PERMANENTLY     HTTP_STATUS_MOVED_PERMANENTLY
+#    define HTTP_MOVED_TEMPORARILY     HTTP_STATUS_MOVED_TEMPORARILY
+#    define HTTP_SEE_OTHER             HTTP_STATUS_SEE_OTHER
+#    define HTTP_NOT_MODIFIED          HTTP_STATUS_NOT_MODIFIED
+#    define HTTP_USE_PROXY             HTTP_STATUS_USE_PROXY
+
+#    define HTTP_BAD_REQUEST           HTTP_STATUS_BAD_REQUEST
+#    define HTTP_UNAUTHORIZED          HTTP_STATUS_UNAUTHORIZED
+#    define HTTP_PAYMENT_REQUIRED      HTTP_STATUS_PAYMENT_REQUIRED
+#    define HTTP_FORBIDDEN             HTTP_STATUS_FORBIDDEN
+#    define HTTP_NOT_FOUND             HTTP_STATUS_NOT_FOUND
+#    define HTTP_METHOD_NOT_ALLOWED    HTTP_STATUS_METHOD_NOT_ALLOWED
+#    define HTTP_NOT_ACCEPTABLE                HTTP_STATUS_NOT_ACCEPTABLE
+#    define HTTP_PROXY_AUTHENTICATION  HTTP_STATUS_PROXY_AUTHENTICATION
+#    define HTTP_REQUEST_TIMEOUT       HTTP_STATUS_REQUEST_TIMEOUT
+#    define HTTP_CONFLICT              HTTP_STATUS_CONFLICT
+#    define HTTP_GONE                  HTTP_STATUS_GONE
+#    define HTTP_LENGTH_REQUIRED       HTTP_STATUS_LENGTH_REQUIRED
+#    define HTTP_PRECONDITION          HTTP_STATUS_PRECONDITION
+#    define HTTP_REQUEST_TOO_LARGE     HTTP_STATUS_REQUEST_TOO_LARGE
+#    define HTTP_URI_TOO_LONG          HTTP_STATUS_URI_TOO_LONG
+#    define HTTP_UNSUPPORTED_MEDIATYPE HTTP_STATUS_UNSUPPORTED_MEDIATYPE
+#    define HTTP_REQUESTED_RANGE       HTTP_STATUS_REQUESTED_RANGE
+#    define HTTP_EXPECTATION_FAILED    HTTP_STATUS_EXPECTATION_FAILED
+#    define HTTP_UPGRADE_REQUIRED      HTTP_STATUS_UPGRADE_REQUIRED
+
+#    define HTTP_SERVER_ERROR          HTTP_STATUS_SERVER_ERROR
+#    define HTTP_NOT_IMPLEMENTED       HTTP_STATUS_NOT_IMPLEMENTED
+#    define HTTP_BAD_GATEWAY           HTTP_STATUS_BAD_GATEWAY
+#    define HTTP_SERVICE_UNAVAILABLE   HTTP_STATUS_SERVICE_UNAVAILABLE
+#    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
+#  endif /* !_CUPS_NO_DEPRECATED */
 } http_status_t;
 
 typedef enum http_uri_status_e         /**** URI separation status @since CUPS 1.2@ ****/
 {
-  HTTP_URI_OVERFLOW = -8,              /* URI buffer for httpAssembleURI is too small */
-  HTTP_URI_BAD_ARGUMENTS = -7,         /* Bad arguments to function (error) */
-  HTTP_URI_BAD_RESOURCE = -6,          /* Bad resource in URI (error) */
-  HTTP_URI_BAD_PORT = -5,              /* Bad port number in URI (error) */
-  HTTP_URI_BAD_HOSTNAME = -4,          /* Bad hostname in URI (error) */
-  HTTP_URI_BAD_USERNAME = -3,          /* Bad username in URI (error) */
-  HTTP_URI_BAD_SCHEME = -2,            /* Bad scheme in URI (error) */
-  HTTP_URI_BAD_URI = -1,               /* Bad/empty URI (error) */
-  HTTP_URI_OK = 0,                     /* URI decoded OK */
-  HTTP_URI_MISSING_SCHEME,             /* Missing scheme in URI (warning) */
-  HTTP_URI_UNKNOWN_SCHEME,             /* Unknown scheme in URI (warning) */
-  HTTP_URI_MISSING_RESOURCE            /* Missing resource in URI (warning) */
+  HTTP_URI_STATUS_OVERFLOW = -8,       /* URI buffer for httpAssembleURI is too small */
+  HTTP_URI_STATUS_BAD_ARGUMENTS = -7,  /* Bad arguments to function (error) */
+  HTTP_URI_STATUS_BAD_RESOURCE = -6,   /* Bad resource in URI (error) */
+  HTTP_URI_STATUS_BAD_PORT = -5,       /* Bad port number in URI (error) */
+  HTTP_URI_STATUS_BAD_HOSTNAME = -4,   /* Bad hostname in URI (error) */
+  HTTP_URI_STATUS_BAD_USERNAME = -3,   /* Bad username in URI (error) */
+  HTTP_URI_STATUS_BAD_SCHEME = -2,     /* Bad scheme in URI (error) */
+  HTTP_URI_STATUS_BAD_URI = -1,                /* Bad/empty URI (error) */
+  HTTP_URI_STATUS_OK = 0,              /* URI decoded OK */
+  HTTP_URI_STATUS_MISSING_SCHEME,      /* Missing scheme in URI (warning) */
+  HTTP_URI_STATUS_UNKNOWN_SCHEME,      /* Unknown scheme in URI (warning) */
+  HTTP_URI_STATUS_MISSING_RESOURCE     /* Missing resource in URI (warning) */
+
+#  ifndef _CUPS_NO_DEPRECATED
+#    define HTTP_URI_OVERFLOW          HTTP_URI_STATUS_OVERFLOW
+#    define HTTP_URI_BAD_ARGUMENTS     HTTP_URI_STATUS_BAD_ARGUMENTS
+#    define HTTP_URI_BAD_RESOURCE      HTTP_URI_STATUS_BAD_RESOURCE
+#    define HTTP_URI_BAD_PORT          HTTP_URI_STATUS_BAD_PORT
+#    define HTTP_URI_BAD_HOSTNAME      HTTP_URI_STATUS_BAD_HOSTNAME
+#    define HTTP_URI_BAD_USERNAME      HTTP_URI_STATUS_BAD_USERNAME
+#    define HTTP_URI_BAD_SCHEME                HTTP_URI_STATUS_BAD_SCHEME
+#    define HTTP_URI_BAD_URI           HTTP_URI_STATUS_BAD_URI
+#    define HTTP_URI_OK                        HTTP_URI_STATUS_OK
+#    define HTTP_URI_MISSING_SCHEME    HTTP_URI_STATUS_MISSING_SCHEME
+#    define HTTP_URI_UNKNOWN_SCHEME    HTTP_URI_STATUS_UNKNOWN_SCHEME
+#    define HTTP_URI_MISSING_RESOURCE  HTTP_URI_STATUS_MISSING_RESOURCE
+#  endif /* !_CUPS_NO_DEPRECATED */
 } http_uri_status_t;
 
 typedef enum http_uri_coding_e         /**** URI en/decode flags ****/
@@ -281,9 +388,15 @@ typedef enum http_uri_coding_e             /**** URI en/decode flags ****/
 
 typedef enum http_version_e            /**** HTTP version numbers ****/
 {
-  HTTP_0_9 = 9,                                /* HTTP/0.9 */
-  HTTP_1_0 = 100,                      /* HTTP/1.0 */
-  HTTP_1_1 = 101                       /* HTTP/1.1 */
+  HTTP_VERSION_0_9 = 9,                        /* HTTP/0.9 */
+  HTTP_VERSION_1_0 = 100,              /* HTTP/1.0 */
+  HTTP_VERSION_1_1 = 101               /* HTTP/1.1 */
+
+#  ifndef _CUPS_NO_DEPRECATED
+#    define HTTP_0_9   HTTP_VERSION_0_9
+#    define HTTP_1_0   HTTP_VERSION_1_0
+#    define HTTP_1_1   HTTP_VERSION_1_1
+#  endif /* !_CUPS_NO_DEPRECATED */
 } http_version_t;
 
 typedef union _http_addr_u             /**** Socket address union, which
@@ -334,9 +447,11 @@ extern void                httpBlocking(http_t *http, int b);
 extern int             httpCheck(http_t *http);
 extern void            httpClearFields(http_t *http);
 extern void            httpClose(http_t *http);
-extern http_t          *httpConnect(const char *host, int port);
+extern http_t          *httpConnect(const char *host, int port)
+                                    _CUPS_DEPRECATED_MSG("Use httpConnect2 instead.");
 extern http_t          *httpConnectEncrypt(const char *host, int port,
-                                           http_encryption_t encryption);
+                                           http_encryption_t encryption)
+                                           _CUPS_DEPRECATED_MSG("Use httpConnect2 instead.");
 extern int             httpDelete(http_t *http, const char *uri);
 extern int             httpEncryption(http_t *http, http_encryption_t e);
 extern int             httpError(http_t *http);
@@ -356,20 +471,20 @@ extern int                httpPost(http_t *http, const char *uri);
 extern int             httpPrintf(http_t *http, const char *format, ...)
                        __attribute__ ((__format__ (__printf__, 2, 3)));
 extern int             httpPut(http_t *http, const char *uri);
-extern int             httpRead(http_t *http, char *buffer, int length) _CUPS_DEPRECATED;
-extern int             httpReconnect(http_t *http);
+extern int             httpRead(http_t *http, char *buffer, int length) _CUPS_DEPRECATED_MSG("Use httpRead2 instead.");
+extern int             httpReconnect(http_t *http) _CUPS_DEPRECATED_MSG("Use httpReconnect2 instead.");
 extern void            httpSeparate(const char *uri, char *method,
                                     char *username, char *host, int *port,
-                                    char *resource) _CUPS_DEPRECATED;
+                                    char *resource) _CUPS_DEPRECATED_MSG("Use httpSeparateURI instead.");
 extern void            httpSetField(http_t *http, http_field_t field,
                                     const char *value);
 extern const char      *httpStatus(http_status_t status);
 extern int             httpTrace(http_t *http, const char *uri);
 extern http_status_t   httpUpdate(http_t *http);
-extern int             httpWrite(http_t *http, const char *buffer, int length) _CUPS_DEPRECATED;
-extern char            *httpEncode64(char *out, const char *in) _CUPS_DEPRECATED;
-extern char            *httpDecode64(char *out, const char *in) _CUPS_DEPRECATED;
-extern int             httpGetLength(http_t *http) _CUPS_DEPRECATED;
+extern int             httpWrite(http_t *http, const char *buffer, int length) _CUPS_DEPRECATED_MSG("Use httpWrite2 instead.");
+extern char            *httpEncode64(char *out, const char *in) _CUPS_DEPRECATED_MSG("Use httpEncode64_2 instead.");
+extern char            *httpDecode64(char *out, const char *in) _CUPS_DEPRECATED_MSG("Use httpDecode64_2 instead.");
+extern int             httpGetLength(http_t *http) _CUPS_DEPRECATED_MSG("Use httpGetLength2 instead.");
 extern char            *httpMD5(const char *, const char *, const char *,
                                 char [33]);
 extern char            *httpMD5Final(const char *, const char *, const char *,
@@ -390,7 +505,7 @@ extern void         httpSeparate2(const char *uri,
                                      char *method, int methodlen,
                                      char *username, int usernamelen,
                                      char *host, int hostlen, int *port,
-                                     char *resource, int resourcelen) _CUPS_DEPRECATED;
+                                     char *resource, int resourcelen) _CUPS_DEPRECATED_MSG("Use httpSeparateURI instead.");
 
 /**** New in CUPS 1.2/OS X 10.5 ****/
 extern int             httpAddrAny(const http_addr_t *addr) _CUPS_API_1_2;
@@ -469,6 +584,28 @@ extern int         httpReconnect2(http_t *http, int msec, int *cancel)
                                       _CUPS_API_1_6;
 
 
+/**** New in CUPS 1.7 ****/
+extern http_t          *httpAcceptConnection(int fd, int blocking)
+                                             _CUPS_API_1_7;
+extern http_addrlist_t *httpAddrCopyList(http_addrlist_t *src) _CUPS_API_1_7;
+extern int             httpAddrListen(http_addr_t *addr, int port)
+                                      _CUPS_API_1_7;
+extern int             httpAddrPort(http_addr_t *addr) _CUPS_API_1_7;
+extern http_t          *httpConnect2(const char *host, int port,
+                                     http_addrlist_t *addrlist,
+                                     int family, http_encryption_t encryption,
+                                     int blocking, int msec, int *cancel)
+                                     _CUPS_API_1_7;
+extern const char      *httpGetContentEncoding(http_t *http) _CUPS_API_1_7;
+extern http_status_t   httpGetExpect(http_t *http) _CUPS_API_1_7;
+extern ssize_t         httpPeek(http_t *http, char *buffer, size_t length)
+                                _CUPS_API_1_7;
+extern http_state_t    httpReadRequest(http_t *http, char *resource,
+                                       size_t resourcelen) _CUPS_API_1_7;
+extern http_state_t    httpWriteResponse(http_t *http,
+                                         http_status_t status) _CUPS_API_1_7;
+
+
 /*
  * C++ magic...
  */
index 1d3003c3f85b165bee6e89243fdf096d86bf64f8..c29d54895ae42c120160c5e16becc098eb877c18 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   Private IPP definitions for CUPS.
  *
- *   Copyright 2007-2011 by Apple Inc.
+ *   Copyright 2007-2012 by Apple Inc.
  *   Copyright 1997-2006 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
@@ -54,6 +54,7 @@ typedef struct                                /**** Attribute mapping data ****/
   ipp_tag_t    group_tag;              /* Group tag for this attribute */
   ipp_tag_t    alt_group_tag;          /* Alternate group tag for this
                                         * attribute */
+  const ipp_op_t *operations;          /* Allowed operations for this attr */
 } _ipp_option_t;
 
 
@@ -61,9 +62,11 @@ typedef struct                               /**** Attribute mapping data ****/
  * Prototypes for private functions...
  */
 
+#ifdef DEBUG
+extern const char      *_ippCheckOptions(void);
+#endif /* DEBUG */
 extern _ipp_option_t   *_ippFindOption(const char *name);
 
-
 /*
  * C++ magic...
  */
index 8ad921dd542a2dcb45892a383d80ae57f5d56663..dfe610352a32a87acc2d240c74280da6087fca90 100644 (file)
@@ -84,6 +84,43 @@ static const char * const ipp_status_oks[] = /* "OK" status codes */
                  "client-error-document-security-error",
                  "client-error-document-unprintable-error"
                },
+               * const ipp_status_480s[] =     /* Vendor client errors */
+               {
+                 /* 0x0480 - 0x048F */
+                 "0x0480",
+                 "0x0481",
+                 "0x0482",
+                 "0x0483",
+                 "0x0484",
+                 "0x0485",
+                 "0x0486",
+                 "0x0487",
+                 "0x0488",
+                 "0x0489",
+                 "0x048A",
+                 "0x048B",
+                 "0x048C",
+                 "0x048D",
+                 "0x048E",
+                 "0x048F",
+                 /* 0x0490 - 0x049F */
+                 "0x0490",
+                 "0x0491",
+                 "0x0492",
+                 "0x0493",
+                 "0x0494",
+                 "0x0495",
+                 "0x0496",
+                 "0x0497",
+                 "0x0498",
+                 "0x0499",
+                 "0x049A",
+                 "0x049B",
+                 "cups-error-account-info-needed",
+                 "cups-error-account-closed",
+                 "cups-error-account-limit-reached",
+                 "cups-error-account-authorization-failed"
+               },
                * const ipp_status_500s[] =             /* Server errors */
                {
                  "server-error-internal-error",
@@ -102,7 +139,7 @@ static const char * const ipp_status_oks[] =        /* "OK" status codes */
                },
                * const ipp_status_1000s[] =            /* CUPS internal */
                {
-                 "cups-authorization-canceled",
+                 "cups-authentication-canceled",
                  "cups-pki-error",
                  "cups-upgrade-required"
                };
@@ -360,6 +397,101 @@ static const char * const ipp_document_states[] =
                  "trim-after-copies",
                  "trim-after-job"
                },
+               * const ipp_finishings_vendor[] =
+               {
+                 /* 0x40000000 to 0x4000000F */
+                 "0x40000000",
+                 "0x40000001",
+                 "0x40000002",
+                 "0x40000003",
+                 "0x40000004",
+                 "0x40000005",
+                 "0x40000006",
+                 "0x40000007",
+                 "0x40000008",
+                 "0x40000009",
+                 "0x4000000A",
+                 "0x4000000B",
+                 "0x4000000C",
+                 "0x4000000D",
+                 "0x4000000E",
+                 "0x4000000F",
+                 /* 0x40000010 to 0x4000001F */
+                 "0x40000010",
+                 "0x40000011",
+                 "0x40000012",
+                 "0x40000013",
+                 "0x40000014",
+                 "0x40000015",
+                 "0x40000016",
+                 "0x40000017",
+                 "0x40000018",
+                 "0x40000019",
+                 "0x4000001A",
+                 "0x4000001B",
+                 "0x4000001C",
+                 "0x4000001D",
+                 "0x4000001E",
+                 "0x4000001F",
+                 /* 0x40000020 to 0x4000002F */
+                 "0x40000020",
+                 "0x40000021",
+                 "0x40000022",
+                 "0x40000023",
+                 "0x40000024",
+                 "0x40000025",
+                 "0x40000026",
+                 "0x40000027",
+                 "0x40000028",
+                 "0x40000029",
+                 "0x4000002A",
+                 "0x4000002B",
+                 "0x4000002C",
+                 "0x4000002D",
+                 "0x4000002E",
+                 "0x4000002F",
+                 /* 0x40000030 to 0x4000003F */
+                 "0x40000030",
+                 "0x40000031",
+                 "0x40000032",
+                 "0x40000033",
+                 "0x40000034",
+                 "0x40000035",
+                 "0x40000036",
+                 "0x40000037",
+                 "0x40000038",
+                 "0x40000039",
+                 "0x4000003A",
+                 "0x4000003B",
+                 "0x4000003C",
+                 "0x4000003D",
+                 "0x4000003E",
+                 "0x4000003F",
+                 /* 0x40000040 - 0x4000004F */
+                 "0x40000040",
+                 "0x40000041",
+                 "0x40000042",
+                 "0x40000043",
+                 "0x40000044",
+                 "0x40000045",
+                 "punch-top-left",
+                 "punch-bottom-left",
+                 "punch-top-right",
+                 "punch-bottom-right",
+                 "punch-dual-left",
+                 "punch-dual-top",
+                 "punch-dual-right",
+                 "punch-dual-bottom",
+                 "punch-triple-left",
+                 "punch-triple-top",
+                 /* 0x40000050 - 0x40000055 */
+                 "punch-triple-right",
+                 "punch-triple-bottom",
+                 "punch-quad-left",
+                 "punch-quad-top",
+                 "punch-quad-right",
+                 "punch-quad-bottom",
+               },
                * const ipp_job_collation_types[] =
                {                       /* job-collation-type enums */
                  "uncollated-sheets",
@@ -648,14 +780,21 @@ ippEnumString(const char *attrname,       /* I - Attribute name */
       enumvalue <= (3 + (int)(sizeof(ipp_document_states) /
                               sizeof(ipp_document_states[0]))))
     return (ipp_document_states[enumvalue - 3]);
-  else if ((!strcmp(attrname, "finishings") ||
-            !strcmp(attrname, "finishings-actual") ||
-            !strcmp(attrname, "finishings-default") ||
-            !strcmp(attrname, "finishings-ready") ||
-            !strcmp(attrname, "finishings-supported")) &&
-           enumvalue >= 3 &&
-           enumvalue <= (3 + (int)(sizeof(ipp_finishings) / sizeof(ipp_finishings[0]))))
-    return (ipp_finishings[enumvalue - 3]);
+  else if (!strcmp(attrname, "finishings") ||
+          !strcmp(attrname, "finishings-actual") ||
+          !strcmp(attrname, "finishings-default") ||
+          !strcmp(attrname, "finishings-ready") ||
+          !strcmp(attrname, "finishings-supported"))
+  {
+    if (enumvalue >= 3 &&
+        enumvalue <= (3 + (int)(sizeof(ipp_finishings) /
+                                sizeof(ipp_finishings[0]))))
+      return (ipp_finishings[enumvalue - 3]);
+    else if (enumvalue >= 0x40000000 &&
+             enumvalue <= (0x40000000 + (int)(sizeof(ipp_finishings_vendor) /
+                                              sizeof(ipp_finishings_vendor[0]))))
+      return (ipp_finishings_vendor[enumvalue - 0x40000000]);
+  }
   else if ((!strcmp(attrname, "job-collation-type") ||
             !strcmp(attrname, "job-collation-type-actual")) &&
            enumvalue >= 3 &&
@@ -731,6 +870,13 @@ ippEnumValue(const char *attrname, /* I - Attribute name */
           !strcmp(attrname, "finishings-ready") ||
           !strcmp(attrname, "finishings-supported"))
   {
+    for (i = 0;
+         i < (int)(sizeof(ipp_finishings_vendor) /
+                   sizeof(ipp_finishings_vendor[0]));
+         i ++)
+      if (!strcmp(enumstring, ipp_finishings_vendor[i]))
+       return (i + 0x40000000);
+
     num_strings = (int)(sizeof(ipp_finishings) / sizeof(ipp_finishings[0]));
     strings     = ipp_finishings;
   }
@@ -795,18 +941,25 @@ ippErrorString(ipp_status_t error)        /* I - Error status */
   * See if the error code is a known value...
   */
 
-  if (error >= IPP_OK && error <= IPP_OK_EVENTS_COMPLETE)
+  if (error >= IPP_STATUS_OK && error <= IPP_STATUS_OK_EVENTS_COMPLETE)
     return (ipp_status_oks[error]);
-  else if (error == IPP_REDIRECTION_OTHER_SITE)
+  else if (error == IPP_STATUS_REDIRECTION_OTHER_SITE)
     return ("redirection-other-site");
-  else if (error == CUPS_SEE_OTHER)
+  else if (error == IPP_STATUS_CUPS_SEE_OTHER)
     return ("cups-see-other");
-  else if (error >= IPP_BAD_REQUEST && error <= IPP_PRINT_SUPPORT_FILE_NOT_FOUND)
-    return (ipp_status_400s[error - IPP_BAD_REQUEST]);
-  else if (error >= IPP_INTERNAL_ERROR && error <= IPP_PRINTER_IS_DEACTIVATED)
-    return (ipp_status_500s[error - IPP_INTERNAL_ERROR]);
-  else if (error >= IPP_AUTHENTICATION_CANCELED && error <= IPP_UPGRADE_REQUIRED)
-    return (ipp_status_1000s[error - IPP_AUTHENTICATION_CANCELED]);
+  else if (error >= IPP_STATUS_ERROR_BAD_REQUEST &&
+           error <= IPP_STATUS_ERROR_DOCUMENT_UNPRINTABLE)
+    return (ipp_status_400s[error - IPP_STATUS_ERROR_BAD_REQUEST]);
+  else if (error >= 0x480 &&
+           error <= IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED)
+    return (ipp_status_480s[error - 0x0480]);
+  else if (error >= IPP_STATUS_ERROR_INTERNAL &&
+           error <= IPP_STATUS_ERROR_TOO_MANY_DOCUMENTS)
+    return (ipp_status_500s[error - IPP_STATUS_ERROR_INTERNAL]);
+  else if (error >= IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED &&
+           error <= IPP_STATUS_ERROR_CUPS_UPGRADE_REQUIRED)
+    return (ipp_status_1000s[error -
+                             IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED]);
 
  /*
   * No, build an "0xxxxx" error string...
@@ -835,15 +988,19 @@ ippErrorValue(const char *name)           /* I - Name */
       return ((ipp_status_t)i);
 
   if (!_cups_strcasecmp(name, "redirection-other-site"))
-    return (IPP_REDIRECTION_OTHER_SITE);
+    return (IPP_STATUS_REDIRECTION_OTHER_SITE);
 
   if (!_cups_strcasecmp(name, "cups-see-other"))
-    return (CUPS_SEE_OTHER);
+    return (IPP_STATUS_CUPS_SEE_OTHER);
 
   for (i = 0; i < (sizeof(ipp_status_400s) / sizeof(ipp_status_400s[0])); i ++)
     if (!_cups_strcasecmp(name, ipp_status_400s[i]))
       return ((ipp_status_t)(i + 0x400));
 
+  for (i = 0; i < (sizeof(ipp_status_480s) / sizeof(ipp_status_480s[0])); i ++)
+    if (!_cups_strcasecmp(name, ipp_status_480s[i]))
+      return ((ipp_status_t)(i + 0x480));
+
   for (i = 0; i < (sizeof(ipp_status_500s) / sizeof(ipp_status_500s[0])); i ++)
     if (!_cups_strcasecmp(name, ipp_status_500s[i]))
       return ((ipp_status_t)(i + 0x500));
@@ -872,13 +1029,13 @@ ippOpString(ipp_op_t op)         /* I - Operation ID */
   * See if the operation ID is a known value...
   */
 
-  if (op >= IPP_PRINT_JOB && op <= IPP_CLOSE_JOB)
+  if (op >= IPP_OP_PRINT_JOB && op <= IPP_OP_CLOSE_JOB)
     return (ipp_std_ops[op]);
-  else if (op == IPP_PRIVATE)
+  else if (op == IPP_OP_PRIVATE)
     return ("windows-ext");
-  else if (op >= CUPS_GET_DEFAULT && op <= CUPS_GET_PPD)
+  else if (op >= IPP_OP_CUPS_GET_DEFAULT && op <= IPP_OP_CUPS_GET_PPD)
     return (ipp_cups_ops[op - CUPS_GET_DEFAULT]);
-  else if (op == CUPS_GET_DOCUMENT)
+  else if (op == IPP_OP_CUPS_GET_DOCUMENT)
     return (ipp_cups_ops2[0]);
 
  /*
@@ -911,7 +1068,7 @@ ippOpValue(const char *name)               /* I - Textual name */
       return ((ipp_op_t)i);
 
   if (!_cups_strcasecmp(name, "windows-ext"))
-    return (IPP_PRIVATE);
+    return (IPP_OP_PRIVATE);
 
   for (i = 0; i < (sizeof(ipp_cups_ops) / sizeof(ipp_cups_ops[0])); i ++)
     if (!_cups_strcasecmp(name, ipp_cups_ops[i]))
@@ -922,12 +1079,12 @@ ippOpValue(const char *name)             /* I - Textual name */
       return ((ipp_op_t)(i + 0x4027));
 
   if (!_cups_strcasecmp(name, "CUPS-Add-Class"))
-    return (CUPS_ADD_MODIFY_CLASS);
+    return (IPP_OP_CUPS_ADD_MODIFY_CLASS);
 
   if (!_cups_strcasecmp(name, "CUPS-Add-Printer"))
-    return (CUPS_ADD_MODIFY_PRINTER);
+    return (IPP_OP_CUPS_ADD_MODIFY_PRINTER);
 
-  return ((ipp_op_t)-1);
+  return (IPP_OP_CUPS_INVALID);
 }
 
 
index 9290edbbc3c381ac9643c0c1dae2ab4ee3b37c6c..0c54a28038305f0ced71607c4eff01bc703cd7cc 100644 (file)
  *   ippAddResolutions()    - Add resolution values to an IPP message.
  *   ippAddSeparator()     - Add a group separator to an IPP message.
  *   ippAddString()        - Add a language-encoded string to an IPP message.
+ *   ippAddStringf()       - Add a formatted string to an IPP message.
+ *   ippAddStringfv()      - Add a formatted string to an IPP message.
  *   ippAddStrings()       - Add language-encoded strings to an IPP message.
+ *   ippContainsInteger()   - Determine whether an attribute contains the
+ *                           specified value or is within the list of ranges.
+ *   ippContainsString()    - Determine whether an attribute contains the
+ *                           specified string value.
  *   ippCopyAttribute()     - Copy an attribute.
  *   ippCopyAttributes()    - Copy attributes from one IPP message to another.
  *   ippDateToTime()       - Convert from RFC 1903 Date/Time format to UNIX
  *   ippGetBoolean()       - Get a boolean value for an attribute.
  *   ippGetCollection()     - Get a collection value for an attribute.
  *   ippGetCount()         - Get the number of values in an attribute.
- *   ippGetDate()           - Get a date value for an attribute.
+ *   ippGetDate()          - Get a date value for an attribute.
  *   ippGetGroupTag()      - Get the group associated with an attribute.
  *   ippGetInteger()       - Get the integer/enum value for an attribute.
  *   ippGetName()          - Get the attribute name.
  *   ippGetOperation()     - Get the operation ID in an IPP message.
- *   ippGetRange()          - Get a rangeOfInteger value from an attribute.
+ *   ippGetRange()         - Get a rangeOfInteger value from an attribute.
  *   ippGetRequestId()     - Get the request ID from an IPP message.
  *   ippGetResolution()     - Get a resolution value for an attribute.
+ *   ippGetState()         - Get the IPP message state.
  *   ippGetStatusCode()     - Get the status code from an IPP response or event
  *                           message.
  *   ippGetString()        - Get the string and optionally the language code
  *   ippNextAttribute()     - Return the next attribute in the message.
  *   ippNew()              - Allocate a new IPP message.
  *   ippNewRequest()       - Allocate a new IPP request message.
+ *   ippNewResponse()      - Allocate a new IPP response message.
  *   ippRead()             - Read data for an IPP message from a HTTP
  *                           connection.
  *   ippReadFile()         - Read data for an IPP message from a file.
  *   ippReadIO()           - Read data for an IPP message.
  *   ippSetBoolean()       - Set a boolean value in an attribute.
  *   ippSetCollection()     - Set a collection value in an attribute.
- *   ippSetDate()           - Set a date value in an attribute.
+ *   ippSetDate()          - Set a date value in an attribute.
  *   ippSetGroupTag()      - Set the group tag of an attribute.
  *   ippSetInteger()       - Set an integer or enum value in an attribute.
  *   ippSetName()          - Set the name of an attribute.
  *   ippSetRange()         - Set a rangeOfInteger value in an attribute.
  *   ippSetRequestId()     - Set the request ID in an IPP message.
  *   ippSetResolution()     - Set a resolution value in an attribute.
- *   ippSetState()          - Set the current state of the IPP message.
+ *   ippSetState()         - Set the current state of the IPP message.
  *   ippSetStatusCode()     - Set the status code in an IPP response or event
  *                           message.
  *   ippSetString()        - Set a string value in an attribute.
+ *   ippSetStringf()       - Set a formatted string value of an attribute.
+ *   ippSetStringf()       - Set a formatted string value of an attribute.
  *   ippSetValueTag()      - Set the value tag of an attribute.
  *   ippSetVersion()       - Set the version number in an IPP message.
  *   ippTimeToDate()       - Convert from UNIX time to RFC 1903 format.
@@ -196,8 +206,8 @@ _cupsBufferRelease(char *b)         /* I - Buffer to release */
 /*
  * 'ippAddBoolean()' - Add a boolean attribute to an IPP message.
  *
- * The @code ipp@ parameter refers to an IPP message previously created using the
- * @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code group@ parameter specifies the IPP attribute group tag: none
  * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
@@ -242,8 +252,8 @@ ippAddBoolean(ipp_t      *ipp,              /* I - IPP message */
 /*
  * 'ippAddBooleans()' - Add an array of boolean values.
  *
- * The @code ipp@ parameter refers to an IPP message previously created using the
- * @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code group@ parameter specifies the IPP attribute group tag: none
  * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
@@ -299,8 +309,8 @@ ippAddBooleans(ipp_t      *ipp,             /* I - IPP message */
 /*
  * 'ippAddCollection()' - Add a collection value.
  *
- * The @code ipp@ parameter refers to an IPP message previously created using the
- * @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code group@ parameter specifies the IPP attribute group tag: none
  * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
@@ -350,8 +360,8 @@ ippAddCollection(ipp_t      *ipp,   /* I - IPP message */
 /*
  * 'ippAddCollections()' - Add an array of collection values.
  *
- * The @code ipp@ parameter refers to an IPP message previously created using the
- * @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code group@ parameter specifies the IPP attribute group tag: none
  * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
@@ -414,8 +424,8 @@ ippAddCollections(
 /*
  * 'ippAddDate()' - Add a date attribute to an IPP message.
  *
- * The @code ipp@ parameter refers to an IPP message previously created using the
- * @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code group@ parameter specifies the IPP attribute group tag: none
  * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
@@ -460,8 +470,8 @@ ippAddDate(ipp_t             *ipp,  /* I - IPP message */
 /*
  * 'ippAddInteger()' - Add a integer attribute to an IPP message.
  *
- * The @code ipp@ parameter refers to an IPP message previously created using the
- * @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code group@ parameter specifies the IPP attribute group tag: none
  * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
@@ -528,8 +538,8 @@ ippAddInteger(ipp_t      *ipp,              /* I - IPP message */
 /*
  * 'ippAddIntegers()' - Add an array of integer values.
  *
- * The @code ipp@ parameter refers to an IPP message previously created using the
- * @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code group@ parameter specifies the IPP attribute group tag: none
  * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
@@ -600,8 +610,8 @@ ippAddIntegers(ipp_t      *ipp,             /* I - IPP message */
 /*
  * 'ippAddOctetString()' - Add an octetString value to an IPP message.
  *
- * The @code ipp@ parameter refers to an IPP message previously created using the
- * @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code group@ parameter specifies the IPP attribute group tag: none
  * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
@@ -624,7 +634,7 @@ ippAddOctetString(ipp_t      *ipp,  /* I - IPP message */
 
   if (!ipp || !name || group < IPP_TAG_ZERO ||
       group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE ||
-      datalen < 0 || datalen > IPP_MAX_OCTETSTRING)
+      datalen < 0 || datalen > IPP_MAX_LENGTH)
     return (NULL);
 
   if ((attr = ipp_add_attr(ipp, name, group, IPP_TAG_STRING, 1)) == NULL)
@@ -658,8 +668,8 @@ ippAddOctetString(ipp_t      *ipp,  /* I - IPP message */
 /*
  * 'ippAddOutOfBand()' - Add an out-of-band value to an IPP message.
  *
- * The @code ipp@ parameter refers to an IPP message previously created using the
- * @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code group@ parameter specifies the IPP attribute group tag: none
  * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
@@ -714,8 +724,8 @@ ippAddOutOfBand(ipp_t      *ipp,    /* I - IPP message */
 /*
  * 'ippAddRange()' - Add a range of values to an IPP message.
  *
- * The @code ipp@ parameter refers to an IPP message previously created using the
- * @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code group@ parameter specifies the IPP attribute group tag: none
  * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
@@ -765,8 +775,8 @@ ippAddRange(ipp_t      *ipp,                /* I - IPP message */
 /*
  * 'ippAddRanges()' - Add ranges of values to an IPP message.
  *
- * The @code ipp@ parameter refers to an IPP message previously created using the
- * @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code group@ parameter specifies the IPP attribute group tag: none
  * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
@@ -826,8 +836,8 @@ ippAddRanges(ipp_t      *ipp,               /* I - IPP message */
 /*
  * 'ippAddResolution()' - Add a resolution value to an IPP message.
  *
- * The @code ipp@ parameter refers to an IPP message previously created using the
- * @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code group@ parameter specifies the IPP attribute group tag: none
  * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
@@ -879,8 +889,8 @@ ippAddResolution(ipp_t      *ipp,   /* I - IPP message */
 /*
  * 'ippAddResolutions()' - Add resolution values to an IPP message.
  *
- * The @code ipp@ parameter refers to an IPP message previously created using the
- * @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code group@ parameter specifies the IPP attribute group tag: none
  * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
@@ -943,8 +953,8 @@ ippAddResolutions(ipp_t      *ipp,  /* I - IPP message */
 /*
  * 'ippAddSeparator()' - Add a group separator to an IPP message.
  *
- * The @code ipp@ parameter refers to an IPP message previously created using the
- * @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  */
 
 ipp_attribute_t *                      /* O - New attribute */
@@ -970,8 +980,8 @@ ippAddSeparator(ipp_t *ipp)         /* I - IPP message */
 /*
  * 'ippAddString()' - Add a language-encoded string to an IPP message.
  *
- * The @code ipp@ parameter refers to an IPP message previously created using the
- * @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code group@ parameter specifies the IPP attribute group tag: none
  * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
@@ -1084,11 +1094,226 @@ ippAddString(ipp_t      *ipp,          /* I - IPP message */
 }
 
 
+/*
+ * 'ippAddStringf()' - Add a formatted string to an IPP message.
+ *
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
+ *
+ * The @code group@ parameter specifies the IPP attribute group tag: none
+ * (@code IPP_TAG_ZERO@, for member attributes), document
+ * (@code IPP_TAG_DOCUMENT@), event notification
+ * (@code IPP_TAG_EVENT_NOTIFICATION@), operation (@code IPP_TAG_OPERATION@),
+ * printer (@code IPP_TAG_PRINTER@), subscription (@code IPP_TAG_SUBSCRIPTION@),
+ * or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
+ *
+ * Supported string values include charset (@code IPP_TAG_CHARSET@), keyword
+ * (@code IPP_TAG_KEYWORD@), language (@code IPP_TAG_LANGUAGE@), mimeMediaType
+ * (@code IPP_TAG_MIMETYPE@), name (@code IPP_TAG_NAME@), nameWithLanguage
+ * (@code IPP_TAG_NAMELANG), text (@code IPP_TAG_TEXT@), textWithLanguage
+ * (@code IPP_TAG_TEXTLANG@), uri (@code IPP_TAG_URI@), and uriScheme
+ * (@code IPP_TAG_URISCHEME@).
+ *
+ * The @code language@ parameter must be non-@code NULL@ for nameWithLanguage
+ * and textWithLanguage string values and must be @code NULL@ for all other
+ * string values.
+ *
+ * The @code format@ parameter uses formatting characters compatible with the
+ * printf family of standard functions.  Additional arguments follow it as
+ * needed.  The formatted string is truncated as needed to the maximum length of
+ * the corresponding value type.
+ *
+ * @since CUPS 1.7@
+ */
+
+ipp_attribute_t *                      /* O - New attribute */
+ippAddStringf(ipp_t      *ipp,         /* I - IPP message */
+              ipp_tag_t  group,                /* I - IPP group */
+             ipp_tag_t  value_tag,     /* I - Type of attribute */
+             const char *name,         /* I - Name of attribute */
+             const char *language,     /* I - Language code (@code NULL@ for default) */
+             const char *format,       /* I - Printf-style format string */
+             ...)                      /* I - Additional arguments as needed */
+{
+  ipp_attribute_t      *attr;          /* New attribute */
+  va_list              ap;             /* Argument pointer */
+
+
+  va_start(ap, format);
+  attr = ippAddStringfv(ipp, group, value_tag, name, language, format, ap);
+  va_end(ap);
+
+  return (attr);
+}
+
+
+/*
+ * 'ippAddStringfv()' - Add a formatted string to an IPP message.
+ *
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
+ *
+ * The @code group@ parameter specifies the IPP attribute group tag: none
+ * (@code IPP_TAG_ZERO@, for member attributes), document
+ * (@code IPP_TAG_DOCUMENT@), event notification
+ * (@code IPP_TAG_EVENT_NOTIFICATION@), operation (@code IPP_TAG_OPERATION@),
+ * printer (@code IPP_TAG_PRINTER@), subscription (@code IPP_TAG_SUBSCRIPTION@),
+ * or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
+ *
+ * Supported string values include charset (@code IPP_TAG_CHARSET@), keyword
+ * (@code IPP_TAG_KEYWORD@), language (@code IPP_TAG_LANGUAGE@), mimeMediaType
+ * (@code IPP_TAG_MIMETYPE@), name (@code IPP_TAG_NAME@), nameWithLanguage
+ * (@code IPP_TAG_NAMELANG), text (@code IPP_TAG_TEXT@), textWithLanguage
+ * (@code IPP_TAG_TEXTLANG@), uri (@code IPP_TAG_URI@), and uriScheme
+ * (@code IPP_TAG_URISCHEME@).
+ *
+ * The @code language@ parameter must be non-@code NULL@ for nameWithLanguage
+ * and textWithLanguage string values and must be @code NULL@ for all other
+ * string values.
+ *
+ * The @code format@ parameter uses formatting characters compatible with the
+ * printf family of standard functions.  Additional arguments are passed in the
+ * stdarg pointer @code ap@.  The formatted string is truncated as needed to the
+ * maximum length of the corresponding value type.
+ *
+ * @since CUPS 1.7@
+ */
+
+ipp_attribute_t *                      /* O - New attribute */
+ippAddStringfv(ipp_t      *ipp,                /* I - IPP message */
+               ipp_tag_t  group,       /* I - IPP group */
+              ipp_tag_t  value_tag,    /* I - Type of attribute */
+              const char *name,        /* I - Name of attribute */
+              const char *language,    /* I - Language code (@code NULL@ for default) */
+              const char *format,      /* I - Printf-style format string */
+              va_list    ap)           /* I - Additional arguments */
+{
+  char         buffer[IPP_MAX_TEXT + 4];
+                                       /* Formatted text string */
+  ssize_t      bytes,                  /* Length of formatted value */
+               max_bytes;              /* Maximum number of bytes for value */
+
+
+ /*
+  * Range check input...
+  */
+
+  if (!ipp || !name || group < IPP_TAG_ZERO ||
+      group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE ||
+      (value_tag < IPP_TAG_TEXT && value_tag != IPP_TAG_TEXTLANG &&
+       value_tag != IPP_TAG_NAMELANG) || value_tag > IPP_TAG_MIMETYPE ||
+      !format || !ap)
+    return (NULL);
+
+  if ((value_tag == IPP_TAG_TEXTLANG || value_tag == IPP_TAG_NAMELANG)
+          != (language != NULL))
+    return (NULL);
+
+ /*
+  * Format the string...
+  */
+
+  if (!strcmp(format, "%s"))
+  {
+   /*
+    * Optimize the simple case...
+    */
+
+    const char *s = va_arg(ap, char *);
+
+    if (!s)
+      s = "(null)";
+
+    bytes = strlen(s);
+    strlcpy(buffer, s, sizeof(buffer));
+  }
+  else
+  {
+   /*
+    * Do a full formatting of the message...
+    */
+
+    if ((bytes = vsnprintf(buffer, sizeof(buffer), format, ap)) < 0)
+      return (NULL);
+  }
+
+ /*
+  * Limit the length of the string...
+  */
+
+  switch (value_tag)
+  {
+    default :
+    case IPP_TAG_TEXT :
+    case IPP_TAG_TEXTLANG :
+        max_bytes = IPP_MAX_TEXT;
+        break;
+
+    case IPP_TAG_NAME :
+    case IPP_TAG_NAMELANG :
+        max_bytes = IPP_MAX_NAME;
+        break;
+
+    case IPP_TAG_CHARSET :
+        max_bytes = IPP_MAX_CHARSET;
+        break;
+
+    case IPP_TAG_KEYWORD :
+        max_bytes = IPP_MAX_KEYWORD;
+        break;
+
+    case IPP_TAG_LANGUAGE :
+        max_bytes = IPP_MAX_LANGUAGE;
+        break;
+
+    case IPP_TAG_MIMETYPE :
+        max_bytes = IPP_MAX_MIMETYPE;
+        break;
+
+    case IPP_TAG_URI :
+        max_bytes = IPP_MAX_URI;
+        break;
+
+    case IPP_TAG_URISCHEME :
+        max_bytes = IPP_MAX_URISCHEME;
+        break;
+  }
+
+  if (bytes >= max_bytes)
+  {
+    char       *bufmax,                /* Buffer at max_bytes */
+               *bufptr;                /* Pointer into buffer */
+
+    bufptr = buffer + strlen(buffer) - 1;
+    bufmax = buffer + max_bytes - 1;
+
+    while (bufptr > bufmax)
+    {
+      if (*bufptr & 0x80)
+      {
+        while ((*bufptr & 0xc0) == 0x80 && bufptr > buffer)
+          bufptr --;
+      }
+
+      bufptr --;
+    }
+
+    *bufptr = '\0';
+  }
+
+ /*
+  * Add the formatted string and return...
+  */
+
+  return (ippAddString(ipp, group, value_tag, name, language, buffer));
+}
+
+
 /*
  * 'ippAddStrings()' - Add language-encoded strings to an IPP message.
  *
- * The @code ipp@ parameter refers to an IPP message previously created using the
- * @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code group@ parameter specifies the IPP attribute group tag: none
  * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
@@ -1225,6 +1450,133 @@ ippAddStrings(
 }
 
 
+/*
+ * 'ippContainsInteger()' - Determine whether an attribute contains the
+ *                          specified value or is within the list of ranges.
+ *
+ * Returns non-zero when the attribute contains either a matching integer or
+ * enum value, or the value falls within one of the rangeOfInteger values for
+ * the attribute.
+ *
+ * @since CUPS 1.7@
+ */
+
+int                                    /* O - 1 on a match, 0 on no match */
+ippContainsInteger(
+    ipp_attribute_t *attr,             /* I - Attribute */
+    int             value)             /* I - Integer/enum value */
+{
+  int          i;                      /* Looping var */
+  _ipp_value_t *avalue;                /* Current attribute value */
+
+
+ /*
+  * Range check input...
+  */
+
+  if (!attr)
+    return (0);
+
+  if (attr->value_tag != IPP_TAG_INTEGER && attr->value_tag != IPP_TAG_ENUM &&
+      attr->value_tag != IPP_TAG_RANGE)
+    return (0);
+
+ /*
+  * Compare...
+  */
+
+  if (attr->value_tag == IPP_TAG_RANGE)
+  {
+    for (i = attr->num_values, avalue = attr->values; i > 0; i --, avalue ++)
+      if (value >= avalue->range.lower && value <= avalue->range.upper)
+        return (1);
+  }
+  else
+  {
+    for (i = attr->num_values, avalue = attr->values; i > 0; i --, avalue ++)
+      if (value == avalue->integer)
+        return (1);
+  }
+
+  return (0);
+}
+
+
+/*
+ * 'ippContainsString()' - Determine whether an attribute contains the
+ *                         specified string value.
+ *
+ * Returns non-zero when the attribute contains a matching charset, keyword,
+ * language, mimeMediaType, name, text, URI, or URI scheme value.
+ *
+ * @since CUPS 1.7@
+ */
+
+int                                    /* O - 1 on a match, 0 on no match */
+ippContainsString(
+    ipp_attribute_t *attr,             /* I - Attribute */
+    const char      *value)            /* I - String value */
+{
+  int          i;                      /* Looping var */
+  _ipp_value_t *avalue;                /* Current attribute value */
+
+
+  DEBUG_printf(("ippContainsString(attr=%p, value=\"%s\")", attr, value));
+
+ /*
+  * Range check input...
+  */
+
+  if (!attr || !value)
+  {
+    DEBUG_puts("1ippContainsString: Returning 0 (bad input)");
+    return (0);
+  }
+
+ /*
+  * Compare...
+  */
+
+  DEBUG_printf(("1ippContainsString: attr %s, %s with %d values.",
+               attr->name, ippTagString(attr->value_tag),
+               attr->num_values));
+
+  switch (attr->value_tag & IPP_TAG_CUPS_MASK)
+  {
+    case IPP_TAG_CHARSET :
+    case IPP_TAG_KEYWORD :
+    case IPP_TAG_LANGUAGE :
+    case IPP_TAG_MIMETYPE :
+    case IPP_TAG_NAME :
+    case IPP_TAG_NAMELANG :
+    case IPP_TAG_TEXT :
+    case IPP_TAG_TEXTLANG :
+    case IPP_TAG_URI :
+    case IPP_TAG_URISCHEME :
+       for (i = attr->num_values, avalue = attr->values;
+            i > 0;
+            i --, avalue ++)
+       {
+         DEBUG_printf(("1ippContainsString: value[%d]=\"%s\"",
+                       attr->num_values - i, avalue->string.text));
+
+         if (!strcmp(value, avalue->string.text))
+         {
+           DEBUG_puts("1ippContainsString: Returning 1 (match)");
+           return (1);
+         }
+        }
+
+    default :
+        break;
+  }
+
+  DEBUG_puts("1ippContainsString: Returning 0 (no match)");
+
+  return (0);
+}
+
+
 /*
  * 'ippCopyAttribute()' - Copy an attribute.
  *
@@ -2250,7 +2602,7 @@ ippGetValueTag(ipp_attribute_t *attr)     /* I - IPP attribute */
   * Return the value...
   */
 
-  return (attr->value_tag);
+  return (attr->value_tag & IPP_TAG_MASK);
 }
 
 
@@ -2415,6 +2767,114 @@ ippNewRequest(ipp_op_t op)              /* I - Operation code */
 }
 
 
+/*
+ * 'ippNewResponse()' - Allocate a new IPP response message.
+ *
+ * The new response message is initialized with the same version-number,
+ * request-id, attributes-charset, and attributes-natural-language as the
+ * provided request message.  If the attributes-charset or
+ * attributes-natural-language attributes are missing from the request,
+ * "utf-8" and a value derived from the current locale are substituted,
+ * respectively.
+ *
+ * @since CUPS 1.7@
+ */
+
+ipp_t *                                        /* O - IPP response message */
+ippNewResponse(ipp_t *request)         /* I - IPP request message */
+{
+  ipp_t                        *response;      /* IPP response message */
+  ipp_attribute_t      *attr;          /* Current attribute */
+
+
+ /*
+  * Range check input...
+  */
+
+  if (!request)
+    return (NULL);
+
+ /*
+  * Create a new IPP message...
+  */
+
+  if ((response = ippNew()) == NULL)
+    return (NULL);
+
+ /*
+  * Copy the request values over to the response...
+  */
+
+  response->request.status.version[0] = request->request.op.version[0];
+  response->request.status.version[1] = request->request.op.version[1];
+  response->request.status.request_id = request->request.op.request_id;
+
+ /*
+  * The first attribute MUST be attributes-charset...
+  */
+
+  attr = request->attrs;
+
+  if (attr && attr->name && !strcmp(attr->name, "attributes-charset") &&
+      attr->group_tag == IPP_TAG_OPERATION &&
+      attr->value_tag == IPP_TAG_CHARSET &&
+      attr->num_values == 1)
+  {
+   /*
+    * Copy charset from request...
+    */
+
+    ippAddString(response, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
+                "attributes-charset", NULL, attr->values[0].string.text);
+  }
+  else
+  {
+   /*
+    * Use "utf-8" as the default...
+    */
+
+    ippAddString(response, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
+                "attributes-charset", NULL, "utf-8");
+  }
+
+ /*
+  * Then attributes-natural-language...
+  */
+
+  if (attr)
+    attr = attr->next;
+
+  if (attr && attr->name &&
+      !strcmp(attr->name, "attributes-natural-language") &&
+      attr->group_tag == IPP_TAG_OPERATION &&
+      attr->value_tag == IPP_TAG_LANGUAGE &&
+      attr->num_values == 1)
+  {
+   /*
+    * Copy language from request...
+    */
+
+    ippAddString(response, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
+                "attributes-natural-language", NULL,
+                attr->values[0].string.text);
+  }
+  else
+  {
+   /*
+    * Use the language from the current locale...
+    */
+
+    cups_lang_t *language = cupsLangDefault();
+                                       /* Current locale */
+
+    ippAddString(response, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
+                "attributes-natural-language", NULL, language->language);
+  }
+
+  return (response);
+}
+
+
 /*
  * 'ippRead()' - Read data for an IPP message from a HTTP connection.
  */
@@ -3211,7 +3671,7 @@ ippReadIO(void       *src,                /* I - Data source */
                break;
 
             default : /* Other unsupported values */
-                if (tag == IPP_TAG_STRING && n > IPP_MAX_OCTETSTRING)
+                if (tag == IPP_TAG_STRING && n > IPP_MAX_LENGTH)
                {
                  _cupsSetError(IPP_INTERNAL_ERROR,
                                _("IPP octetString length too large."), 1);
@@ -3271,8 +3731,8 @@ ippReadIO(void       *src,                /* I - Data source */
 /*
  * 'ippSetBoolean()' - Set a boolean value in an attribute.
  *
- * The @code ipp@ parameter refers to the IPP message containing the attribute that was
- * previously created using the @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code attr@ parameter may be modified as a result of setting the value.
  *
@@ -3313,8 +3773,8 @@ ippSetBoolean(ipp_t           *ipp,       /* IO - IPP message */
 /*
  * 'ippSetCollection()' - Set a collection value in an attribute.
  *
- * The @code ipp@ parameter refers to the IPP message containing the attribute that was
- * previously created using the @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code attr@ parameter may be modified as a result of setting the value.
  *
@@ -3362,8 +3822,8 @@ ippSetCollection(
 /*
  * 'ippSetDate()' - Set a date value in an attribute.
  *
- * The @code ipp@ parameter refers to the IPP message containing the attribute that was
- * previously created using the @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code attr@ parameter may be modified as a result of setting the value.
  *
@@ -3404,8 +3864,8 @@ ippSetDate(ipp_t             *ipp,        /* IO - IPP message */
 /*
  * 'ippSetGroupTag()' - Set the group tag of an attribute.
  *
- * The @code ipp@ parameter refers to the IPP message containing the attribute that was
- * previously created using the @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code attr@ parameter may be modified as a result of setting the value.
  *
@@ -3428,7 +3888,8 @@ ippSetGroupTag(
   * Range check input - group tag must be 0x01 to 0x0F, per RFC 2911...
   */
 
-  if (!ipp || !attr || group_tag < IPP_TAG_ZERO || group_tag == IPP_TAG_END ||
+  if (!ipp || !attr || !*attr ||
+      group_tag < IPP_TAG_ZERO || group_tag == IPP_TAG_END ||
       group_tag >= IPP_TAG_UNSUPPORTED_VALUE)
     return (0);
 
@@ -3445,8 +3906,8 @@ ippSetGroupTag(
 /*
  * 'ippSetInteger()' - Set an integer or enum value in an attribute.
  *
- * The @code ipp@ parameter refers to the IPP message containing the attribute that was
- * previously created using the @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code attr@ parameter may be modified as a result of setting the value.
  *
@@ -3488,8 +3949,8 @@ ippSetInteger(ipp_t           *ipp,       /* IO - IPP message */
 /*
  * 'ippSetName()' - Set the name of an attribute.
  *
- * The @code ipp@ parameter refers to the IPP message containing the attribute that was
- * previously created using the @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code attr@ parameter may be modified as a result of setting the value.
  *
@@ -3530,8 +3991,8 @@ ippSetName(ipp_t           *ipp,  /* IO - IPP message */
 /*
  * 'ippSetOperation()' - Set the operation ID in an IPP request message.
  *
- * The @code ipp@ parameter refers to an IPP message previously created using the
- * @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * @since CUPS 1.6/OS X 10.8@
  */
@@ -3560,8 +4021,8 @@ ippSetOperation(ipp_t    *ipp,            /* I - IPP request message */
 /*
  * 'ippSetRange()' - Set a rangeOfInteger value in an attribute.
  *
- * The @code ipp@ parameter refers to the IPP message containing the attribute that was
- * previously created using the @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code attr@ parameter may be modified as a result of setting the value.
  *
@@ -3606,8 +4067,8 @@ ippSetRange(ipp_t           *ipp, /* IO - IPP message */
 /*
  * 'ippSetRequestId()' - Set the request ID in an IPP message.
  *
- * The @code ipp@ parameter refers to an IPP message previously created using the
- * @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code request_id@ parameter must be greater than 0.
  *
@@ -3640,8 +4101,8 @@ ippSetRequestId(ipp_t *ipp,               /* I - IPP message */
 /*
  * 'ippSetResolution()' - Set a resolution value in an attribute.
  *
- * The @code ipp@ parameter refers to the IPP message containing the attribute that was
- * previously created using the @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code attr@ parameter may be modified as a result of setting the value.
  *
@@ -3718,8 +4179,8 @@ ippSetState(ipp_t       *ipp,             /* I - IPP message */
 /*
  * 'ippSetStatusCode()' - Set the status code in an IPP response or event message.
  *
- * The @code ipp@ parameter refers to an IPP message previously created using the
- * @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * @since CUPS 1.6/OS X 10.8@
  */
@@ -3748,8 +4209,8 @@ ippSetStatusCode(ipp_t        *ipp,       /* I - IPP response or event message */
 /*
  * 'ippSetString()' - Set a string value in an attribute.
  *
- * The @code ipp@ parameter refers to the IPP message containing the attribute that was
- * previously created using the @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code attr@ parameter may be modified as a result of setting the value.
  *
@@ -3807,11 +4268,197 @@ ippSetString(ipp_t           *ipp,     /* IO - IPP message */
 }
 
 
+/*
+ * 'ippSetStringf()' - Set a formatted string value of an attribute.
+ *
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
+ *
+ * The @code attr@ parameter may be modified as a result of setting the value.
+ *
+ * The @code element@ parameter specifies which value to set from 0 to
+ * @link ippGetCount(attr)@.
+ *
+ * The @code format@ parameter uses formatting characters compatible with the
+ * printf family of standard functions.  Additional arguments follow it as
+ * needed.  The formatted string is truncated as needed to the maximum length of
+ * the corresponding value type.
+ *
+ * @since CUPS 1.7@
+ */
+
+int                                    /* O  - 1 on success, 0 on failure */
+ippSetStringf(ipp_t           *ipp,    /* IO - IPP message */
+              ipp_attribute_t **attr,  /* IO - IPP attribute */
+              int             element, /* I  - Value number (0-based) */
+             const char      *format,  /* I  - Printf-style format string */
+             ...)                      /* I  - Additional arguments as needed */
+{
+  int          ret;                    /* Return value */
+  va_list      ap;                     /* Pointer to additional arguments */
+
+
+  va_start(ap, format);
+  ret = ippSetStringfv(ipp, attr, element, format, ap);
+  va_end(ap);
+
+  return (ret);
+}
+
+
+/*
+ * 'ippSetStringf()' - Set a formatted string value of an attribute.
+ *
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
+ *
+ * The @code attr@ parameter may be modified as a result of setting the value.
+ *
+ * The @code element@ parameter specifies which value to set from 0 to
+ * @link ippGetCount(attr)@.
+ *
+ * The @code format@ parameter uses formatting characters compatible with the
+ * printf family of standard functions.  Additional arguments follow it as
+ * needed.  The formatted string is truncated as needed to the maximum length of
+ * the corresponding value type.
+ *
+ * @since CUPS 1.7@
+ */
+
+int                                    /* O  - 1 on success, 0 on failure */
+ippSetStringfv(ipp_t           *ipp,   /* IO - IPP message */
+               ipp_attribute_t **attr, /* IO - IPP attribute */
+               int             element,        /* I  - Value number (0-based) */
+              const char      *format, /* I  - Printf-style format string */
+              va_list         ap)      /* I  - Pointer to additional arguments */
+{
+  ipp_tag_t    value_tag;              /* Value tag */
+  char         buffer[IPP_MAX_TEXT + 4];
+                                       /* Formatted text string */
+  ssize_t      bytes,                  /* Length of formatted value */
+               max_bytes;              /* Maximum number of bytes for value */
+
+
+ /*
+  * Range check input...
+  */
+
+  if (attr && *attr)
+    value_tag = (*attr)->value_tag & IPP_TAG_CUPS_MASK;
+  else
+    value_tag = IPP_TAG_ZERO;
+
+  if (!ipp || !attr || !*attr ||
+      (value_tag < IPP_TAG_TEXT && value_tag != IPP_TAG_TEXTLANG &&
+       value_tag != IPP_TAG_NAMELANG) || value_tag > IPP_TAG_MIMETYPE ||
+      !format || !ap)
+    return (0);
+
+ /*
+  * Format the string...
+  */
+
+  if (!strcmp(format, "%s"))
+  {
+   /*
+    * Optimize the simple case...
+    */
+
+    const char *s = va_arg(ap, char *);
+
+    if (!s)
+      s = "(null)";
+
+    bytes = strlen(s);
+    strlcpy(buffer, s, sizeof(buffer));
+  }
+  else
+  {
+   /*
+    * Do a full formatting of the message...
+    */
+
+    if ((bytes = vsnprintf(buffer, sizeof(buffer), format, ap)) < 0)
+      return (0);
+  }
+
+ /*
+  * Limit the length of the string...
+  */
+
+  switch (value_tag)
+  {
+    default :
+    case IPP_TAG_TEXT :
+    case IPP_TAG_TEXTLANG :
+        max_bytes = IPP_MAX_TEXT;
+        break;
+
+    case IPP_TAG_NAME :
+    case IPP_TAG_NAMELANG :
+        max_bytes = IPP_MAX_NAME;
+        break;
+
+    case IPP_TAG_CHARSET :
+        max_bytes = IPP_MAX_CHARSET;
+        break;
+
+    case IPP_TAG_KEYWORD :
+        max_bytes = IPP_MAX_KEYWORD;
+        break;
+
+    case IPP_TAG_LANGUAGE :
+        max_bytes = IPP_MAX_LANGUAGE;
+        break;
+
+    case IPP_TAG_MIMETYPE :
+        max_bytes = IPP_MAX_MIMETYPE;
+        break;
+
+    case IPP_TAG_URI :
+        max_bytes = IPP_MAX_URI;
+        break;
+
+    case IPP_TAG_URISCHEME :
+        max_bytes = IPP_MAX_URISCHEME;
+        break;
+  }
+
+  if (bytes >= max_bytes)
+  {
+    char       *bufmax,                /* Buffer at max_bytes */
+               *bufptr;                /* Pointer into buffer */
+
+    bufptr = buffer + strlen(buffer) - 1;
+    bufmax = buffer + max_bytes - 1;
+
+    while (bufptr > bufmax)
+    {
+      if (*bufptr & 0x80)
+      {
+        while ((*bufptr & 0xc0) == 0x80 && bufptr > buffer)
+          bufptr --;
+      }
+
+      bufptr --;
+    }
+
+    *bufptr = '\0';
+  }
+
+ /*
+  * Set the formatted string and return...
+  */
+
+  return (ippSetString(ipp, attr, element, buffer));
+}
+
+
 /*
  * 'ippSetValueTag()' - Set the value tag of an attribute.
  *
- * The @code ipp@ parameter refers to the IPP message containing the attribute that was
- * previously created using the @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The @code attr@ parameter may be modified as a result of setting the value.
  *
@@ -3848,7 +4495,7 @@ ippSetValueTag(
   * Range check input...
   */
 
-  if (!ipp || !attr)
+  if (!ipp || !attr || !*attr)
     return (0);
 
  /*
@@ -3979,8 +4626,8 @@ ippSetValueTag(
 /*
  * 'ippSetVersion()' - Set the version number in an IPP message.
  *
- * The @code ipp@ parameter refers to an IPP message previously created using the
- * @link ippNew@ or @link ippNewRequest@ functions.
+ * The @code ipp@ parameter refers to an IPP message previously created using
+ * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
  * The valid version numbers are currently 1.0, 1.1, 2.0, 2.1, and 2.2.
  *
index 2118dd35311435fe210b9a2818dd455febc80780..65e4f285af8b281224d6d3a95db7ed56bdd717b8 100644 (file)
@@ -73,14 +73,22 @@ extern "C" {
 
 typedef enum ipp_dstate_e              /**** Document states ****/
 {
-  IPP_DOCUMENT_PENDING = 3,
-  IPP_DOCUMENT_PROCESSING = 5,
-  IPP_DOCUMENT_CANCELED = 7,
-  IPP_DOCUMENT_ABORTED,
-  IPP_DOCUMENT_COMPLETED
+  IPP_DOCUMENT_PENDING = 3,            /* Document is pending */
+  IPP_DOCUMENT_PROCESSING = 5,         /* Document is processing */
+  IPP_DOCUMENT_CANCELED = 7,           /* Document is canceled */
+  IPP_DOCUMENT_ABORTED,                        /* Document is aborted */
+  IPP_DOCUMENT_COMPLETED               /* Document is completed */
+
+#  ifndef _CUPS_NO_DEPRECATED
+#    define IPP_DOCUMENT_PENDING       IPP_DSTATE_PENDING
+#    define IPP_DOCUMENT_PROCESSING    IPP_DSTATE_PROCESSING
+#    define IPP_DOCUMENT_CANCELED      IPP_DSTATE_CANCELED
+#    define IPP_DOCUMENT_ABORTED       IPP_DSTATE_ABORTED
+#    define IPP_DOCUMENT_COMPLETED     IPP_DSTATE_COMPLETED
+#  endif /* !_CUPS_NO_DEPRECATED */
 } ipp_dstate_t;
 
-typedef enum ipp_finish_e              /**** Finishings ****/
+typedef enum ipp_finishings_e          /**** Finishings ****/
 {
   IPP_FINISHINGS_NONE = 3,             /* No finishing */
   IPP_FINISHINGS_STAPLE,               /* Staple (any location) */
@@ -113,126 +121,259 @@ typedef enum ipp_finish_e               /**** Finishings ****/
   IPP_FINISHINGS_TRIM_AFTER_PAGES = 60,        /* Trim output after each page */
   IPP_FINISHINGS_TRIM_AFTER_DOCUMENTS, /* Trim output after each document */
   IPP_FINISHINGS_TRIM_AFTER_COPIES,    /* Trim output after each copy */
-  IPP_FINISHINGS_TRIM_AFTER_JOB                /* Trim output after job */
-} ipp_finish_t;
+  IPP_FINISHINGS_TRIM_AFTER_JOB,       /* Trim output after job */
+
+  /* Proposed extensions for finishings */
+  IPP_FINISHINGS_CUPS_PUNCH_TOP_LEFT = 0x40000046,
+                                       /* Punch 1 hole top left */
+  IPP_FINISHINGS_CUPS_PUNCH_BOTTOM_LEFT,/* Punch 1 hole bottom left */
+  IPP_FINISHINGS_CUPS_PUNCH_TOP_RIGHT, /* Punch 1 hole top right */
+  IPP_FINISHINGS_CUPS_PUNCH_BOTTOM_RIGHT,
+                                       /* Punch 1 hole bottom right */
+  IPP_FINISHINGS_CUPS_PUNCH_DUAL_LEFT, /* Punch 2 holes left side */
+  IPP_FINISHINGS_CUPS_PUNCH_DUAL_TOP,  /* Punch 2 holes top edge */
+  IPP_FINISHINGS_CUPS_PUNCH_DUAL_RIGHT,        /* Punch 2 holes right side */
+  IPP_FINISHINGS_CUPS_PUNCH_DUAL_BOTTOM,/* Punch 2 holes bottom edge */
+  IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_LEFT,/* Punch 3 holes left side */
+  IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_TOP,        /* Punch 3 holes top edge */
+  IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_RIGHT,
+                                       /* Punch 3 holes right side */
+  IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_BOTTOM,
+                                       /* Punch 3 holes bottom edge */
+  IPP_FINISHINGS_CUPS_PUNCH_QUAD_LEFT, /* Punch 4 holes left side */
+  IPP_FINISHINGS_CUPS_PUNCH_QUAD_TOP,  /* Punch 4 holes top edge */
+  IPP_FINISHINGS_CUPS_PUNCH_QUAD_RIGHT,        /* Punch 4 holes right side */
+  IPP_FINISHINGS_CUPS_PUNCH_QUAD_BOTTOM        /* Punch 4 holes bottom edge */
+} ipp_finishings_t;
+#  ifndef _CUPS_NO_DEPRECATED
+typedef enum ipp_finishings_e ipp_finish_t;
+#  endif /* !_CUPS_NO_DEPRECATED */
 
 typedef enum ipp_jcollate_e            /**** Job collation types ****/
 {
-  IPP_JOB_UNCOLLATED_SHEETS = 3,
-  IPP_JOB_COLLATED_DOCUMENTS,
-  IPP_JOB_UNCOLLATED_DOCUMENTS
+  IPP_JCOLLATE_UNCOLLATED_SHEETS = 3,
+  IPP_JCOLLATE_COLLATED_DOCUMENTS,
+  IPP_JCOLLATE_UNCOLLATED_DOCUMENTS
+
+#  ifndef _CUPS_NO_DEPRECATED
+#    define IPP_JOB_UNCOLLATED_SHEETS          IPP_JCOLLATE_UNCOLLATED_SHEETS
+#    define IPP_JOB_COLLATED_DOCUMENTS         IPP_JCOLLATE_COLLATED_DOCUMENTS
+#    define IPP_JOB_UNCOLLATED_DOCUMENTS       IPP_JCOLLATE_UNCOLLATED_DOCUMENTS
+#  endif /* !_CUPS_NO_DEPRECATED */
 } ipp_jcollate_t;
 
 typedef enum ipp_jstate_e              /**** Job states ****/
 {
-  IPP_JOB_PENDING = 3,                 /* Job is waiting to be printed */
-  IPP_JOB_HELD,                                /* Job is held for printing */
-  IPP_JOB_PROCESSING,                  /* Job is currently printing */
-  IPP_JOB_STOPPED,                     /* Job has been stopped */
-  IPP_JOB_CANCELED,                    /* Job has been canceled */
-  IPP_JOB_ABORTED,                     /* Job has aborted due to error */
-  IPP_JOB_COMPLETED                    /* Job has completed successfully */
+  IPP_JSTATE_PENDING = 3,              /* Job is waiting to be printed */
+  IPP_JSTATE_HELD,                     /* Job is held for printing */
+  IPP_JSTATE_PROCESSING,               /* Job is currently printing */
+  IPP_JSTATE_STOPPED,                  /* Job has been stopped */
+  IPP_JSTATE_CANCELED,                 /* Job has been canceled */
+  IPP_JSTATE_ABORTED,                  /* Job has aborted due to error */
+  IPP_JSTATE_COMPLETED                 /* Job has completed successfully */
+
+#  ifndef _CUPS_NO_DEPRECATED
+#    define IPP_JOB_PENDING    IPP_JSTATE_PENDING
+#    define IPP_JOB_HELD       IPP_JSTATE_HELD
+#    define IPP_JOB_PROCESSING IPP_JSTATE_PROCESSING
+#    define IPP_JOB_STOPPED    IPP_JSTATE_STOPPED
+#    define IPP_JOB_CANCELED   IPP_JSTATE_CANCELED
+#    define IPP_JOB_ABORTED    IPP_JSTATE_ABORTED
+#    define IPP_JOB_COMPLETED  IPP_JSTATE_COMPLETED
   /* Legacy name for canceled state */
-#define IPP_JOB_CANCELLED IPP_JOB_CANCELED
+#    define IPP_JOB_CANCELLED  IPP_JSTATE_CANCELED
+#  endif /* !_CUPS_NO_DEPRECATED */
 } ipp_jstate_t;
 
 typedef enum ipp_op_e                  /**** IPP operations ****/
 {
   IPP_OP_CUPS_INVALID = -1,            /* Invalid operation name for @link ippOpValue@ */
-  IPP_PRINT_JOB = 0x0002,              /* Print a single file */
-  IPP_PRINT_URI,                       /* Print a single URL @private@ */
-  IPP_VALIDATE_JOB,                    /* Validate job options */
-  IPP_CREATE_JOB,                      /* Create an empty print job */
-  IPP_SEND_DOCUMENT,                   /* Add a file to a job */
-  IPP_SEND_URI,                                /* Add a URL to a job @private@ */
-  IPP_CANCEL_JOB,                      /* Cancel a job */
-  IPP_GET_JOB_ATTRIBUTES,              /* Get job attributes */
-  IPP_GET_JOBS,                                /* Get a list of jobs */
-  IPP_GET_PRINTER_ATTRIBUTES,          /* Get printer attributes */
-  IPP_HOLD_JOB,                                /* Hold a job for printing */
-  IPP_RELEASE_JOB,                     /* Release a job for printing */
-  IPP_RESTART_JOB,                     /* Reprint a job */
-  IPP_PAUSE_PRINTER = 0x0010,          /* Stop a printer */
-  IPP_RESUME_PRINTER,                  /* Start a printer */
-  IPP_PURGE_JOBS,                      /* Cancel all jobs */
-  IPP_SET_PRINTER_ATTRIBUTES,          /* Set printer attributes @private@ */
-  IPP_SET_JOB_ATTRIBUTES,              /* Set job attributes */
-  IPP_GET_PRINTER_SUPPORTED_VALUES,    /* Get supported attribute values */
-  IPP_CREATE_PRINTER_SUBSCRIPTION,     /* Create a printer subscription @since CUPS 1.2/OS X 10.5@ */
-  IPP_CREATE_JOB_SUBSCRIPTION,         /* Create a job subscription @since CUPS 1.2/OS X 10.5@ */
-  IPP_GET_SUBSCRIPTION_ATTRIBUTES,     /* Get subscription attributes @since CUPS 1.2/OS X 10.5@ */
-  IPP_GET_SUBSCRIPTIONS,               /* Get list of subscriptions @since CUPS 1.2/OS X 10.5@ */
-  IPP_RENEW_SUBSCRIPTION,              /* Renew a printer subscription @since CUPS 1.2/OS X 10.5@ */
-  IPP_CANCEL_SUBSCRIPTION,             /* Cancel a subscription @since CUPS 1.2/OS X 10.5@ */
-  IPP_GET_NOTIFICATIONS,               /* Get notification events @since CUPS 1.2/OS X 10.5@ */
-  IPP_SEND_NOTIFICATIONS,              /* Send notification events @private@ */
-  IPP_GET_RESOURCE_ATTRIBUTES,         /* Get resource attributes @private@ */
-  IPP_GET_RESOURCE_DATA,               /* Get resource data @private@ */
-  IPP_GET_RESOURCES,                   /* Get list of resources @private@ */
-  IPP_GET_PRINT_SUPPORT_FILES,         /* Get printer support files @private@ */
-  IPP_ENABLE_PRINTER,                  /* Start a printer */
-  IPP_DISABLE_PRINTER,                 /* Stop a printer */
-  IPP_PAUSE_PRINTER_AFTER_CURRENT_JOB, /* Stop printer after the current job @private@ */
-  IPP_HOLD_NEW_JOBS,                   /* Hold new jobs @private@ */
-  IPP_RELEASE_HELD_NEW_JOBS,           /* Release new jobs @private@ */
-  IPP_DEACTIVATE_PRINTER,              /* Stop a printer @private@ */
-  IPP_ACTIVATE_PRINTER,                        /* Start a printer @private@ */
-  IPP_RESTART_PRINTER,                 /* Restart a printer @private@ */
-  IPP_SHUTDOWN_PRINTER,                        /* Turn a printer off @private@ */
-  IPP_STARTUP_PRINTER,                 /* Turn a printer on @private@ */
-  IPP_REPROCESS_JOB,                   /* Reprint a job @private@ */
-  IPP_CANCEL_CURRENT_JOB,              /* Cancel the current job @private@ */
-  IPP_SUSPEND_CURRENT_JOB,             /* Suspend the current job @private@ */
-  IPP_RESUME_JOB,                      /* Resume the current job @private@ */
-  IPP_PROMOTE_JOB,                     /* Promote a job to print sooner @private@ */
-  IPP_SCHEDULE_JOB_AFTER,              /* Schedule a job to print after another @private@ */
-  IPP_CANCEL_DOCUMENT = 0x0033,                /* Cancel-Document @private@ */
-  IPP_GET_DOCUMENT_ATTRIBUTES,         /* Get-Document-Attributes @private@ */
-  IPP_GET_DOCUMENTS,                   /* Get-Documents @private@ */
-  IPP_DELETE_DOCUMENT,                 /* Delete-Document @private@ */
-  IPP_SET_DOCUMENT_ATTRIBUTES,         /* Set-Document-Attributes @private@ */
-  IPP_CANCEL_JOBS,                     /* Cancel-Jobs */
-  IPP_CANCEL_MY_JOBS,                  /* Cancel-My-Jobs */
-  IPP_RESUBMIT_JOB,                    /* Resubmit-Job */
-  IPP_CLOSE_JOB,                       /* Close-Job */
-  IPP_IDENTIFY_PRINTER,                        /* Identify-Printer (proposed IPP JPS3) */
-  IPP_VALIDATE_DOCUMENT,               /* Validate-Document (proposed IPP JPS3) */
-  IPP_PRIVATE = 0x4000,                        /* Reserved @private@ */
-  CUPS_GET_DEFAULT,                    /* Get the default printer */
-  CUPS_GET_PRINTERS,                   /* Get a list of printers and/or classes */
-  CUPS_ADD_MODIFY_PRINTER,             /* Add or modify a printer */
-  CUPS_DELETE_PRINTER,                 /* Delete a printer */
-  CUPS_GET_CLASSES,                    /* Get a list of classes @deprecated@ */
-  CUPS_ADD_MODIFY_CLASS,               /* Add or modify a class */
-  CUPS_DELETE_CLASS,                   /* Delete a class */
-  CUPS_ACCEPT_JOBS,                    /* Accept new jobs on a printer */
-  CUPS_REJECT_JOBS,                    /* Reject new jobs on a printer */
-  CUPS_SET_DEFAULT,                    /* Set the default printer */
-  CUPS_GET_DEVICES,                    /* Get a list of supported devices */
-  CUPS_GET_PPDS,                       /* Get a list of supported drivers */
-  CUPS_MOVE_JOB,                       /* Move a job to a different printer */
-  CUPS_AUTHENTICATE_JOB,               /* Authenticate a job @since CUPS 1.2/OS X 10.5@ */
-  CUPS_GET_PPD,                                /* Get a PPD file @since CUPS 1.3/OS X 10.5@ */
-  CUPS_GET_DOCUMENT = 0x4027           /* Get a document file @since CUPS 1.4/OS X 10.6@ */
-
-  /* Legacy names for the add operations */
-#define CUPS_ADD_PRINTER       CUPS_ADD_MODIFY_PRINTER
-#define CUPS_ADD_CLASS         CUPS_ADD_MODIFY_CLASS
+  IPP_OP_CUPS_NONE = 0,                        /* No operation @private@ */
+  IPP_OP_PRINT_JOB = 0x0002,           /* Print a single file */
+  IPP_OP_PRINT_URI,                    /* Print a single URL @private@ */
+  IPP_OP_VALIDATE_JOB,                 /* Validate job options */
+  IPP_OP_CREATE_JOB,                   /* Create an empty print job */
+  IPP_OP_SEND_DOCUMENT,                        /* Add a file to a job */
+  IPP_OP_SEND_URI,                     /* Add a URL to a job @private@ */
+  IPP_OP_CANCEL_JOB,                   /* Cancel a job */
+  IPP_OP_GET_JOB_ATTRIBUTES,           /* Get job attributes */
+  IPP_OP_GET_JOBS,                     /* Get a list of jobs */
+  IPP_OP_GET_PRINTER_ATTRIBUTES,       /* Get printer attributes */
+  IPP_OP_HOLD_JOB,                     /* Hold a job for printing */
+  IPP_OP_RELEASE_JOB,                  /* Release a job for printing */
+  IPP_OP_RESTART_JOB,                  /* Reprint a job */
+  IPP_OP_PAUSE_PRINTER = 0x0010,       /* Stop a printer */
+  IPP_OP_RESUME_PRINTER,               /* Start a printer */
+  IPP_OP_PURGE_JOBS,                   /* Cancel all jobs */
+  IPP_OP_SET_PRINTER_ATTRIBUTES,       /* Set printer attributes @private@ */
+  IPP_OP_SET_JOB_ATTRIBUTES,           /* Set job attributes */
+  IPP_OP_GET_PRINTER_SUPPORTED_VALUES, /* Get supported attribute values */
+  IPP_OP_CREATE_PRINTER_SUBSCRIPTION,  /* Create a printer subscription @since CUPS 1.2/OS X 10.5@ */
+  IPP_OP_CREATE_JOB_SUBSCRIPTION,      /* Create a job subscription @since CUPS 1.2/OS X 10.5@ */
+  IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES,  /* Get subscription attributes @since CUPS 1.2/OS X 10.5@ */
+  IPP_OP_GET_SUBSCRIPTIONS,            /* Get list of subscriptions @since CUPS 1.2/OS X 10.5@ */
+  IPP_OP_RENEW_SUBSCRIPTION,           /* Renew a printer subscription @since CUPS 1.2/OS X 10.5@ */
+  IPP_OP_CANCEL_SUBSCRIPTION,          /* Cancel a subscription @since CUPS 1.2/OS X 10.5@ */
+  IPP_OP_GET_NOTIFICATIONS,            /* Get notification events @since CUPS 1.2/OS X 10.5@ */
+  IPP_OP_SEND_NOTIFICATIONS,           /* Send notification events @private@ */
+  IPP_OP_GET_RESOURCE_ATTRIBUTES,      /* Get resource attributes @private@ */
+  IPP_OP_GET_RESOURCE_DATA,            /* Get resource data @private@ */
+  IPP_OP_GET_RESOURCES,                        /* Get list of resources @private@ */
+  IPP_OP_GET_PRINT_SUPPORT_FILES,      /* Get printer support files @private@ */
+  IPP_OP_ENABLE_PRINTER,               /* Start a printer */
+  IPP_OP_DISABLE_PRINTER,              /* Stop a printer */
+  IPP_OP_PAUSE_PRINTER_AFTER_CURRENT_JOB,
+                                       /* Stop printer after the current job @private@ */
+  IPP_OP_HOLD_NEW_JOBS,                        /* Hold new jobs @private@ */
+  IPP_OP_RELEASE_HELD_NEW_JOBS,                /* Release new jobs @private@ */
+  IPP_OP_DEACTIVATE_PRINTER,           /* Stop a printer @private@ */
+  IPP_OP_ACTIVATE_PRINTER,             /* Start a printer @private@ */
+  IPP_OP_RESTART_PRINTER,              /* Restart a printer @private@ */
+  IPP_OP_SHUTDOWN_PRINTER,             /* Turn a printer off @private@ */
+  IPP_OP_STARTUP_PRINTER,              /* Turn a printer on @private@ */
+  IPP_OP_REPROCESS_JOB,                        /* Reprint a job @private@ */
+  IPP_OP_CANCEL_CURRENT_JOB,           /* Cancel the current job @private@ */
+  IPP_OP_SUSPEND_CURRENT_JOB,          /* Suspend the current job @private@ */
+  IPP_OP_RESUME_JOB,                   /* Resume the current job @private@ */
+  IPP_OP_PROMOTE_JOB,                  /* Promote a job to print sooner @private@ */
+  IPP_OP_SCHEDULE_JOB_AFTER,           /* Schedule a job to print after another @private@ */
+  IPP_OP_CANCEL_DOCUMENT = 0x0033,     /* Cancel-Document @private@ */
+  IPP_OP_GET_DOCUMENT_ATTRIBUTES,      /* Get-Document-Attributes @private@ */
+  IPP_OP_GET_DOCUMENTS,                        /* Get-Documents @private@ */
+  IPP_OP_DELETE_DOCUMENT,              /* Delete-Document @private@ */
+  IPP_OP_SET_DOCUMENT_ATTRIBUTES,      /* Set-Document-Attributes @private@ */
+  IPP_OP_CANCEL_JOBS,                  /* Cancel-Jobs */
+  IPP_OP_CANCEL_MY_JOBS,               /* Cancel-My-Jobs */
+  IPP_OP_RESUBMIT_JOB,                 /* Resubmit-Job */
+  IPP_OP_CLOSE_JOB,                    /* Close-Job */
+  IPP_OP_IDENTIFY_PRINTER,             /* Identify-Printer (proposed IPP JPS3) */
+  IPP_OP_VALIDATE_DOCUMENT,            /* Validate-Document (proposed IPP JPS3) */
+  IPP_OP_PRIVATE = 0x4000,             /* Reserved @private@ */
+  IPP_OP_CUPS_GET_DEFAULT,             /* Get the default printer */
+  IPP_OP_CUPS_GET_PRINTERS,            /* Get a list of printers and/or classes */
+  IPP_OP_CUPS_ADD_MODIFY_PRINTER,      /* Add or modify a printer */
+  IPP_OP_CUPS_DELETE_PRINTER,          /* Delete a printer */
+  IPP_OP_CUPS_GET_CLASSES,             /* Get a list of classes @deprecated@ */
+  IPP_OP_CUPS_ADD_MODIFY_CLASS,                /* Add or modify a class */
+  IPP_OP_CUPS_DELETE_CLASS,            /* Delete a class */
+  IPP_OP_CUPS_ACCEPT_JOBS,             /* Accept new jobs on a printer */
+  IPP_OP_CUPS_REJECT_JOBS,             /* Reject new jobs on a printer */
+  IPP_OP_CUPS_SET_DEFAULT,             /* Set the default printer */
+  IPP_OP_CUPS_GET_DEVICES,             /* Get a list of supported devices */
+  IPP_OP_CUPS_GET_PPDS,                        /* Get a list of supported drivers */
+  IPP_OP_CUPS_MOVE_JOB,                        /* Move a job to a different printer */
+  IPP_OP_CUPS_AUTHENTICATE_JOB,                /* Authenticate a job @since CUPS 1.2/OS X 10.5@ */
+  IPP_OP_CUPS_GET_PPD,                 /* Get a PPD file @since CUPS 1.3/OS X 10.5@ */
+  IPP_OP_CUPS_GET_DOCUMENT = 0x4027    /* Get a document file @since CUPS 1.4/OS X 10.6@ */
+
+#  ifndef _CUPS_NO_DEPRECATED
+#    define IPP_PRINT_JOB                      IPP_OP_PRINT_JOB
+#    define IPP_PRINT_URI                      IPP_OP_PRINT_URI
+#    define IPP_VALIDATE_JOB                   IPP_OP_VALIDATE_JOB
+#    define IPP_CREATE_JOB                     IPP_OP_CREATE_JOB
+#    define IPP_SEND_DOCUMENT                  IPP_OP_SEND_DOCUMENT
+#    define IPP_SEND_URI                       IPP_OP_SEND_URI
+#    define IPP_CANCEL_JOB                     IPP_OP_CANCEL_JOB
+#    define IPP_GET_JOB_ATTRIBUTES             IPP_OP_GET_JOB_ATTRIBUTES
+#    define IPP_GET_JOBS                       IPP_OP_GET_JOBS
+#    define IPP_GET_PRINTER_ATTRIBUTES         IPP_OP_GET_PRINTER_ATTRIBUTES
+#    define IPP_HOLD_JOB                       IPP_OP_HOLD_JOB
+#    define IPP_RELEASE_JOB                    IPP_OP_RELEASE_JOB
+#    define IPP_RESTART_JOB                    IPP_OP_RESTART_JOB
+#    define IPP_PAUSE_PRINTER                  IPP_OP_PAUSE_PRINTER
+#    define IPP_RESUME_PRINTER                 IPP_OP_RESUME_PRINTER
+#    define IPP_PURGE_JOBS                     IPP_OP_PURGE_JOBS
+#    define IPP_SET_PRINTER_ATTRIBUTES         IPP_OP_SET_PRINTER_ATTRIBUTES
+#    define IPP_SET_JOB_ATTRIBUTES             IPP_OP_SET_JOB_ATTRIBUTES
+#    define IPP_GET_PRINTER_SUPPORTED_VALUES   IPP_OP_GET_PRINTER_SUPPORTED_VALUES
+#    define IPP_CREATE_PRINTER_SUBSCRIPTION    IPP_OP_CREATE_PRINTER_SUBSCRIPTION
+#    define IPP_CREATE_JOB_SUBSCRIPTION                IPP_OP_CREATE_JOB_SUBSCRIPTION
+#    define IPP_GET_SUBSCRIPTION_ATTRIBUTES    IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES
+#    define IPP_GET_SUBSCRIPTIONS              IPP_OP_GET_SUBSCRIPTIONS
+#    define IPP_RENEW_SUBSCRIPTION             IPP_OP_RENEW_SUBSCRIPTION
+#    define IPP_CANCEL_SUBSCRIPTION            IPP_OP_CANCEL_SUBSCRIPTION
+#    define IPP_GET_NOTIFICATIONS              IPP_OP_GET_NOTIFICATIONS
+#    define IPP_SEND_NOTIFICATIONS             IPP_OP_SEND_NOTIFICATIONS
+#    define IPP_GET_RESOURCE_ATTRIBUTES                IPP_OP_GET_RESOURCE_ATTRIBUTES
+#    define IPP_GET_RESOURCE_DATA              IPP_OP_GET_RESOURCE_DATA
+#    define IPP_GET_RESOURCES                  IPP_OP_GET_RESOURCES
+#    define IPP_GET_PRINT_SUPPORT_FILES                IPP_OP_GET_PRINT_SUPPORT_FILES
+#    define IPP_ENABLE_PRINTER                 IPP_OP_ENABLE_PRINTER
+#    define IPP_DISABLE_PRINTER                        IPP_OP_DISABLE_PRINTER
+#    define IPP_PAUSE_PRINTER_AFTER_CURRENT_JOB        IPP_OP_PAUSE_PRINTER_AFTER_CURRENT_JOB
+#    define IPP_HOLD_NEW_JOBS                  IPP_OP_HOLD_NEW_JOBS
+#    define IPP_RELEASE_HELD_NEW_JOBS          IPP_OP_RELEASE_HELD_NEW_JOBS
+#    define IPP_DEACTIVATE_PRINTER             IPP_OP_DEACTIVATE_PRINTER
+#    define IPP_ACTIVATE_PRINTER               IPP_OP_ACTIVATE_PRINTER
+#    define IPP_RESTART_PRINTER                        IPP_OP_RESTART_PRINTER
+#    define IPP_SHUTDOWN_PRINTER               IPP_OP_SHUTDOWN_PRINTER
+#    define IPP_STARTUP_PRINTER                        IPP_OP_STARTUP_PRINTER
+#    define IPP_REPROCESS_JOB                  IPP_OP_REPROCESS_JOB
+#    define IPP_CANCEL_CURRENT_JOB             IPP_OP_CANCEL_CURRENT_JOB
+#    define IPP_SUSPEND_CURRENT_JOB            IPP_OP_SUSPEND_CURRENT_JOB
+#    define IPP_RESUME_JOB                     IPP_OP_RESUME_JOB
+#    define IPP_PROMOTE_JOB                    IPP_OP_PROMOTE_JOB
+#    define IPP_SCHEDULE_JOB_AFTER             IPP_OP_SCHEDULE_JOB_AFTER
+#    define IPP_CANCEL_DOCUMENT                        IPP_OP_CANCEL_DOCUMENT
+#    define IPP_GET_DOCUMENT_ATTRIBUTES                IPP_OP_GET_DOCUMENT_ATTRIBUTES
+#    define IPP_GET_DOCUMENTS                  IPP_OP_GET_DOCUMENTS
+#    define IPP_DELETE_DOCUMENT                        IPP_OP_DELETE_DOCUMENT
+#    define IPP_SET_DOCUMENT_ATTRIBUTES                IPP_OP_SET_DOCUMENT_ATTRIBUTES
+#    define IPP_CANCEL_JOBS                    IPP_OP_CANCEL_JOBS
+#    define IPP_CANCEL_MY_JOBS                 IPP_OP_CANCEL_MY_JOBS
+#    define IPP_RESUBMIT_JOB                   IPP_OP_RESUBMIT_JOB
+#    define IPP_CLOSE_JOB                      IPP_OP_CLOSE_JOB
+#    define IPP_IDENTIFY_PRINTER               IPP_OP_IDENTIFY_PRINTER
+#    define IPP_VALIDATE_DOCUMENT              IPP_OP_VALIDATE_DOCUMENT
+#    define IPP_PRIVATE                                IPP_OP_PRIVATE
+#    define CUPS_GET_DEFAULT                   IPP_OP_CUPS_GET_DEFAULT
+#    define CUPS_GET_PRINTERS                  IPP_OP_CUPS_GET_PRINTERS
+#    define CUPS_ADD_MODIFY_PRINTER            IPP_OP_CUPS_ADD_MODIFY_PRINTER
+#    define CUPS_DELETE_PRINTER                        IPP_OP_CUPS_DELETE_PRINTER
+#    define CUPS_GET_CLASSES                   IPP_OP_CUPS_GET_CLASSES
+#    define CUPS_ADD_MODIFY_CLASS              IPP_OP_CUPS_ADD_MODIFY_CLASS
+#    define CUPS_DELETE_CLASS                  IPP_OP_CUPS_DELETE_CLASS
+#    define CUPS_ACCEPT_JOBS                   IPP_OP_CUPS_ACCEPT_JOBS
+#    define CUPS_REJECT_JOBS                   IPP_OP_CUPS_REJECT_JOBS
+#    define CUPS_SET_DEFAULT                   IPP_OP_CUPS_SET_DEFAULT
+#    define CUPS_GET_DEVICES                   IPP_OP_CUPS_GET_DEVICES
+#    define CUPS_GET_PPDS                      IPP_OP_CUPS_GET_PPDS
+#    define CUPS_MOVE_JOB                      IPP_OP_CUPS_MOVE_JOB
+#    define CUPS_AUTHENTICATE_JOB              IPP_OP_CUPS_AUTHENTICATE_JOB
+#    define CUPS_GET_PPD                       IPP_OP_CUPS_GET_PPD
+#    define CUPS_GET_DOCUMENT                  IPP_OP_CUPS_GET_DOCUMENT
+     /* Legacy names */
+#    define CUPS_ADD_PRINTER                   IPP_OP_CUPS_ADD_MODIFY_PRINTER
+#    define CUPS_ADD_CLASS                     IPP_OP_CUPS_ADD_MODIFY_CLASS
+#  endif /* !_CUPS_NO_DEPRECATED */
 } ipp_op_t;
 
 typedef enum ipp_orient_e              /**** Orientation values ****/
 {
-  IPP_PORTRAIT = 3,                    /* No rotation */
-  IPP_LANDSCAPE,                       /* 90 degrees counter-clockwise */
-  IPP_REVERSE_LANDSCAPE,               /* 90 degrees clockwise */
-  IPP_REVERSE_PORTRAIT                 /* 180 degrees */
+  IPP_ORIENT_PORTRAIT = 3,             /* No rotation */
+  IPP_ORIENT_LANDSCAPE,                        /* 90 degrees counter-clockwise */
+  IPP_ORIENT_REVERSE_LANDSCAPE,                /* 90 degrees clockwise */
+  IPP_ORIENT_REVERSE_PORTRAIT          /* 180 degrees */
+
+#  ifndef _CUPS_NO_DEPRECATED
+#    define IPP_PORTRAIT               IPP_ORIENT_PORTRAIT
+#    define IPP_LANDSCAPE              IPP_ORIENT_LANDSCAPE
+#    define IPP_REVERSE_LANDSCAPE      IPP_ORIENT_REVERSE_LANDSCAPE
+#    define IPP_REVERSE_PORTRAIT       IPP_ORIENT_REVERSE_PORTRAIT
+#  endif /* !_CUPS_NO_DEPRECATED */
 } ipp_orient_t;
 
 typedef enum ipp_pstate_e              /**** Printer states ****/
 {
-  IPP_PRINTER_IDLE = 3,                        /* Printer is idle */
-  IPP_PRINTER_PROCESSING,              /* Printer is working */
-  IPP_PRINTER_STOPPED                  /* Printer is stopped */
+  IPP_PSTATE_IDLE = 3,                 /* Printer is idle */
+  IPP_PSTATE_PROCESSING,               /* Printer is working */
+  IPP_PSTATE_STOPPED                   /* Printer is stopped */
+
+#  ifndef _CUPS_NO_DEPRECATED
+#    define IPP_PRINTER_IDLE           IPP_PSTATE_IDLE
+#    define IPP_PRINTER_PROCESSING     IPP_PSTATE_PROCESSING
+#    define IPP_PRINTER_STOPPED                IPP_PSTATE_STOPPED
+#  endif /* _CUPS_NO_DEPRECATED */
 } ipp_pstate_t;
 
 typedef enum ipp_quality_e             /**** Qualities ****/
@@ -250,76 +391,163 @@ typedef enum ipp_res_e                   /**** Resolution units ****/
 
 typedef enum ipp_state_e               /**** IPP states ****/
 {
-  IPP_ERROR = -1,                      /* An error occurred */
-  IPP_IDLE,                            /* Nothing is happening/request completed */
-  IPP_HEADER,                          /* The request header needs to be sent/received */
-  IPP_ATTRIBUTE,                       /* One or more attributes need to be sent/received */
-  IPP_DATA                             /* IPP request data needs to be sent/received */
+  IPP_STATE_ERROR = -1,                        /* An error occurred */
+  IPP_STATE_IDLE,                      /* Nothing is happening/request completed */
+  IPP_STATE_HEADER,                    /* The request header needs to be sent/received */
+  IPP_STATE_ATTRIBUTE,                 /* One or more attributes need to be sent/received */
+  IPP_STATE_DATA                       /* IPP request data needs to be sent/received */
+
+#  ifndef _CUPS_NO_DEPRECATED
+#    define IPP_ERROR          IPP_STATE_ERROR
+#    define IPP_IDLE           IPP_STATE_IDLE
+#    define IPP_HEADER         IPP_STATE_HEADER
+#    define IPP_ATTRIBUTE      IPP_STATE_ATTRIBUTE
+#    define IPP_DATA           IPP_STATE_DATA
+#  endif /* !_CUPS_NO_DEPRECATED */
 } ipp_state_t;
 
 typedef enum ipp_status_e              /**** IPP status codes ****/
 {
   IPP_STATUS_CUPS_INVALID = -1,                /* Invalid status name for @link ippErrorValue@ */
-  IPP_OK = 0x0000,                     /* successful-ok */
-  IPP_OK_SUBST,                                /* successful-ok-ignored-or-substituted-attributes */
-  IPP_OK_CONFLICT,                     /* successful-ok-conflicting-attributes */
-  IPP_OK_IGNORED_SUBSCRIPTIONS,                /* successful-ok-ignored-subscriptions */
-  IPP_OK_IGNORED_NOTIFICATIONS,                /* successful-ok-ignored-notifications @private@ */
-  IPP_OK_TOO_MANY_EVENTS,              /* successful-ok-too-many-events */
-  IPP_OK_BUT_CANCEL_SUBSCRIPTION,      /* successful-ok-but-cancel-subscription @private@ */
-  IPP_OK_EVENTS_COMPLETE,              /* successful-ok-events-complete */
-  IPP_REDIRECTION_OTHER_SITE = 0x200,  /* redirection-other-site @private@ */
-  CUPS_SEE_OTHER = 0x280,              /* cups-see-other */
-  IPP_BAD_REQUEST = 0x0400,            /* client-error-bad-request */
-  IPP_FORBIDDEN,                       /* client-error-forbidden */
-  IPP_NOT_AUTHENTICATED,               /* client-error-not-authenticated */
-  IPP_NOT_AUTHORIZED,                  /* client-error-not-authorized */
-  IPP_NOT_POSSIBLE,                    /* client-error-not-possible */
-  IPP_TIMEOUT,                         /* client-error-timeout */
-  IPP_NOT_FOUND,                       /* client-error-not-found */
-  IPP_GONE,                            /* client-error-gone */
-  IPP_REQUEST_ENTITY,                  /* client-error-request-entity-too-large */
-  IPP_REQUEST_VALUE,                   /* client-error-request-value-too-long */
-  IPP_DOCUMENT_FORMAT,                 /* client-error-document-format-not-supported */
-  IPP_ATTRIBUTES,                      /* client-error-attributes-or-values-not-supported */
-  IPP_URI_SCHEME,                      /* client-error-uri-scheme-not-supported */
-  IPP_CHARSET,                         /* client-error-charset-not-supported */
-  IPP_CONFLICT,                                /* client-error-conflicting-attributes */
-  IPP_COMPRESSION_NOT_SUPPORTED,       /* client-error-compression-not-supported */
-  IPP_COMPRESSION_ERROR,               /* client-error-compression-error */
-  IPP_DOCUMENT_FORMAT_ERROR,           /* client-error-document-format-error */
-  IPP_DOCUMENT_ACCESS_ERROR,           /* client-error-document-access-error */
-  IPP_ATTRIBUTES_NOT_SETTABLE,         /* client-error-attributes-not-settable */
-  IPP_IGNORED_ALL_SUBSCRIPTIONS,       /* client-error-ignored-all-subscriptions */
-  IPP_TOO_MANY_SUBSCRIPTIONS,          /* client-error-too-many-subscriptions */
-  IPP_IGNORED_ALL_NOTIFICATIONS,       /* client-error-ignored-all-notifications @private@ */
-  IPP_PRINT_SUPPORT_FILE_NOT_FOUND,    /* client-error-print-support-file-not-found @private@ */
-  IPP_DOCUMENT_PASSWORD_ERROR,         /* client-error-document-password-error */
-  IPP_DOCUMENT_PERMISSION_ERROR,       /* client-error-document-permission-error */
-  IPP_DOCUMENT_SECURITY_ERROR,         /* client-error-document-security-error */
-  IPP_DOCUMENT_UNPRINTABLE_ERROR,      /* client-error-document-unprintable-error */
-
-  IPP_INTERNAL_ERROR = 0x0500,         /* server-error-internal-error */
-  IPP_OPERATION_NOT_SUPPORTED,         /* server-error-operation-not-supported */
-  IPP_SERVICE_UNAVAILABLE,             /* server-error-service-unavailable */
-  IPP_VERSION_NOT_SUPPORTED,           /* server-error-version-not-supported */
-  IPP_DEVICE_ERROR,                    /* server-error-device-error */
-  IPP_TEMPORARY_ERROR,                 /* server-error-temporary-error */
-  IPP_NOT_ACCEPTING,                   /* server-error-not-accepting-jobs */
-  IPP_PRINTER_BUSY,                    /* server-error-busy */
-  IPP_ERROR_JOB_CANCELED,              /* server-error-job-canceled */
-  IPP_MULTIPLE_JOBS_NOT_SUPPORTED,     /* server-error-multiple-document-jobs-not-supported */
-  IPP_PRINTER_IS_DEACTIVATED,          /* server-error-printer-is-deactivated */
-  IPP_TOO_MANY_JOBS,                   /* server-error-too-many-jobs */
-  IPP_TOO_MANY_DOCUMENTS,              /* server-error-too-many-documents */
-
-  IPP_AUTHENTICATION_CANCELED = 0x1000,        /* Authentication canceled by user @since CUPS 1.5/OS X 10.7@ */
-  IPP_PKI_ERROR,                       /* Error negotiating a secure connection @since CUPS 1.5/OS X 10.7@ */
-  IPP_UPGRADE_REQUIRED                 /* TLS upgrade required */
-
-  /* Legacy name for canceled status */
-#define IPP_ERROR_JOB_CANCELLED IPP_ERROR_JOB_CANCELED
-
+  IPP_STATUS_OK = 0x0000,              /* successful-ok */
+  IPP_STATUS_OK_IGNORED_OR_SUBSTITUTED,        /* successful-ok-ignored-or-substituted-attributes */
+  IPP_STATUS_OK_CONFLICTING,           /* successful-ok-conflicting-attributes */
+  IPP_STATUS_OK_IGNORED_SUBSCRIPTIONS, /* successful-ok-ignored-subscriptions */
+  IPP_STATUS_OK_IGNORED_NOTIFICATIONS, /* successful-ok-ignored-notifications @private@ */
+  IPP_STATUS_OK_TOO_MANY_EVENTS,       /* successful-ok-too-many-events */
+  IPP_STATUS_OK_BUT_CANCEL_SUBSCRIPTION,/* successful-ok-but-cancel-subscription @private@ */
+  IPP_STATUS_OK_EVENTS_COMPLETE,       /* successful-ok-events-complete */
+  IPP_STATUS_REDIRECTION_OTHER_SITE = 0x0200,
+                                       /* redirection-other-site @private@ */
+  IPP_STATUS_CUPS_SEE_OTHER = 0x0280,  /* cups-see-other */
+  IPP_STATUS_ERROR_BAD_REQUEST = 0x0400,/* client-error-bad-request */
+  IPP_STATUS_ERROR_FORBIDDEN,          /* client-error-forbidden */
+  IPP_STATUS_ERROR_NOT_AUTHENTICATED,  /* client-error-not-authenticated */
+  IPP_STATUS_ERROR_NOT_AUTHORIZED,     /* client-error-not-authorized */
+  IPP_STATUS_ERROR_NOT_POSSIBLE,       /* client-error-not-possible */
+  IPP_STATUS_ERROR_TIMEOUT,            /* client-error-timeout */
+  IPP_STATUS_ERROR_NOT_FOUND,          /* client-error-not-found */
+  IPP_STATUS_ERROR_GONE,               /* client-error-gone */
+  IPP_STATUS_ERROR_REQUEST_ENTITY,     /* client-error-request-entity-too-large */
+  IPP_STATUS_ERROR_REQUEST_VALUE,      /* client-error-request-value-too-long */
+  IPP_STATUS_ERROR_DOCUMENT_FORMAT_NOT_SUPPORTED,
+                                       /* client-error-document-format-not-supported */
+  IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES,/* client-error-attributes-or-values-not-supported */
+  IPP_STATUS_ERROR_URI_SCHEME,         /* client-error-uri-scheme-not-supported */
+  IPP_STATUS_ERROR_CHARSET,            /* client-error-charset-not-supported */
+  IPP_STATUS_ERROR_CONFLICTING,                /* client-error-conflicting-attributes */
+  IPP_STATUS_ERROR_COMPRESSION_NOT_SUPPORTED,
+                                       /* client-error-compression-not-supported */
+  IPP_STATUS_ERROR_COMPRESSION_ERROR,  /* client-error-compression-error */
+  IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR,
+                                       /* client-error-document-format-error */
+  IPP_STATUS_ERROR_DOCUMENT_ACCESS,    /* client-error-document-access-error */
+  IPP_STATUS_ERROR_ATTRIBUTES_NOT_SETTABLE,
+                                       /* client-error-attributes-not-settable */
+  IPP_STATUS_ERROR_IGNORED_ALL_SUBSCRIPTIONS,
+                                       /* client-error-ignored-all-subscriptions */
+  IPP_STATUS_ERROR_TOO_MANY_SUBSCRIPTIONS,
+                                       /* client-error-too-many-subscriptions */
+  IPP_STATUS_ERROR_IGNORED_ALL_NOTIFICATIONS,
+                                       /* client-error-ignored-all-notifications @private@ */
+  IPP_STATUS_ERROR_PRINT_SUPPORT_FILE_NOT_FOUND,
+                                       /* client-error-print-support-file-not-found @private@ */
+  IPP_STATUS_ERROR_DOCUMENT_PASSWORD,  /* client-error-document-password-error */
+  IPP_STATUS_ERROR_DOCUMENT_PERMISSION,        /* client-error-document-permission-error */
+  IPP_STATUS_ERROR_DOCUMENT_SECURITY,  /* client-error-document-security-error */
+  IPP_STATUS_ERROR_DOCUMENT_UNPRINTABLE,/* client-error-document-unprintable-error */
+
+  /* Proposed extensions for paid printing */
+  IPP_STATUS_ERROR_CUPS_ACCOUNT_INFO_NEEDED = 0x049C,
+                                       /* cups-error-account-info-needed @since CUPS 1.7@ */
+  IPP_STATUS_ERROR_CUPS_ACCOUNT_CLOSED,        /* cups-error-account-closed @since CUPS 1.7@ */
+  IPP_STATUS_ERROR_CUPS_ACCOUNT_LIMIT_REACHED,
+                                       /* cups-error-account-limit-reached @since CUPS 1.7@ */
+  IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED,
+                                       /* cups-error-account-authorization-failed @since CUPS 1.7@ */
+
+  IPP_STATUS_ERROR_INTERNAL = 0x0500,  /* server-error-internal-error */
+  IPP_STATUS_ERROR_OPERATION_NOT_SUPPORTED,
+                                       /* server-error-operation-not-supported */
+  IPP_STATUS_ERROR_SERVICE_UNAVAILABLE,        /* server-error-service-unavailable */
+  IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED,
+                                       /* server-error-version-not-supported */
+  IPP_STATUS_ERROR_DEVICE,             /* server-error-device-error */
+  IPP_STATUS_ERROR_TEMPORARY,          /* server-error-temporary-error */
+  IPP_STATUS_ERROR_NOT_ACCEPTING_JOBS, /* server-error-not-accepting-jobs */
+  IPP_STATUS_ERROR_BUSY,               /* server-error-busy */
+  IPP_STATUS_ERROR_JOB_CANCELED,       /* server-error-job-canceled */
+  IPP_STATUS_ERROR_MULTIPLE_JOBS_NOT_SUPPORTED,
+                                       /* server-error-multiple-document-jobs-not-supported */
+  IPP_STATUS_ERROR_PRINTER_IS_DEACTIVATED,
+                                       /* server-error-printer-is-deactivated */
+  IPP_STATUS_ERROR_TOO_MANY_JOBS,      /* server-error-too-many-jobs */
+  IPP_STATUS_ERROR_TOO_MANY_DOCUMENTS, /* server-error-too-many-documents */
+
+  /* These are internal and never sent over the wire... */
+  IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED = 0x1000,
+                                       /* cups-authentication-canceled - Authentication canceled by user @since CUPS 1.5/OS X 10.7@ */
+  IPP_STATUS_ERROR_CUPS_PKI,           /* cups-pki-error - Error negotiating a secure connection @since CUPS 1.5/OS X 10.7@ */
+  IPP_STATUS_ERROR_CUPS_UPGRADE_REQUIRED/* cups-upgrade-required - TLS upgrade required */
+
+#  ifndef _CUPS_NO_DEPRECATED
+#    define IPP_OK                             IPP_STATUS_OK
+#    define IPP_OK_SUBST                       IPP_STATUS_OK_IGNORED_OR_SUBSTITUTED
+#    define IPP_OK_CONFLICT                    IPP_STATUS_OK_CONFLICTING
+#    define IPP_OK_IGNORED_SUBSCRIPTIONS       IPP_STATUS_OK_IGNORED_SUBSCRIPTIONS
+#    define IPP_OK_IGNORED_NOTIFICATIONS       IPP_STATUS_OK_IGNORED_NOTIFICATIONS
+#    define IPP_OK_TOO_MANY_EVENTS             IPP_STATUS_OK_TOO_MANY_EVENTS
+#    define IPP_OK_BUT_CANCEL_SUBSCRIPTION     IPP_STATUS_OK_BUT_CANCEL_SUBSCRIPTION
+#    define IPP_OK_EVENTS_COMPLETE             IPP_STATUS_OK_EVENTS_COMPLETE
+#    define IPP_REDIRECTION_OTHER_SITE         IPP_STATUS_REDIRECTION_OTHER_SITE
+#    define CUPS_SEE_OTHER                     IPP_STATUS_CUPS_SEE_OTHER
+#    define IPP_BAD_REQUEST                    IPP_STATUS_ERROR_BAD_REQUEST
+#    define IPP_FORBIDDEN                      IPP_STATUS_ERROR_FORBIDDEN
+#    define IPP_NOT_AUTHENTICATED              IPP_STATUS_ERROR_NOT_AUTHENTICATED
+#    define IPP_NOT_AUTHORIZED                 IPP_STATUS_ERROR_NOT_AUTHORIZED
+#    define IPP_NOT_POSSIBLE                   IPP_STATUS_ERROR_NOT_POSSIBLE
+#    define IPP_TIMEOUT                                IPP_STATUS_ERROR_TIMEOUT
+#    define IPP_NOT_FOUND                      IPP_STATUS_ERROR_NOT_FOUND
+#    define IPP_GONE                           IPP_STATUS_ERROR_GONE
+#    define IPP_REQUEST_ENTITY                 IPP_STATUS_ERROR_REQUEST_ENTITY
+#    define IPP_REQUEST_VALUE                  IPP_STATUS_ERROR_REQUEST_VALUE
+#    define IPP_DOCUMENT_FORMAT                        IPP_STATUS_ERROR_DOCUMENT_FORMAT_NOT_SUPPORTED
+#    define IPP_ATTRIBUTES                     IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES
+#    define IPP_URI_SCHEME                     IPP_STATUS_ERROR_URI_SCHEME
+#    define IPP_CHARSET                                IPP_STATUS_ERROR_CHARSET
+#    define IPP_CONFLICT                       IPP_STATUS_ERROR_CONFLICTING
+#    define IPP_COMPRESSION_NOT_SUPPORTED      IPP_STATUS_ERROR_COMPRESSION_NOT_SUPPORTED
+#    define IPP_COMPRESSION_ERROR              IPP_STATUS_ERROR_COMPRESSION_ERROR
+#    define IPP_DOCUMENT_FORMAT_ERROR          IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR
+#    define IPP_DOCUMENT_ACCESS_ERROR          IPP_STATUS_ERROR_DOCUMENT_ACCESS
+#    define IPP_ATTRIBUTES_NOT_SETTABLE                IPP_STATUS_ERROR_ATTRIBUTES_NOT_SETTABLE
+#    define IPP_IGNORED_ALL_SUBSCRIPTIONS      IPP_STATUS_ERROR_IGNORED_ALL_SUBSCRIPTIONS
+#    define IPP_TOO_MANY_SUBSCRIPTIONS         IPP_STATUS_ERROR_TOO_MANY_SUBSCRIPTIONS
+#    define IPP_IGNORED_ALL_NOTIFICATIONS      IPP_STATUS_ERROR_IGNORED_ALL_NOTIFICATIONS
+#    define IPP_PRINT_SUPPORT_FILE_NOT_FOUND   IPP_STATUS_ERROR_PRINT_SUPPORT_FILE_NOT_FOUND
+#    define IPP_DOCUMENT_PASSWORD_ERROR                IPP_STATUS_ERROR_DOCUMENT_PASSWORD
+#    define IPP_DOCUMENT_PERMISSION_ERROR      IPP_STATUS_ERROR_DOCUMENT_PERMISSION
+#    define IPP_DOCUMENT_SECURITY_ERROR                IPP_STATUS_ERROR_DOCUMENT_SECURITY
+#    define IPP_DOCUMENT_UNPRINTABLE_ERROR     IPP_STATUS_ERROR_DOCUMENT_UNPRINTABLE
+#    define IPP_INTERNAL_ERROR                 IPP_STATUS_ERROR_INTERNAL
+#    define IPP_OPERATION_NOT_SUPPORTED                IPP_STATUS_ERROR_OPERATION_NOT_SUPPORTED
+#    define IPP_SERVICE_UNAVAILABLE            IPP_STATUS_ERROR_SERVICE_UNAVAILABLE
+#    define IPP_VERSION_NOT_SUPPORTED          IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED
+#    define IPP_DEVICE_ERROR                   IPP_STATUS_ERROR_DEVICE
+#    define IPP_TEMPORARY_ERROR                        IPP_STATUS_ERROR_TEMPORARY
+#    define IPP_NOT_ACCEPTING                  IPP_STATUS_ERROR_NOT_ACCEPTING_JOBS
+#    define IPP_PRINTER_BUSY                   IPP_STATUS_ERROR_BUSY
+#    define IPP_ERROR_JOB_CANCELED             IPP_STATUS_ERROR_JOB_CANCELED
+#    define IPP_MULTIPLE_JOBS_NOT_SUPPORTED    IPP_STATUS_ERROR_MULTIPLE_JOBS_NOT_SUPPORTED
+#    define IPP_PRINTER_IS_DEACTIVATED         IPP_STATUS_ERROR_PRINTER_IS_DEACTIVATED
+#    define IPP_TOO_MANY_JOBS                  IPP_STATUS_ERROR_TOO_MANY_JOBS
+#    define IPP_TOO_MANY_DOCUMENTS             IPP_STATUS_ERROR_TOO_MANY_DOCUMENTS
+#    define IPP_AUTHENTICATION_CANCELED                IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED
+#    define IPP_PKI_ERROR                      IPP_STATUS_ERROR_CUPS_PKI
+#    define IPP_UPGRADE_REQUIRED               IPP_STATUS_ERROR_CUPS_UPGRADE_REQUIRED
+     /* Legacy name for canceled status */
+#    define IPP_ERROR_JOB_CANCELLED            IPP_STATUS_ERROR_JOB_CANCELED
+#  endif /* _CUPS_NO_DEPRECATED */
 } ipp_status_t;
 
 typedef enum ipp_tag_e                 /**** Format tags for attributes ****/
@@ -364,9 +592,14 @@ typedef enum ipp_tag_e                     /**** Format tags for attributes ****/
   IPP_TAG_MIMETYPE,                    /* MIME media type value */
   IPP_TAG_MEMBERNAME,                  /* Collection member name value */
   IPP_TAG_EXTENSION = 0x7f,            /* Extension point for 32-bit tags */
-  IPP_TAG_MASK = 0x7fffffff,           /* Mask for copied attribute values @private@ */
+  IPP_TAG_CUPS_MASK = 0x7fffffff,      /* Mask for copied attribute values @private@ */
   /* The following expression is used to avoid compiler warnings with +/-0x80000000 */
-  IPP_TAG_COPY = -0x7fffffff-1         /* Bitflag for copied attribute values @private@ */
+  IPP_TAG_CUPS_CONST = -0x7fffffff-1   /* Bitflag for copied/const attribute values @private@ */
+
+#  ifndef _CUPS_NO_DEPRECATED
+#    define IPP_TAG_MASK               IPP_TAG_CUPS_MASK
+#    define IPP_TAG_COPY               IPP_TAG_CUPS_CONST
+#  endif /* !_CUPS_NO_DEPRECATED */
 } ipp_tag_t;
 
 typedef unsigned char ipp_uchar_t;     /**** Unsigned 8-bit integer/character ****/
@@ -387,12 +620,18 @@ typedef int (*ipp_copycb_t)(void *context, ipp_t *dst, ipp_attribute_t *attr);
  * Please use the new accessor functions available in CUPS 1.6 and later, as
  * these definitions will be moved to a private header file in a future release.
  *
- * Define _IPP_PRIVATE_STRUCTURES to cause the private IPP structures to be
+ * Define _IPP_PRIVATE_STRUCTURES to 1 to cause the private IPP structures to be
  * exposed in CUPS 1.6.  This happens automatically on OS X when compiling for
  * a deployment target of 10.7 or earlier.
+ *
+ * Define _IPP_PRIVATE_STRUCTURES to 0 to prevent the private IPP structures
+ * from being exposed.  This is useful when migrating existing code to the new
+ * accessors.
  */
 
-#  if defined(_CUPS_SOURCE) || defined(_CUPS_IPP_PRIVATE_H_)
+#  ifdef _IPP_PRIVATE_STRUCTURES
+     /* Somebody has overridden the value */
+#  elif defined(_CUPS_SOURCE) || defined(_CUPS_IPP_PRIVATE_H_)
      /* Building CUPS */
 #    define _IPP_PRIVATE_STRUCTURES 1
 #  elif defined(__APPLE__)
@@ -403,9 +642,11 @@ typedef int (*ipp_copycb_t)(void *context, ipp_t *dst, ipp_attribute_t *attr);
        /* Building for 10.7 and earlier */
 #      define _IPP_PRIVATE_STRUCTURES 1
 #    endif /* MAC_OS_X_VERSION_10_8 && MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_8 */
+#  else
+#    define _IPP_PRIVATE_STRUCTURES 0
 #  endif /* _CUPS_SOURCE || _CUPS_IPP_PRIVATE_H_ */
 
-#  ifdef _IPP_PRIVATE_STRUCTURES
+#  if _IPP_PRIVATE_STRUCTURES
 typedef union _ipp_request_u           /**** Request Header ****/
 {
   struct                               /* Any Header */
@@ -664,6 +905,28 @@ extern int         ippSetValueTag(ipp_t *ipp, ipp_attribute_t **attr,
 extern int             ippSetVersion(ipp_t *ipp, int major, int minor)
                                      _CUPS_API_1_6;
 
+/**** New in CUPS 1.7 ****/
+extern ipp_attribute_t *ippAddStringf(ipp_t *ipp, ipp_tag_t group,
+                                      ipp_tag_t value_tag, const char *name,
+                                      const char *language, const char *format,
+                                      ...) _CUPS_API_1_7;
+extern ipp_attribute_t *ippAddStringfv(ipp_t *ipp, ipp_tag_t group,
+                                       ipp_tag_t value_tag, const char *name,
+                                       const char *language,
+                                       const char *format, va_list ap)
+                                       _CUPS_API_1_7;
+extern int             ippContainsInteger(ipp_attribute_t *attr, int value)
+                                          _CUPS_API_1_7;
+extern int             ippContainsString(ipp_attribute_t *attr,
+                                         const char *value) _CUPS_API_1_7;
+extern ipp_t           *ippNewResponse(ipp_t *request) _CUPS_API_1_7;
+extern int             ippSetStringf(ipp_t *ipp, ipp_attribute_t **attr,
+                                     int element, const char *format,
+                                     ...) _CUPS_API_1_7;
+extern int             ippSetStringfv(ipp_t *ipp, ipp_attribute_t **attr,
+                                      int element, const char *format,
+                                      va_list ap) _CUPS_API_1_7;
+
 
 /*
  * C++ magic...
index 2e7a5d626d61361ac94db38046183efc6872e580..be4c64e9815ca2da0e740ab1a033a84cf2222676 100644 (file)
@@ -560,6 +560,8 @@ _ppdCacheCreateWithFile(
     }
     else if (!_cups_strcasecmp(line, "MaxCopies"))
       pc->max_copies = atoi(value);
+    else if (!_cups_strcasecmp(line, "ChargeInfoURI"))
+      pc->charge_info_uri = _cupsStrAlloc(value);
     else if (!_cups_strcasecmp(line, "JobAccountId"))
       pc->account_id = !_cups_strcasecmp(value, "true");
     else if (!_cups_strcasecmp(line, "JobAccountingUserId"))
@@ -1380,10 +1382,13 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */
     pc->max_copies = 9999;
 
  /*
-  * cupsJobAccountId, cupsJobAccountingUserId, cupsJobPassword, and
-  * cupsMandatory.
+  * cupsChargeInfoURI, cupsJobAccountId, cupsJobAccountingUserId,
+  * cupsJobPassword, and cupsMandatory.
   */
 
+  if ((ppd_attr = ppdFindAttr(ppd, "cupsChargeInfoURI", NULL)) != NULL)
+    pc->charge_info_uri = _cupsStrAlloc(ppd_attr->value);
+
   if ((ppd_attr = ppdFindAttr(ppd, "cupsJobAccountId", NULL)) != NULL)
     pc->account_id = !_cups_strcasecmp(ppd_attr->value, "true");
 
@@ -1496,6 +1501,7 @@ _ppdCacheDestroy(_ppd_cache_t *pc)        /* I - PPD cache and mapping data */
   cupsArrayDelete(pc->prefilters);
   cupsArrayDelete(pc->finishings);
 
+  _cupsStrFree(pc->charge_info_uri);
   _cupsStrFree(pc->password);
 
   cupsArrayDelete(pc->mandatory);
@@ -2395,6 +2401,9 @@ _ppdCacheWriteFile(
   * Accounting/quota/PIN/managed printing values...
   */
 
+  if (pc->charge_info_uri)
+    cupsFilePutConf(fp, "ChargeInfoURI", pc->charge_info_uri);
+
   cupsFilePrintf(fp, "AccountId %s\n", pc->account_id ? "true" : "false");
   cupsFilePrintf(fp, "AccountingUserId %s\n",
                  pc->accounting_user_id ? "true" : "false");
index 1eaa2c816d93ccdbedfc9708d04587be2af69d3f..03b014783d3a1e8be4cd8301e4f6ea208817f732 100644 (file)
@@ -49,7 +49,7 @@ extern "C" {
  * Constants...
  */
 
-#  define _PPD_CACHE_VERSION   4       /* Version number in cache file */
+#  define _PPD_CACHE_VERSION   5       /* Version number in cache file */
 
 
 /*
@@ -146,6 +146,7 @@ struct _ppd_cache_s                 /**** PPD cache and PWG conversion data ****/
                accounting_user_id;     /* cupsJobAccountingUserId value */
   char         *password;              /* cupsJobPassword value */
   cups_array_t *mandatory;             /* cupsMandatory value */
+  char         *charge_info_uri;       /* cupsChargeInfoURI value */
 };
 
 
index 222b6ef7c11d2927f19051969ee18272f8b8b92f..a1ec90028fc7abcd1e693aeac9c08e7fedbeae78 100644 (file)
  *
  * Contents:
  *
+ *   _pwgFormatInches()      - Convert and format PWG units as inches.
+ *   _pwgFormatMillimeters() - Convert and format PWG units as millimeters.
+ *   _pwgGenerateSize()      - Generate a PWG size keyword.
+ *   _pwgInitSize()         - Initialize a PWG size using IPP job template
+ *                            attributes.
+ *   _pwgMediaForLegacy()    - Find a PWG media size by ISO/IPP legacy name.
+ *   _pwgMediaForPPD()      - Find a PWG media size by Adobe PPD name.
+ *   _pwgMediaForPWG()      - Find a PWG media size by 5101.1 self-describing
+ *                            name.
+ *   _pwgMediaForSize()      - Get the PWG media name for a given size.
+ *   pwg_compare_legacy()    - Compare two sizes using the legacy names.
+ *   pwg_compare_ppd()      - Compare two sizes using the PPD names.
+ *   pwg_compare_pwg()      - Compare two sizes using the PWG names.
  */
 
 /*
@@ -74,6 +87,7 @@ static _pwg_media_t const cups_pwg_media[] =
   _PWG_MEDIA_IN("na_fanfold-eur_8.5x12in", NULL, "FanFoldGerman", 8.5, 12),
   _PWG_MEDIA_IN("na_letter-plus_8.5x12.69in", NULL, "LetterPlus", 8.5, 12.69),
   _PWG_MEDIA_IN("na_foolscap_8.5x13in", NULL, "FanFoldGermanLegal", 8.5, 13),
+  _PWG_MEDIA_IN("na_oficio_8.5x13.4in", NULL, "Oficio", 8.5, 13.4),
   _PWG_MEDIA_IN("na_legal_8.5x14in", "na-legal", "Legal", 8.5, 14),
   _PWG_MEDIA_IN("na_super-a_8.94x14in", NULL, "SuperA", 8.94, 14),
   _PWG_MEDIA_IN("na_9x11_9x11in", "na-9x11-envelope", "9x11", 9, 11),
@@ -104,10 +118,6 @@ static _pwg_media_t const cups_pwg_media[] =
   _PWG_MEDIA_IN("na_arch-e_36x48in", "arch-e", "ARCHE", 36, 48),
   _PWG_MEDIA_IN("na_f_44x68in", NULL, "AnsiF", 44, 68),
 
-  /* Chinese Standard Sheet Media Inch Sizes */
-  _PWG_MEDIA_IN("roc_16k_7.75x10.75in", NULL, "roc16k", 7.75, 10.75),
-  _PWG_MEDIA_IN("roc_8k_10.75x15.5in", NULL, "roc8k", 10.75, 15.5),
-
   /* ISO Standard Sheet Media Sizes */
   _PWG_MEDIA_MM("iso_a10_26x37mm", "iso-a10", "A10", 26, 37),
   _PWG_MEDIA_MM("iso_a9_37x52mm", "iso-a9", "A9", 37, 52),
@@ -170,6 +180,10 @@ static _pwg_media_t const cups_pwg_media[] =
   _PWG_MEDIA_MM("iso_c1_648x917mm", "iso-c1", "EnvC1", 648, 917),
   _PWG_MEDIA_MM("iso_c0_917x1297mm", "iso-c0", "EnvC0", 917, 1297),
   _PWG_MEDIA_MM("iso_dl_110x220mm", "iso-designated", "EnvDL", 110, 220),
+  _PWG_MEDIA_MM("iso_ra4_215x305mm", "iso-ra4", NULL, 215, 305),
+  _PWG_MEDIA_MM("iso_sra4_225x320mm", "iso-sra4", NULL, 225, 320),
+  _PWG_MEDIA_MM("iso_ra3_305x430mm", "iso-ra3", NULL, 305, 430),
+  _PWG_MEDIA_MM("iso_sra3_320x450mm", "iso-sra3", NULL, 320, 450),
   _PWG_MEDIA_MM("iso_ra2_430x610mm", "iso-ra2", NULL, 430, 610),
   _PWG_MEDIA_MM("iso_sra2_450x640mm", "iso-sra2", NULL, 450, 640),
   _PWG_MEDIA_MM("iso_ra1_610x860mm", "iso-ra1", NULL, 610, 860),
@@ -190,15 +204,21 @@ static _pwg_media_t const cups_pwg_media[] =
   _PWG_MEDIA_MM("jis_b1_728x1030mm", "jis-b1", "B1", 728, 1030),
   _PWG_MEDIA_MM("jis_b0_1030x1456mm", "jis-b0", "B0", 1030, 1456),
   _PWG_MEDIA_MM("jis_exec_216x330mm", NULL, NULL, 216, 330),
+  _PWG_MEDIA_MM("jpn_kaku2_240x332mm", NULL, "EnvKaku2", 240, 332),
+  _PWG_MEDIA_MM("jpn_kaku3_216x277mm", NULL, "EnvKaku3", 216, 277),
+  _PWG_MEDIA_MM("jpn_kaku4_197x267mm", NULL, "EnvKaku4", 197, 267),
+  _PWG_MEDIA_MM("jpn_kaku5_190x240mm", NULL, "EnvKaku5", 190, 240),
+  _PWG_MEDIA_MM("jpn_kaku7_142x205mm", NULL, "EnvKaku7", 142, 205),
+  _PWG_MEDIA_MM("jpn_kaku8_119x197mm", NULL, "EnvKaku8", 119, 197),
   _PWG_MEDIA_MM("jpn_chou4_90x205mm", NULL, "EnvChou4", 90, 205),
   _PWG_MEDIA_MM("jpn_hagaki_100x148mm", NULL, "Postcard", 100, 148),
   _PWG_MEDIA_MM("jpn_you4_105x235mm", NULL, "EnvYou4", 105, 235),
   _PWG_MEDIA_MM("jpn_you6_98x190mm", NULL, "EnvYou6", 98, 190),
   _PWG_MEDIA_MM("jpn_chou2_111.1x146mm", NULL, NULL, 111.1, 146),
   _PWG_MEDIA_MM("jpn_chou3_120x235mm", NULL, "EnvChou3", 120, 235),
+  _PWG_MEDIA_MM("jpn_chou40_90x225mm", NULL, "EnvChou40", 90, 225),
   _PWG_MEDIA_MM("jpn_oufuku_148x200mm", NULL, "DoublePostcardRotated", 148, 200),
   _PWG_MEDIA_MM("jpn_kahu_240x322.1mm", NULL, NULL, 240, 322.1),
-  _PWG_MEDIA_MM("jpn_kaku2_240x332mm", NULL, "EnvKaku2", 240, 332),
 
   /* Chinese Standard Sheet Media Sizes */
   _PWG_MEDIA_MM("prc_32k_97x151mm", NULL, "PRC32K", 97, 151),
@@ -216,6 +236,10 @@ static _pwg_media_t const cups_pwg_media[] =
   _PWG_MEDIA_MM("om_dai-pa-kai_275x395mm", NULL, NULL, 275, 395),
   _PWG_MEDIA_MM("prc_10_324x458mm", NULL, "EnvPRC10", 324, 458),
 
+  /* Chinese Standard Sheet Media Inch Sizes */
+  _PWG_MEDIA_IN("roc_16k_7.75x10.75in", NULL, "roc16k", 7.75, 10.75),
+  _PWG_MEDIA_IN("roc_8k_10.75x15.5in", NULL, "roc8k", 10.75, 15.5),
+
   /* Other English Standard Sheet Media Sizes */
   _PWG_MEDIA_IN("oe_photo-l_3.5x5in", NULL, "3.5x5", 3.5, 5),
 
@@ -226,7 +250,8 @@ static _pwg_media_t const cups_pwg_media[] =
   _PWG_MEDIA_MM("om_large-photo_200x300", NULL, "om_large-photo", 200, 300),
   _PWG_MEDIA_MM("om_folio_210x330mm", "folio", "Folio", 210, 330),
   _PWG_MEDIA_MM("om_folio-sp_215x315mm", NULL, "FolioSP", 215, 315),
-  _PWG_MEDIA_MM("om_invite_220x220mm", NULL, "EnvInvite", 220, 220)
+  _PWG_MEDIA_MM("om_invite_220x220mm", NULL, "EnvInvite", 220, 220),
+  _PWG_MEDIA_MM("om_small-photo_100x200mm", NULL, "om_wide-photo", 100, 200)
 };
 
 
index c83d0bf7bffdd775d78454b78e28377be3c2fd52..cfacc906dccf1194d2ef82ca83e1e6d55daa7d99 100644 (file)
@@ -368,11 +368,11 @@ typedef ssize_t (*cups_raster_iocb_t)(void *ctx, unsigned char *buffer, size_t l
 extern void            cupsRasterClose(cups_raster_t *r);
 extern cups_raster_t   *cupsRasterOpen(int fd, cups_mode_t mode);
 extern unsigned                cupsRasterReadHeader(cups_raster_t *r,
-                                            cups_page_header_t *h) _CUPS_DEPRECATED;
+                                            cups_page_header_t *h) _CUPS_DEPRECATED_MSG("Use cupsRasterReadHeader2 instead.");
 extern unsigned                cupsRasterReadPixels(cups_raster_t *r,
                                             unsigned char *p, unsigned len);
 extern unsigned                cupsRasterWriteHeader(cups_raster_t *r,
-                                             cups_page_header_t *h) _CUPS_DEPRECATED;
+                                             cups_page_header_t *h) _CUPS_DEPRECATED_MSG("Use cupsRasterWriteHeader2 instead.");
 extern unsigned                cupsRasterWritePixels(cups_raster_t *r,
                                              unsigned char *p, unsigned len);
 
index 51457df84268fab4c0d1cfa00c1f18e8a8a08614..01b8764ef967a819c00282066f9060b4130fc362 100644 (file)
@@ -385,7 +385,7 @@ cupsGetResponse(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
   {
     status = httpUpdate(http);
   }
-  while (status != HTTP_ERROR && http->state == HTTP_POST_RECV);
+  while (status == HTTP_STATUS_CONTINUE);
 
   DEBUG_printf(("2cupsGetResponse: status=%d", status));
 
@@ -602,10 +602,10 @@ cupsSendRequest(http_t     *http, /* I - Connection to server or @code CUPS_HTTP
                 const char *resource,  /* I - Resource path */
                size_t     length)      /* I - Length of data to follow or @code CUPS_LENGTH_VARIABLE@ */
 {
-  http_status_t        status;                 /* Status of HTTP request */
-  int          got_status;             /* Did we get the status? */
-  ipp_state_t  state;                  /* State of IPP processing */
-  http_status_t        expect;                 /* Expect: header to use */
+  http_status_t                status;         /* Status of HTTP request */
+  int                  got_status;     /* Did we get the status? */
+  ipp_state_t          state;          /* State of IPP processing */
+  http_status_t                expect;         /* Expect: header to use */
 
 
   DEBUG_printf(("cupsSendRequest(http=%p, request=%p(%s), resource=\"%s\", "
@@ -789,28 +789,31 @@ cupsSendRequest(http_t     *http, /* I - Connection to server or @code CUPS_HTTP
     * Process the current HTTP status...
     */
 
-    if (status >= HTTP_MULTIPLE_CHOICES)
+    if (status >= HTTP_STATUS_MULTIPLE_CHOICES)
     {
+      int temp_status;                 /* Temporary status */
+
       _cupsSetHTTPError(status);
 
       do
       {
-       status = httpUpdate(http);
+       temp_status = httpUpdate(http);
       }
-      while (status != HTTP_ERROR && http->state == HTTP_POST_RECV);
+      while (temp_status != HTTP_STATUS_ERROR &&
+             http->state == HTTP_STATE_POST_RECV);
 
       httpFlush(http);
     }
 
     switch (status)
     {
-      case HTTP_ERROR :
-      case HTTP_CONTINUE :
-      case HTTP_OK :
+      case HTTP_STATUS_CONTINUE :
+      case HTTP_STATUS_OK :
+      case HTTP_STATUS_ERROR :
           DEBUG_printf(("1cupsSendRequest: Returning %d.", status));
           return (status);
 
-      case HTTP_UNAUTHORIZED :
+      case HTTP_STATUS_UNAUTHORIZED :
           if (cupsDoAuthentication(http, "POST", resource))
          {
             DEBUG_puts("1cupsSendRequest: Returning HTTP_AUTHORIZATION_CANCELED.");
@@ -827,7 +830,7 @@ cupsSendRequest(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
          break;
 
 #ifdef HAVE_SSL
-      case HTTP_UPGRADE_REQUIRED :
+      case HTTP_STATUS_UPGRADE_REQUIRED :
         /*
          * Flush any error message, reconnect, and then upgrade with
          * encryption...
@@ -851,7 +854,7 @@ cupsSendRequest(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
          break;
 #endif /* HAVE_SSL */
 
-      case HTTP_EXPECTATION_FAILED :
+      case HTTP_STATUS_EXPECTATION_FAILED :
         /*
          * Don't try using the Expect: header the next time around...
          */
@@ -993,7 +996,7 @@ _cupsConnect(void)
     */
 
     if (strcmp(cg->http->hostname, cg->server) ||
-        cg->ipp_port != _httpAddrPort(cg->http->hostaddr) ||
+        cg->ipp_port != httpAddrPort(cg->http->hostaddr) ||
         (cg->http->encryption != cg->encryption &&
         cg->http->encryption == HTTP_ENCRYPT_NEVER))
     {
index 9f7eb2a7159c2e16163108ec0cbe673caff6f901..5ae622606b9e2f3005d9c2caa077384190d18705 100644 (file)
@@ -27,7 +27,7 @@
 
 #include "string-private.h"
 #include "debug-private.h"
-#include "array.h"
+#include "array-private.h"
 #include "dir.h"
 
 
@@ -404,6 +404,88 @@ main(int  argc,                            /* I - Number of command-line arguments */
   cupsArrayDelete(array);
   cupsArrayDelete(dup_array);
 
+ /*
+  * Test the array with string functions...
+  */
+
+  fputs("_cupsArrayNewStrings(\" \\t\\nfoo bar\\tboo\\nfar\", ' '): ", stdout);
+  array = _cupsArrayNewStrings(" \t\nfoo bar\tboo\nfar", ' ');
+  if (!array)
+  {
+    status = 1;
+    puts("FAIL (unable to create array)");
+  }
+  else if (cupsArrayCount(array) != 4)
+  {
+    status = 1;
+    printf("FAIL (got %d elements, expected 4)\n", cupsArrayCount(array));
+  }
+  else if (strcmp(text = (char *)cupsArrayFirst(array), "bar"))
+  {
+    status = 1;
+    printf("FAIL (first element \"%s\", expected \"bar\")\n", text);
+  }
+  else if (strcmp(text = (char *)cupsArrayNext(array), "boo"))
+  {
+    status = 1;
+    printf("FAIL (first element \"%s\", expected \"boo\")\n", text);
+  }
+  else if (strcmp(text = (char *)cupsArrayNext(array), "far"))
+  {
+    status = 1;
+    printf("FAIL (first element \"%s\", expected \"far\")\n", text);
+  }
+  else if (strcmp(text = (char *)cupsArrayNext(array), "foo"))
+  {
+    status = 1;
+    printf("FAIL (first element \"%s\", expected \"foo\")\n", text);
+  }
+  else
+    puts("PASS");
+
+  fputs("_cupsArrayAddStrings(array, \"foo2,bar2\", ','): ", stdout);
+  _cupsArrayAddStrings(array, "foo2,bar2", ',');
+
+  if (cupsArrayCount(array) != 6)
+  {
+    status = 1;
+    printf("FAIL (got %d elements, expected 6)\n", cupsArrayCount(array));
+  }
+  else if (strcmp(text = (char *)cupsArrayFirst(array), "bar"))
+  {
+    status = 1;
+    printf("FAIL (first element \"%s\", expected \"bar\")\n", text);
+  }
+  else if (strcmp(text = (char *)cupsArrayNext(array), "bar2"))
+  {
+    status = 1;
+    printf("FAIL (first element \"%s\", expected \"bar2\")\n", text);
+  }
+  else if (strcmp(text = (char *)cupsArrayNext(array), "boo"))
+  {
+    status = 1;
+    printf("FAIL (first element \"%s\", expected \"boo\")\n", text);
+  }
+  else if (strcmp(text = (char *)cupsArrayNext(array), "far"))
+  {
+    status = 1;
+    printf("FAIL (first element \"%s\", expected \"far\")\n", text);
+  }
+  else if (strcmp(text = (char *)cupsArrayNext(array), "foo"))
+  {
+    status = 1;
+    printf("FAIL (first element \"%s\", expected \"foo\")\n", text);
+  }
+  else if (strcmp(text = (char *)cupsArrayNext(array), "foo2"))
+  {
+    status = 1;
+    printf("FAIL (first element \"%s\", expected \"foo2\")\n", text);
+  }
+  else
+    puts("PASS");
+
+  cupsArrayDelete(array);
+
  /*
   * Summarize the results and return...
   */
index 089e4d28cb970f99d271d0ec2c03daab7be073e6..3e699cd3bc807cfcba3737be718a49bc2c8abd62 100644 (file)
@@ -186,6 +186,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
                *addr;                  /* Current address */
   off_t                length, total;          /* Length and total bytes */
   time_t       start, current;         /* Start and end time */
+  const char   *encoding;              /* Negotiated Content-Encoding */
   static const char * const uri_status_strings[] =
                {
                  "HTTP_URI_OVERFLOW",
@@ -554,9 +555,24 @@ main(int  argc,                            /* I - Number of command-line arguments */
       perror(hostname);
       continue;
     }
-    printf("Requesting file \"%s\"...\n", resource);
+    printf("Checking file \"%s\"...\n", resource);
     httpClearFields(http);
     httpSetField(http, HTTP_FIELD_ACCEPT_LANGUAGE, "en");
+    httpHead(http, resource);
+    while ((status = httpUpdate(http)) == HTTP_CONTINUE);
+
+    if (status == HTTP_OK)
+      puts("HEAD OK:");
+    else
+      printf("HEAD failed with status %d...\n", status);
+
+    encoding = httpGetContentEncoding(http);
+
+    printf("Requesting file \"%s\" (Accept-Encoding: %s)...\n", resource,
+           encoding ? encoding : "identity");
+    httpClearFields(http);
+    httpSetField(http, HTTP_FIELD_ACCEPT_LANGUAGE, "en");
+    httpSetField(http, HTTP_FIELD_ACCEPT_ENCODING, encoding);
     httpGet(http, resource);
     while ((status = httpUpdate(http)) == HTTP_CONTINUE);
 
index 5655b6be2c424b8fda44c6537e395bd7b88fc54e..88ed7dfaccb2581f4e60435b56cef968cf6aec9b 100644 (file)
@@ -263,6 +263,7 @@ main(int  argc,                     /* I - Number of command-line arguments */
   cups_file_t  *fp;            /* File pointer */
   int          i;              /* Looping var */
   int          status;         /* Status of tests (0 = success, 1 = fail) */
+  const char   *name;          /* Option name */
 
 
   status = 0;
@@ -625,11 +626,26 @@ main(int  argc,                   /* I - Number of command-line arguments */
 
     ippDelete(request);
 
+#ifdef DEBUG
+   /*
+    * Test that private option array is sorted...
+    */
+
+    fputs("_ippCheckOptions: ", stdout);
+    if ((name = _ippCheckOptions()) == NULL)
+      puts("PASS");
+    else
+    {
+      printf("FAIL (\"%s\" out of order)\n", name);
+      status = 1;
+    }
+#endif /* DEBUG */
+
    /*
     * Test _ippFindOption() private API...
     */
 
-    fputs("_ippFindOption(printer-type): ", stdout);
+    fputs("_ippFindOption(\"printer-type\"): ", stdout);
     if (_ippFindOption("printer-type"))
       puts("PASS");
     else
index c9826549c3373ae1da455dbd6633adc698d18747..77e3e79eba630c975071902163ed3acfacdebae1 100644 (file)
@@ -248,6 +248,7 @@ cupsCreateJob(
   if (title)
     ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL,
                  title);
+  cupsEncodeOptions2(request, num_options, options, IPP_TAG_OPERATION);
   cupsEncodeOptions2(request, num_options, options, IPP_TAG_JOB);
   cupsEncodeOptions2(request, num_options, options, IPP_TAG_SUBSCRIPTION);
 
@@ -1066,7 +1067,7 @@ cupsGetPPD3(http_t     *http,             /* I  - HTTP connection or @code CUPS_HTTP_DEFAUL
   */
 
   httpGetHostname(http, http_hostname, sizeof(http_hostname));
-  http_port = _httpAddrPort(http->hostaddr);
+  http_port = httpAddrPort(http->hostaddr);
 
   DEBUG_printf(("2cupsGetPPD3: Connection hostname=\"%s\", port=%d",
                 http_hostname, http_port));
@@ -1669,7 +1670,7 @@ cups_get_printer_uri(
   */
 
   httpGetHostname(http, http_hostname, sizeof(http_hostname));
-  http_port = _httpAddrPort(http->hostaddr);
+  http_port = httpAddrPort(http->hostaddr);
 
  /*
   * Build an IPP_GET_PRINTER_ATTRIBUTES request, which requires the following
@@ -1695,7 +1696,9 @@ cups_get_printer_uri(
   * Do the request and get back a response...
   */
 
-  if ((response = cupsDoRequest(http, request, "/")) != NULL)
+  snprintf(resource, resourcesize, "/printers/%s", name);
+
+  if ((response = cupsDoRequest(http, request, resource)) != NULL)
   {
     const char *device_uri = NULL;     /* device-uri value */
 
index 38bfddbebcbfbc8a63544954dc2949ee3ce33ed3..f1b02d64866616aa0315d3317c4a9a91acdf6d5d 100644 (file)
@@ -20,9 +20,9 @@
 /*
  * This header defines several constants - _CUPS_DEPRECATED,
  * _CUPS_API_1_1, _CUPS_API_1_1_19, _CUPS_API_1_1_20, _CUPS_API_1_1_21,
- * _CUPS_API_1_2, _CUPS_API_1_3, _CUPS_API_1_4, _CUPS_API_1_5, _CUPS_API_1_6 -
- * which add compiler-specific attributes that flag functions that are
- * deprecated or added in particular releases.
+ * _CUPS_API_1_2, _CUPS_API_1_3, _CUPS_API_1_4, _CUPS_API_1_5, _CUPS_API_1_6,
+ * and _CUPS_API_1_7 - which add compiler-specific attributes that flag
+ * functions that are deprecated or added in particular releases.
  *
  * On OS X, the _CUPS_API_* constants are defined based on the values of
  * the MAC_OS_X_VERSION_MIN_ALLOWED and MAC_OS_X_VERSION_MAX_ALLOWED constants
@@ -49,6 +49,9 @@
 #    ifndef AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER
 #      define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER __attribute__((unavailable))
 #    endif /* !AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER */
+#    ifndef AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER
+#      define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER __attribute__((unavailable))
+#    endif /* !AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER */
 #    define _CUPS_API_1_1_19 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
 #    define _CUPS_API_1_1_20 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
 #    define _CUPS_API_1_1_21 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
@@ -56,7 +59,8 @@
 #    define _CUPS_API_1_3 AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
 #    define _CUPS_API_1_4 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
 #    define _CUPS_API_1_5 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
-#    define _CUPS_API_1_6
+#    define _CUPS_API_1_6 AVAILABLE_MAX_OS_X_VERSION_10_8_AND_LATER
+#    define _CUPS_API_1_7 AVAILABLE_MAX_OS_X_VERSION_10_9_AND_LATER
 #  else
 #    define _CUPS_API_1_1_19
 #    define _CUPS_API_1_1_20
@@ -66,6 +70,7 @@
 #    define _CUPS_API_1_4
 #    define _CUPS_API_1_5
 #    define _CUPS_API_1_6
+#    define _CUPS_API_1_7
 #  endif /* __APPLE__ && !_CUPS_SOURCE */
 
 /*
  * a warning at compile-time.
  */
 
-#  if defined(__GNUC__) && __GNUC__ > 2 && !defined(_CUPS_SOURCE)
-#    define _CUPS_DEPRECATED __attribute__ ((__deprecated__))
+#  if defined(__GNUC__) && __GNUC__ > 2
+#    if defined(__clang__) && defined(_CUPS_NO_DEPRECATED)
+#      define _CUPS_DEPRECATED __attribute__ ((unavailable))
+#      define _CUPS_DEPRECATED_MSG(m) __attribute__ ((unavailable(m)))
+#    elif !defined(_CUPS_SOURCE) || defined(_CUPS_NO_DEPRECATED)
+#      define _CUPS_DEPRECATED __attribute__ ((deprecated))
+#      define _CUPS_DEPRECATED_MSG(m) __attribute__ ((deprecated(m)))
+#    else
+#      define _CUPS_DEPRECATED
+#      define _CUPS_DEPRECATED_MSG(m)
+#    endif /* !_CUPS_SOURCE || _CUPS_NO_DEPRECATED */
 #  else
 #    define _CUPS_DEPRECATED
-#  endif /* __GNUC__ && __GNUC__ > 2 && !_CUPS_SOURCE */
+#    define _CUPS_DEPRECATED_MSG(m)
+#  endif /* __GNUC__ && __GNUC__ > 2 */
 
 #  ifndef __GNUC__
 #    define __attribute__(x)
 #  endif /* !__GNUC__ */
 
+#
 #endif /* !_CUPS_VERSIONING_H_ */
 
 /*
index b30af9eb8c87f8fa1a223f6062f432afeb32d2ab..23d9e7f9051a94aa7e47e7bdb750ac38522d423b 100644 (file)
@@ -404,12 +404,17 @@ current thread.">cupsLastErrorString</a></li>
        <li><a href="#cupsReadResponseData" title="Read additional data after the IPP response.">cupsReadResponseData</a></li>
        <li><a href="#cupsSendRequest" title="Send an IPP request.">cupsSendRequest</a></li>
        <li><a href="#cupsWriteRequestData" title="Write additional data after an IPP request.">cupsWriteRequestData</a></li>
+       <li><a href="#httpAcceptConnection" title="Accept a new HTTP client connection from the
+specified listening socket.">httpAcceptConnection</a></li>
        <li><a href="#httpAddCredential" title="Allocates and adds a single credential to an array.">httpAddCredential</a></li>
        <li><a href="#httpAddrAny" title="Check for the &quot;any&quot; address.">httpAddrAny</a></li>
        <li><a href="#httpAddrEqual" title="Compare two addresses.">httpAddrEqual</a></li>
        <li><a href="#httpAddrLength" title="Return the length of the address in bytes.">httpAddrLength</a></li>
+       <li><a href="#httpAddrListen" title="Create a listening socket bound to the specified
+address and port.">httpAddrListen</a></li>
        <li><a href="#httpAddrLocalhost" title="Check for the local loopback address.">httpAddrLocalhost</a></li>
        <li><a href="#httpAddrLookup" title="Lookup the hostname associated with the address.">httpAddrLookup</a></li>
+       <li><a href="#httpAddrPort" title="Get the port number associated with an address.">httpAddrPort</a></li>
        <li><a href="#httpAddrString" title="Convert an address to a numeric string.">httpAddrString</a></li>
        <li><a href="#httpAssembleURI" title="Assemble a uniform resource identifier from its
 components.">httpAssembleURI</a></li>
@@ -421,6 +426,7 @@ components with a formatted resource.">httpAssembleURIf</a></li>
        <li><a href="#httpClearFields" title="Clear HTTP request fields.">httpClearFields</a></li>
        <li><a href="#httpClose" title="Close an HTTP connection.">httpClose</a></li>
        <li><a href="#httpConnect" title="Connect to a HTTP server.">httpConnect</a></li>
+       <li><a href="#httpConnect2" title="Connect to a HTTP server.">httpConnect2</a></li>
        <li><a href="#httpConnectEncrypt" title="Connect to a HTTP server using encryption.">httpConnectEncrypt</a></li>
        <li><a href="#httpCopyCredentials" title="Copy the credentials associated with an encrypted
 connection.">httpCopyCredentials</a></li>
@@ -437,10 +443,13 @@ connection.">httpCopyCredentials</a></li>
        <li><a href="#httpGet" title="Send a GET request to the server.">httpGet</a></li>
        <li><a href="#httpGetAuthString" title="Get the current authorization string.">httpGetAuthString</a></li>
        <li><a href="#httpGetBlocking" title="Get the blocking/non-block state of a connection.">httpGetBlocking</a></li>
+       <li><a href="#httpGetContentEncoding" title="Get a common content encoding, if any, between
+the client and server.">httpGetContentEncoding</a></li>
        <li><a href="#httpGetCookie" title="Get any cookie data from the response.">httpGetCookie</a></li>
        <li><a href="#httpGetDateString" title="Get a formatted date/time string from a time value.">httpGetDateString</a></li>
        <li><a href="#httpGetDateString2" title="Get a formatted date/time string from a time value.">httpGetDateString2</a></li>
        <li><a href="#httpGetDateTime" title="Get a time value from a formatted date/time string.">httpGetDateTime</a></li>
+       <li><a href="#httpGetExpect" title="Get the value of the Expect header, if any.">httpGetExpect</a></li>
        <li><a href="#httpGetFd" title="Get the file descriptor associated with a connection.">httpGetFd</a></li>
        <li><a href="#httpGetField" title="Get a field value from a request/response.">httpGetField</a></li>
        <li><a href="#httpGetHostByName" title="Lookup a hostname or IPv4 address, and return
@@ -465,10 +474,12 @@ with the server-supplied nonce value, method, and
 request-uri.">httpMD5Final</a></li>
        <li><a href="#httpMD5String" title="Convert an MD5 sum to a character string.">httpMD5String</a></li>
        <li><a href="#httpOptions" title="Send an OPTIONS request to the server.">httpOptions</a></li>
+       <li><a href="#httpPeek" title="Peek at data from a HTTP connection.">httpPeek</a></li>
        <li><a href="#httpPost" title="Send a POST request to the server.">httpPost</a></li>
        <li><a href="#httpPut" title="Send a PUT request to the server.">httpPut</a></li>
        <li><a href="#httpRead" title="Read data from a HTTP connection.">httpRead</a></li>
        <li><a href="#httpRead2" title="Read data from a HTTP connection.">httpRead2</a></li>
+       <li><a href="#httpReadRequest" title="Read a HTTP request from a connection.">httpReadRequest</a></li>
        <li><a href="#httpReconnect" title="Reconnect to a HTTP server.">httpReconnect</a></li>
        <li><a href="#httpReconnect2" title="Reconnect to a HTTP server with timeout and optional
 cancel.">httpReconnect2</a></li>
@@ -492,6 +503,7 @@ connection.">httpSetCredentials</a></li>
        <li><a href="#httpWait" title="Wait for data available on a connection.">httpWait</a></li>
        <li><a href="#httpWrite" title="Write data to a HTTP connection.">httpWrite</a></li>
        <li><a href="#httpWrite2" title="Write data to a HTTP connection.">httpWrite2</a></li>
+       <li><a href="#httpWriteResponse" title="Write a HTTP response to a client connection.">httpWriteResponse</a></li>
        <li><a href="#ippAddBoolean" title="Add a boolean attribute to an IPP message.">ippAddBoolean</a></li>
        <li><a href="#ippAddBooleans" title="Add an array of boolean values.">ippAddBooleans</a></li>
        <li><a href="#ippAddCollection" title="Add a collection value.">ippAddCollection</a></li>
@@ -507,8 +519,14 @@ connection.">httpSetCredentials</a></li>
        <li><a href="#ippAddResolutions" title="Add resolution values to an IPP message.">ippAddResolutions</a></li>
        <li><a href="#ippAddSeparator" title="Add a group separator to an IPP message.">ippAddSeparator</a></li>
        <li><a href="#ippAddString" title="Add a language-encoded string to an IPP message.">ippAddString</a></li>
+       <li><a href="#ippAddStringf" title="Add a formatted string to an IPP message.">ippAddStringf</a></li>
+       <li><a href="#ippAddStringfv" title="Add a formatted string to an IPP message.">ippAddStringfv</a></li>
        <li><a href="#ippAddStrings" title="Add language-encoded strings to an IPP message.">ippAddStrings</a></li>
        <li><a href="#ippAttributeString" title="Convert the attribute's value to a string.">ippAttributeString</a></li>
+       <li><a href="#ippContainsInteger" title="Determine whether an attribute contains the
+specified value or is within the list of ranges.">ippContainsInteger</a></li>
+       <li><a href="#ippContainsString" title="Determine whether an attribute contains the
+specified string value.">ippContainsString</a></li>
        <li><a href="#ippCopyAttribute" title="Copy an attribute.">ippCopyAttribute</a></li>
        <li><a href="#ippCopyAttributes" title="Copy attributes from one IPP message to another.">ippCopyAttributes</a></li>
        <li><a href="#ippDateToTime" title="Convert from RFC 1903 Date/Time format to UNIX time
@@ -542,6 +560,7 @@ in seconds.">ippDateToTime</a></li>
        <li><a href="#ippLength" title="Compute the length of an IPP message.">ippLength</a></li>
        <li><a href="#ippNew" title="Allocate a new IPP message.">ippNew</a></li>
        <li><a href="#ippNewRequest" title="Allocate a new IPP request message.">ippNewRequest</a></li>
+       <li><a href="#ippNewResponse" title="Allocate a new IPP response message.">ippNewResponse</a></li>
        <li><a href="#ippNextAttribute" title="Return the next attribute in the message.">ippNextAttribute</a></li>
        <li><a href="#ippOpString" title="Return a name for the given operation id.">ippOpString</a></li>
        <li><a href="#ippOpValue" title="Return an operation id for the given name.">ippOpValue</a></li>
@@ -563,6 +582,8 @@ in seconds.">ippDateToTime</a></li>
        <li><a href="#ippSetState" title="Set the current state of the IPP message.">ippSetState</a></li>
        <li><a href="#ippSetStatusCode" title="Set the status code in an IPP response or event message.">ippSetStatusCode</a></li>
        <li><a href="#ippSetString" title="Set a string value in an attribute.">ippSetString</a></li>
+       <li><a href="#ippSetStringf" title="Set a formatted string value of an attribute.">ippSetStringf</a></li>
+       <li><a href="#ippSetStringfv" title="Set a formatted string value of an attribute.">ippSetStringfv</a></li>
        <li><a href="#ippSetValueTag" title="Set the value tag of an attribute.">ippSetValueTag</a></li>
        <li><a href="#ippSetVersion" title="Set the version number in an IPP message.">ippSetVersion</a></li>
        <li><a href="#ippTagString" title="Return the tag name corresponding to a tag value.">ippTagString</a></li>
@@ -590,7 +611,6 @@ with a hostname. ">http_addrlist_t</a></li>
        <li><a href="#http_keepalive_t" title="HTTP keep-alive values">http_keepalive_t</a></li>
        <li><a href="#http_state_t" title="HTTP state values; states
 are server-oriented...">http_state_t</a></li>
-       <li><a href="#http_status_t" title="HTTP status codes">http_status_t</a></li>
        <li><a href="#http_t" title="HTTP connection type">http_t</a></li>
        <li><a href="#http_timeout_cb_t" title="HTTP timeout callback ">http_timeout_cb_t</a></li>
        <li><a href="#http_uri_coding_t" title="URI en/decode flags">http_uri_coding_t</a></li>
@@ -601,7 +621,7 @@ are server-oriented...">http_state_t</a></li>
 Please use the new accessor functions available in CUPS 1.6 and later, as
 these definitions will be moved to a private header file in a future release.">ipp_copycb_t</a></li>
        <li><a href="#ipp_dstate_t" title="Document states">ipp_dstate_t</a></li>
-       <li><a href="#ipp_finish_t" title="Finishings">ipp_finish_t</a></li>
+       <li><a href="#ipp_finish_t" title="Job collation types">ipp_finish_t</a></li>
        <li><a href="#ipp_iocb_t" title="IPP IO Callback Function ">ipp_iocb_t</a></li>
        <li><a href="#ipp_jcollate_t" title="Job collation types">ipp_jcollate_t</a></li>
        <li><a href="#ipp_orient_t" title="Orientation values">ipp_orient_t</a></li>
@@ -634,7 +654,7 @@ are server-oriented...">http_state_e</a></li>
        <li><a href="#http_uri_status_e" title="URI separation status ">http_uri_status_e</a></li>
        <li><a href="#http_version_e" title="HTTP version numbers">http_version_e</a></li>
        <li><a href="#ipp_dstate_e" title="Document states">ipp_dstate_e</a></li>
-       <li><a href="#ipp_finish_e" title="Finishings">ipp_finish_e</a></li>
+       <li><a href="#ipp_finishings_e" title="Finishings">ipp_finishings_e</a></li>
        <li><a href="#ipp_jcollate_e" title="Job collation types">ipp_jcollate_e</a></li>
        <li><a href="#ipp_jstate_e" title="Job states">ipp_jstate_e</a></li>
        <li><a href="#ipp_op_e" title="IPP operations">ipp_op_e</a></li>
@@ -1160,7 +1180,7 @@ the request respectively.
 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.20/OS X 10.4&nbsp;</span><a name="cupsGetFd">cupsGetFd</a></h3>
 <p class="description">Get a file from the server.</p>
 <p class="code">
-<a href="#http_status_t">http_status_t</a> cupsGetFd (<br>
+http_status_t cupsGetFd (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *resource,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int fd<br>
@@ -1183,7 +1203,7 @@ the request respectively.
 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.20/OS X 10.4&nbsp;</span><a name="cupsGetFile">cupsGetFile</a></h3>
 <p class="description">Get a file from the server.</p>
 <p class="code">
-<a href="#http_status_t">http_status_t</a> cupsGetFile (<br>
+http_status_t cupsGetFile (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *resource,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *filename<br>
@@ -1243,7 +1263,7 @@ const char *cupsLastErrorString (void);</p>
 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.20/OS X 10.4&nbsp;</span><a name="cupsPutFd">cupsPutFd</a></h3>
 <p class="description">Put a file on the server.</p>
 <p class="code">
-<a href="#http_status_t">http_status_t</a> cupsPutFd (<br>
+http_status_t cupsPutFd (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *resource,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int fd<br>
@@ -1267,7 +1287,7 @@ successfully.
 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.20/OS X 10.4&nbsp;</span><a name="cupsPutFile">cupsPutFile</a></h3>
 <p class="description">Put a file on the server.</p>
 <p class="code">
-<a href="#http_status_t">http_status_t</a> cupsPutFile (<br>
+http_status_t cupsPutFile (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *resource,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *filename<br>
@@ -1316,7 +1336,7 @@ respectively.
 <h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="cupsSendRequest">cupsSendRequest</a></h3>
 <p class="description">Send an IPP request.</p>
 <p class="code">
-<a href="#http_status_t">http_status_t</a> cupsSendRequest (<br>
+http_status_t cupsSendRequest (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *request,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *resource,<br>
@@ -1352,7 +1372,7 @@ Note: Unlike <a href="#cupsDoFileRequest"><code>cupsDoFileRequest</code></a>, <a
 <h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="cupsWriteRequestData">cupsWriteRequestData</a></h3>
 <p class="description">Write additional data after an IPP request.</p>
 <p class="code">
-<a href="#http_status_t">http_status_t</a> cupsWriteRequestData (<br>
+http_status_t cupsWriteRequestData (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *buffer,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;size_t length<br>
@@ -1373,6 +1393,24 @@ Note: Unlike <a href="#cupsDoFileRequest"><code>cupsDoFileRequest</code></a>, <a
 after <a href="#cupsStartDocument"><code>cupsStartDocument</code></a> to provide a document file.
 
 </p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7&nbsp;</span><a name="httpAcceptConnection">httpAcceptConnection</a></h3>
+<p class="description">Accept a new HTTP client connection from the
+specified listening socket.</p>
+<p class="code">
+<a href="#http_t">http_t</a> *httpAcceptConnection (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;int fd,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;int blocking<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>fd</dt>
+<dd class="description">Listen socket file descriptor</dd>
+<dt>blocking</dt>
+<dd class="description">1 if the connection should be
+blocking, 0 otherwise</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">HTTP connection or <code>NULL</code></p>
 <h3 class="function"><span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span><a name="httpAddCredential">httpAddCredential</a></h3>
 <p class="description">Allocates and adds a single credential to an array.</p>
 <p class="code">
@@ -1438,6 +1476,23 @@ int httpAddrLength (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Length in bytes</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7&nbsp;</span><a name="httpAddrListen">httpAddrListen</a></h3>
+<p class="description">Create a listening socket bound to the specified
+address and port.</p>
+<p class="code">
+int httpAddrListen (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_addr_t">http_addr_t</a> *addr,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;int port<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>addr</dt>
+<dd class="description">Address to bind to</dd>
+<dt>port</dt>
+<dd class="description">Port number to bind to</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Socket or -1 on error</p>
 <h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpAddrLocalhost">httpAddrLocalhost</a></h3>
 <p class="description">Check for the local loopback address.</p>
 <p class="code">
@@ -1470,6 +1525,19 @@ char *httpAddrLookup (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Host name</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7&nbsp;</span><a name="httpAddrPort">httpAddrPort</a></h3>
+<p class="description">Get the port number associated with an address.</p>
+<p class="code">
+int httpAddrPort (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_addr_t">http_addr_t</a> *addr<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>addr</dt>
+<dd class="description">Address</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Port number</p>
 <h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpAddrString">httpAddrString</a></h3>
 <p class="description">Convert an address to a numeric string.</p>
 <p class="code">
@@ -1654,10 +1722,44 @@ void httpClose (<br>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New HTTP connection</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">This function is deprecated - use <a href="#httpConnectEncrypt"><code>httpConnectEncrypt</code></a> instead.
+<p class="discussion">This function is deprecated - use <a href="#httpConnect2"><code>httpConnect2</code></a> instead.
 
 </p>
-<h3 class="function"><a name="httpConnectEncrypt">httpConnectEncrypt</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7&nbsp;</span><a name="httpConnect2">httpConnect2</a></h3>
+<p class="description">Connect to a HTTP server.</p>
+<p class="code">
+<a href="#http_t">http_t</a> *httpConnect2 (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *host,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;int port,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_addrlist_t">http_addrlist_t</a> *addrlist,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;int family,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_encryption_t">http_encryption_t</a> encryption,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;int blocking,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;int msec,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;int *cancel<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>host</dt>
+<dd class="description">Host to connect to</dd>
+<dt>port</dt>
+<dd class="description">Port number</dd>
+<dt>addrlist</dt>
+<dd class="description">List of addresses or NULL to lookup</dd>
+<dt>family</dt>
+<dd class="description">Address family to use or <code>AF_UNSPEC</code> for any</dd>
+<dt>encryption</dt>
+<dd class="description">Type of encryption to use</dd>
+<dt>blocking</dt>
+<dd class="description">1 for blocking connection, 0 for non-blocking</dd>
+<dt>msec</dt>
+<dd class="description">Connection timeout in milliseconds</dd>
+<dt>cancel</dt>
+<dd class="description">Pointer to &quot;cancel&quot; variable</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">New HTTP connection</p>
+<h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="httpConnectEncrypt">httpConnectEncrypt</a></h3>
 <p class="description">Connect to a HTTP server using encryption.</p>
 <p class="code">
 <a href="#http_t">http_t</a> *httpConnectEncrypt (<br>
@@ -1676,6 +1778,11 @@ void httpClose (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New HTTP connection</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function is now deprecated. Please use the <a href="#httpConnect2"><code>httpConnect2</code></a> function
+instead.
+
+</p>
 <h3 class="function"><span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span><a name="httpCopyCredentials">httpCopyCredentials</a></h3>
 <p class="description">Copy the credentials associated with an encrypted
 connection.</p>
@@ -1905,6 +2012,29 @@ int httpGetBlocking (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">1 if blocking, 0 if non-blocking</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7&nbsp;</span><a name="httpGetContentEncoding">httpGetContentEncoding</a></h3>
+<p class="description">Get a common content encoding, if any, between
+the client and server.</p>
+<p class="code">
+const char *httpGetContentEncoding (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">Connection to client/server</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Content-Coding value or
+<code>NULL</code> for the identity
+coding.</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function uses the value of the Accepts-Encoding HTTP header and must be
+called after receiving a response from the server or a request from the
+client.  The value returned can be use in subsequent requests (for clients)
+or in the response (for servers) in order to compress the content stream.
+
+</p>
 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span><a name="httpGetCookie">httpGetCookie</a></h3>
 <p class="description">Get any cookie data from the response.</p>
 <p class="code">
@@ -1963,6 +2093,24 @@ time_t httpGetDateTime (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">UNIX time</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7&nbsp;</span><a name="httpGetExpect">httpGetExpect</a></h3>
+<p class="description">Get the value of the Expect header, if any.</p>
+<p class="code">
+http_status_t httpGetExpect (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">Connection to client</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Expect: status, if any</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">Returns <code>HTTP_STATUS_NONE</code> if there is no Expect header, otherwise
+returns the expected HTTP status code, typically <code>HTTP_STATUS_CONTINUE</code>.
+
+</p>
 <h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpGetFd">httpGetFd</a></h3>
 <p class="description">Get the file descriptor associated with a connection.</p>
 <p class="code">
@@ -2086,7 +2234,7 @@ content larger than 2^31 - 1.
 <h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpGetStatus">httpGetStatus</a></h3>
 <p class="description">Get the status of the last HTTP request.</p>
 <p class="code">
-<a href="#http_status_t">http_status_t</a> httpGetStatus (<br>
+http_status_t httpGetStatus (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
 );</p>
 <h4 class="parameters">Parameters</h4>
@@ -2274,6 +2422,33 @@ int httpOptions (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Status of call (0 = success)</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7&nbsp;</span><a name="httpPeek">httpPeek</a></h3>
+<p class="description">Peek at data from a HTTP connection.</p>
+<p class="code">
+ssize_t httpPeek (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;char *buffer,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;size_t length<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">Connection to server</dd>
+<dt>buffer</dt>
+<dd class="description">Buffer for data</dd>
+<dt>length</dt>
+<dd class="description">Maximum number of bytes</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Number of bytes copied</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function copies available data from the given HTTP connection, reading
+a buffer as needed.  The data is still available for reading using
+<a href="#httpRead"><code>httpRead</code></a> or <a href="#httpRead2"><code>httpRead2</code></a>.<br>
+<br>
+For non-blocking connections the usual timeouts apply.
+
+</p>
 <h3 class="function"><a name="httpPost">httpPost</a></h3>
 <p class="description">Send a POST request to the server.</p>
 <p class="code">
@@ -2349,7 +2524,26 @@ ssize_t httpRead2 (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Number of bytes read</p>
-<h3 class="function"><a name="httpReconnect">httpReconnect</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7&nbsp;</span><a name="httpReadRequest">httpReadRequest</a></h3>
+<p class="description">Read a HTTP request from a connection.</p>
+<p class="code">
+<a href="#http_state_t">http_state_t</a> httpReadRequest (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;char *uri,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;size_t urilen<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+<dt>uri</dt>
+<dd class="description">URI buffer</dd>
+<dt>urilen</dt>
+<dd class="description">Size of URI buffer</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">New state of connection</p>
+<h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="httpReconnect">httpReconnect</a></h3>
 <p class="description">Reconnect to a HTTP server.</p>
 <p class="code">
 int httpReconnect (<br>
@@ -2362,6 +2556,11 @@ int httpReconnect (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">0 on success, non-zero on failure</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function is deprecated. Please use the <a href="#httpReconnect2"><code>httpReconnect2</code></a> function
+instead.
+
+</p>
 <h3 class="function"><a name="httpReconnect2">httpReconnect2</a></h3>
 <p class="description">Reconnect to a HTTP server with timeout and optional
 cancel.</p>
@@ -2561,17 +2760,19 @@ int httpSetCredentials (<br>
 <p class="code">
 void httpSetExpect (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_status_t">http_status_t</a> expect<br>
+&nbsp;&nbsp;&nbsp;&nbsp;http_status_t expect<br>
 );</p>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
 <dd class="description">Connection to server</dd>
 <dt>expect</dt>
-<dd class="description">HTTP status to expect (HTTP_CONTINUE)</dd>
+<dd class="description">HTTP status to expect
+(<code>HTTP_CONTINUE</code>)</dd>
 </dl>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">Currently only HTTP_CONTINUE is supported for the &quot;expect&quot; argument.
+<p class="discussion">Currently only <code>HTTP_STATUS_CONTINUE</code> is supported for the &quot;expect&quot;
+argument.
 
 </p>
 <h3 class="function"><a name="httpSetField">httpSetField</a></h3>
@@ -2635,7 +2836,7 @@ data pointer and must return 1 to continue or 0 to error (time) out.
 <p class="description">Return a short string describing a HTTP status code.</p>
 <p class="code">
 const char *httpStatus (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_status_t">http_status_t</a> status<br>
+&nbsp;&nbsp;&nbsp;&nbsp;http_status_t status<br>
 );</p>
 <h4 class="parameters">Parameters</h4>
 <dl>
@@ -2666,7 +2867,7 @@ int httpTrace (<br>
 <h3 class="function"><a name="httpUpdate">httpUpdate</a></h3>
 <p class="description">Update the current HTTP state for incoming data.</p>
 <p class="code">
-<a href="#http_status_t">http_status_t</a> httpUpdate (<br>
+http_status_t httpUpdate (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
 );</p>
 <h4 class="parameters">Parameters</h4>
@@ -2735,6 +2936,22 @@ ssize_t httpWrite2 (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Number of bytes written</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7&nbsp;</span><a name="httpWriteResponse">httpWriteResponse</a></h3>
+<p class="description">Write a HTTP response to a client connection.</p>
+<p class="code">
+int httpWriteResponse (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;http_status_t status<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+<dt>status</dt>
+<dd class="description">Status code</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">0 on success, -1 on error</p>
 <h3 class="function"><a name="ippAddBoolean">ippAddBoolean</a></h3>
 <p class="description">Add a boolean attribute to an IPP message.</p>
 <p class="code">
@@ -2758,8 +2975,8 @@ ssize_t httpWrite2 (<br>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New attribute</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using the
-<a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>group</code> parameter specifies the IPP attribute group tag: none
 (<code>IPP_TAG_ZERO</code>, for member attributes), document (<code>IPP_TAG_DOCUMENT</code>),
@@ -2792,8 +3009,8 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New attribute</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using the
-<a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>group</code> parameter specifies the IPP attribute group tag: none
 (<code>IPP_TAG_ZERO</code>, for member attributes), document (<code>IPP_TAG_DOCUMENT</code>),
@@ -2823,8 +3040,8 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New attribute</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using the
-<a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>group</code> parameter specifies the IPP attribute group tag: none
 (<code>IPP_TAG_ZERO</code>, for member attributes), document (<code>IPP_TAG_DOCUMENT</code>),
@@ -2859,8 +3076,8 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New attribute</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using the
-<a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>group</code> parameter specifies the IPP attribute group tag: none
 (<code>IPP_TAG_ZERO</code>, for member attributes), document (<code>IPP_TAG_DOCUMENT</code>),
@@ -2892,8 +3109,8 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New attribute</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using the
-<a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>group</code> parameter specifies the IPP attribute group tag: none
 (<code>IPP_TAG_ZERO</code>, for member attributes), document (<code>IPP_TAG_DOCUMENT</code>),
@@ -2926,8 +3143,8 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New attribute</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using the
-<a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>group</code> parameter specifies the IPP attribute group tag: none
 (<code>IPP_TAG_ZERO</code>, for member attributes), document (<code>IPP_TAG_DOCUMENT</code>),
@@ -2966,8 +3183,8 @@ Supported values include enum (<code>IPP_TAG_ENUM</code>) and integer
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New attribute</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using the
-<a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>group</code> parameter specifies the IPP attribute group tag: none
 (<code>IPP_TAG_ZERO</code>, for member attributes), document (<code>IPP_TAG_DOCUMENT</code>),
@@ -3003,8 +3220,8 @@ Supported values include enum (<code>IPP_TAG_ENUM</code>) and integer
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New attribute</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using the
-<a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>group</code> parameter specifies the IPP attribute group tag: none
 (<code>IPP_TAG_ZERO</code>, for member attributes), document (<code>IPP_TAG_DOCUMENT</code>),
@@ -3036,8 +3253,8 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New attribute</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using the
-<a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>group</code> parameter specifies the IPP attribute group tag: none
 (<code>IPP_TAG_ZERO</code>, for member attributes), document (<code>IPP_TAG_DOCUMENT</code>),
@@ -3078,8 +3295,8 @@ admin-define (<code>IPP_TAG_ADMINDEFINE</code>).
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New attribute</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using the
-<a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>group</code> parameter specifies the IPP attribute group tag: none
 (<code>IPP_TAG_ZERO</code>, for member attributes), document (<code>IPP_TAG_DOCUMENT</code>),
@@ -3117,8 +3334,8 @@ The <code>lower</code> parameter must be less than or equal to the <code>upper</
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New attribute</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using the
-<a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>group</code> parameter specifies the IPP attribute group tag: none
 (<code>IPP_TAG_ZERO</code>, for member attributes), document (<code>IPP_TAG_DOCUMENT</code>),
@@ -3154,8 +3371,8 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New attribute</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using the
-<a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>group</code> parameter specifies the IPP attribute group tag: none
 (<code>IPP_TAG_ZERO</code>, for member attributes), document (<code>IPP_TAG_DOCUMENT</code>),
@@ -3194,8 +3411,8 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New attribute</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using the
-<a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>group</code> parameter specifies the IPP attribute group tag: none
 (<code>IPP_TAG_ZERO</code>, for member attributes), document (<code>IPP_TAG_DOCUMENT</code>),
@@ -3216,8 +3433,8 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New attribute</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using the
-<a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.</p>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.</p>
 <h3 class="function"><a name="ippAddString">ippAddString</a></h3>
 <p class="description">Add a language-encoded string to an IPP message.</p>
 <p class="code">
@@ -3247,8 +3464,8 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New attribute</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using the
-<a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>group</code> parameter specifies the IPP attribute group tag: none
 (<code>IPP_TAG_ZERO</code>, for member attributes), document (<code>IPP_TAG_DOCUMENT</code>),
@@ -3265,6 +3482,124 @@ Supported string values include charset (<code>IPP_TAG_CHARSET</code>), keyword
 <br>
 The <code>language</code> parameter must be non-<code>NULL</code> for nameWithLanguage and
 textWithLanguage string values and must be <code>NULL</code> for all other string values.</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7&nbsp;</span><a name="ippAddStringf">ippAddStringf</a></h3>
+<p class="description">Add a formatted string to an IPP message.</p>
+<p class="code">
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddStringf (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t group,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t value_tag,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *language,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *format,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;...<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>ipp</dt>
+<dd class="description">IPP message</dd>
+<dt>group</dt>
+<dd class="description">IPP group</dd>
+<dt>value_tag</dt>
+<dd class="description">Type of attribute</dd>
+<dt>name</dt>
+<dd class="description">Name of attribute</dd>
+<dt>language</dt>
+<dd class="description">Language code (<code>NULL</code> for default)</dd>
+<dt>format</dt>
+<dd class="description">Printf-style format string</dd>
+<dt>...</dt>
+<dd class="description">Additional arguments as needed</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">New attribute</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
+<br>
+The <code>group</code> parameter specifies the IPP attribute group tag: none
+(<code>IPP_TAG_ZERO</code>, for member attributes), document
+(<code>IPP_TAG_DOCUMENT</code>), event notification
+(<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation (<code>IPP_TAG_OPERATION</code>),
+printer (<code>IPP_TAG_PRINTER</code>), subscription (<code>IPP_TAG_SUBSCRIPTION</code>),
+or unsupported (<code>IPP_TAG_UNSUPPORTED_GROUP</code>).<br>
+<br>
+Supported string values include charset (<code>IPP_TAG_CHARSET</code>), keyword
+(<code>IPP_TAG_KEYWORD</code>), language (<code>IPP_TAG_LANGUAGE</code>), mimeMediaType
+(<code>IPP_TAG_MIMETYPE</code>), name (<code>IPP_TAG_NAME</code>), nameWithLanguage
+(<code>IPP_TAG_NAMELANG), text (</code>code IPP_TAG_TEXT@), textWithLanguage
+(<code>IPP_TAG_TEXTLANG</code>), uri (<code>IPP_TAG_URI</code>), and uriScheme
+(<code>IPP_TAG_URISCHEME</code>).<br>
+<br>
+The <code>language</code> parameter must be non-<code>NULL</code> for nameWithLanguage
+and textWithLanguage string values and must be <code>NULL</code> for all other
+string values.<br>
+<br>
+The <code>format</code> parameter uses formatting characters compatible with the
+printf family of standard functions.  Additional arguments follow it as
+needed.  The formatted string is truncated as needed to the maximum length of
+the corresponding value type.
+
+</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7&nbsp;</span><a name="ippAddStringfv">ippAddStringfv</a></h3>
+<p class="description">Add a formatted string to an IPP message.</p>
+<p class="code">
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddStringfv (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t group,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t value_tag,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *language,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *format,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;va_list ap<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>ipp</dt>
+<dd class="description">IPP message</dd>
+<dt>group</dt>
+<dd class="description">IPP group</dd>
+<dt>value_tag</dt>
+<dd class="description">Type of attribute</dd>
+<dt>name</dt>
+<dd class="description">Name of attribute</dd>
+<dt>language</dt>
+<dd class="description">Language code (<code>NULL</code> for default)</dd>
+<dt>format</dt>
+<dd class="description">Printf-style format string</dd>
+<dt>ap</dt>
+<dd class="description">Additional arguments</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">New attribute</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
+<br>
+The <code>group</code> parameter specifies the IPP attribute group tag: none
+(<code>IPP_TAG_ZERO</code>, for member attributes), document
+(<code>IPP_TAG_DOCUMENT</code>), event notification
+(<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation (<code>IPP_TAG_OPERATION</code>),
+printer (<code>IPP_TAG_PRINTER</code>), subscription (<code>IPP_TAG_SUBSCRIPTION</code>),
+or unsupported (<code>IPP_TAG_UNSUPPORTED_GROUP</code>).<br>
+<br>
+Supported string values include charset (<code>IPP_TAG_CHARSET</code>), keyword
+(<code>IPP_TAG_KEYWORD</code>), language (<code>IPP_TAG_LANGUAGE</code>), mimeMediaType
+(<code>IPP_TAG_MIMETYPE</code>), name (<code>IPP_TAG_NAME</code>), nameWithLanguage
+(<code>IPP_TAG_NAMELANG), text (</code>code IPP_TAG_TEXT@), textWithLanguage
+(<code>IPP_TAG_TEXTLANG</code>), uri (<code>IPP_TAG_URI</code>), and uriScheme
+(<code>IPP_TAG_URISCHEME</code>).<br>
+<br>
+The <code>language</code> parameter must be non-<code>NULL</code> for nameWithLanguage
+and textWithLanguage string values and must be <code>NULL</code> for all other
+string values.<br>
+<br>
+The <code>format</code> parameter uses formatting characters compatible with the
+printf family of standard functions.  Additional arguments are passed in the
+stdarg pointer <code>ap</code>.  The formatted string is truncated as needed to the
+maximum length of the corresponding value type.
+
+</p>
 <h3 class="function"><a name="ippAddStrings">ippAddStrings</a></h3>
 <p class="description">Add language-encoded strings to an IPP message.</p>
 <p class="code">
@@ -3297,8 +3632,8 @@ textWithLanguage string values and must be <code>NULL</code> for all other strin
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New attribute</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using the
-<a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>group</code> parameter specifies the IPP attribute group tag: none
 (<code>IPP_TAG_ZERO</code>, for member attributes), document (<code>IPP_TAG_DOCUMENT</code>),
@@ -3339,6 +3674,51 @@ size_t ippAttributeString (<br>
 trailing nul. The buffer pointer can be NULL to get the required length,
 just like (v)snprintf.
 
+</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7&nbsp;</span><a name="ippContainsInteger">ippContainsInteger</a></h3>
+<p class="description">Determine whether an attribute contains the
+specified value or is within the list of ranges.</p>
+<p class="code">
+int ippContainsInteger (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;int value<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>attr</dt>
+<dd class="description">Attribute</dd>
+<dt>value</dt>
+<dd class="description">Integer/enum value</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">1 on a match, 0 on no match</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">Returns non-zero when the attribute contains either a matching integer or
+enum value, or the value falls within one of the rangeOfInteger values for
+the attribute.
+
+</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7&nbsp;</span><a name="ippContainsString">ippContainsString</a></h3>
+<p class="description">Determine whether an attribute contains the
+specified string value.</p>
+<p class="code">
+int ippContainsString (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *value<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>attr</dt>
+<dd class="description">Attribute</dd>
+<dt>value</dt>
+<dd class="description">String value</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">1 on a match, 0 on no match</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">Returns non-zero when the attribute contains a matching charset, keyword,
+language, mimeMediaType, name, text, URI, or URI scheme value.
+
 </p>
 <h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippCopyAttribute">ippCopyAttribute</a></h3>
 <p class="description">Copy an attribute.</p>
@@ -3897,6 +4277,28 @@ size_t ippLength (<br>
 attributes-natural-language attributes added. The
 attributes-natural-language value is derived from the current locale.
 
+</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7&nbsp;</span><a name="ippNewResponse">ippNewResponse</a></h3>
+<p class="description">Allocate a new IPP response message.</p>
+<p class="code">
+<a href="#ipp_t">ipp_t</a> *ippNewResponse (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *request<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>request</dt>
+<dd class="description">IPP request message</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">IPP response message</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The new response message is initialized with the same version-number,
+request-id, attributes-charset, and attributes-natural-language as the
+provided request message.  If the attributes-charset or
+attributes-natural-language attributes are missing from the request,
+&quot;utf-8&quot; and a value derived from the current locale are substituted,
+respectively.
+
 </p>
 <h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippNextAttribute">ippNextAttribute</a></h3>
 <p class="description">Return the next attribute in the message.</p>
@@ -4023,8 +4425,8 @@ int ippSetBoolean (<br>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">1 on success, 0 on failure</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to the IPP message containing the attribute that was
-previously created using the <a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>attr</code> parameter may be modified as a result of setting the value.<br>
 <br>
@@ -4055,8 +4457,8 @@ int ippSetCollection (<br>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">1 on success, 0 on failure</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to the IPP message containing the attribute that was
-previously created using the <a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>attr</code> parameter may be modified as a result of setting the value.<br>
 <br>
@@ -4087,8 +4489,8 @@ int ippSetDate (<br>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">1 on success, 0 on failure</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to the IPP message containing the attribute that was
-previously created using the <a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>attr</code> parameter may be modified as a result of setting the value.<br>
 <br>
@@ -4116,8 +4518,8 @@ int ippSetGroupTag (<br>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">1 on success, 0 on failure</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to the IPP message containing the attribute that was
-previously created using the <a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>attr</code> parameter may be modified as a result of setting the value.<br>
 <br>
@@ -4151,8 +4553,8 @@ int ippSetInteger (<br>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">1 on success, 0 on failure</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to the IPP message containing the attribute that was
-previously created using the <a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>attr</code> parameter may be modified as a result of setting the value.<br>
 <br>
@@ -4180,8 +4582,8 @@ int ippSetName (<br>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">1 on success, 0 on failure</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to the IPP message containing the attribute that was
-previously created using the <a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>attr</code> parameter may be modified as a result of setting the value.
 
@@ -4203,8 +4605,8 @@ int ippSetOperation (<br>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">1 on success, 0 on failure</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using the
-<a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.
 
 </p>
 <h3 class="function"><a name="ippSetPort">ippSetPort</a></h3>
@@ -4244,8 +4646,8 @@ int ippSetRange (<br>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">1 on success, 0 on failure</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to the IPP message containing the attribute that was
-previously created using the <a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>attr</code> parameter may be modified as a result of setting the value.<br>
 <br>
@@ -4270,8 +4672,8 @@ int ippSetRequestId (<br>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">1 on success, 0 on failure</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using the
-<a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>request_id</code> parameter must be greater than 0.
 
@@ -4305,8 +4707,8 @@ int ippSetResolution (<br>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">1 on success, 0 on failure</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to the IPP message containing the attribute that was
-previously created using the <a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>attr</code> parameter may be modified as a result of setting the value.<br>
 <br>
@@ -4347,8 +4749,8 @@ int ippSetStatusCode (<br>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">1 on success, 0 on failure</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using the
-<a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.
 
 </p>
 <h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippSetString">ippSetString</a></h3>
@@ -4374,14 +4776,94 @@ int ippSetString (<br>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">1 on success, 0 on failure</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to the IPP message containing the attribute that was
-previously created using the <a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>attr</code> parameter may be modified as a result of setting the value.<br>
 <br>
 The <code>element</code> parameter specifies which value to set from 0 to
 <a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a>.
 
+</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7&nbsp;</span><a name="ippSetStringf">ippSetStringf</a></h3>
+<p class="description">Set a formatted string value of an attribute.</p>
+<p class="code">
+int ippSetStringf (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_attribute_t">ipp_attribute_t</a> **attr,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;int element,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *format,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;...<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>ipp</dt>
+<dd class="description">IPP message</dd>
+<dt>attr</dt>
+<dd class="description">IPP attribute</dd>
+<dt>element</dt>
+<dd class="description">Value number (0-based)</dd>
+<dt>format</dt>
+<dd class="description">Printf-style format string</dd>
+<dt>...</dt>
+<dd class="description">Additional arguments as needed</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">1 on success, 0 on failure</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
+<br>
+The <code>attr</code> parameter may be modified as a result of setting the value.<br>
+<br>
+The <code>element</code> parameter specifies which value to set from 0 to
+<a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a>.<br>
+<br>
+The <code>format</code> parameter uses formatting characters compatible with the
+printf family of standard functions.  Additional arguments follow it as
+needed.  The formatted string is truncated as needed to the maximum length of
+the corresponding value type.
+
+</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7&nbsp;</span><a name="ippSetStringfv">ippSetStringfv</a></h3>
+<p class="description">Set a formatted string value of an attribute.</p>
+<p class="code">
+int ippSetStringfv (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_attribute_t">ipp_attribute_t</a> **attr,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;int element,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *format,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;va_list ap<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>ipp</dt>
+<dd class="description">IPP message</dd>
+<dt>attr</dt>
+<dd class="description">IPP attribute</dd>
+<dt>element</dt>
+<dd class="description">Value number (0-based)</dd>
+<dt>format</dt>
+<dd class="description">Printf-style format string</dd>
+<dt>ap</dt>
+<dd class="description">Pointer to additional arguments</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">1 on success, 0 on failure</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
+<br>
+The <code>attr</code> parameter may be modified as a result of setting the value.<br>
+<br>
+The <code>element</code> parameter specifies which value to set from 0 to
+<a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a>.<br>
+<br>
+The <code>format</code> parameter uses formatting characters compatible with the
+printf family of standard functions.  Additional arguments follow it as
+needed.  The formatted string is truncated as needed to the maximum length of
+the corresponding value type.
+
 </p>
 <h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippSetValueTag">ippSetValueTag</a></h3>
 <p class="description">Set the value tag of an attribute.</p>
@@ -4403,8 +4885,8 @@ int ippSetValueTag (<br>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">1 on success, 0 on failure</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to the IPP message containing the attribute that was
-previously created using the <a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The <code>attr</code> parameter may be modified as a result of setting the value.<br>
 <br>
@@ -4441,8 +4923,8 @@ int ippSetVersion (<br>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">1 on success, 0 on failure</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using the
-<a href="#ippNew"><code>ippNew</code></a> or <a href="#ippNewRequest"><code>ippNewRequest</code></a> functions.<br>
+<p class="discussion">The <code>ipp</code> parameter refers to an IPP message previously created using
+the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.<br>
 <br>
 The valid version numbers are currently 1.0, 1.1, 2.0, 2.1, and 2.2.
 
@@ -4607,12 +5089,7 @@ typedef enum <a href="#http_keepalive_e">http_keepalive_e</a> http_keepalive_t;
 <p class="description">HTTP state values; states
 are server-oriented...</p>
 <p class="code">
-typedef enum <a href="#http_state_e">http_state_e</a> / http_state_t;
-</p>
-<h3 class="typedef"><a name="http_status_t">http_status_t</a></h3>
-<p class="description">HTTP status codes</p>
-<p class="code">
-typedef enum <a href="#http_status_e">http_status_e</a> http_status_t;
+typedef enum <a href="#http_state_e">http_state_e</a> http_state_t;
 </p>
 <h3 class="typedef"><a name="http_t">http_t</a></h3>
 <p class="description">HTTP connection type</p>
@@ -4657,9 +5134,9 @@ typedef int (*ipp_copycb_t)(void *context, <a href="#ipp_t">ipp_t</a> *dst, <a h
 typedef enum <a href="#ipp_dstate_e">ipp_dstate_e</a> ipp_dstate_t;
 </p>
 <h3 class="typedef"><a name="ipp_finish_t">ipp_finish_t</a></h3>
-<p class="description">Finishings</p>
+<p class="description">Job collation types</p>
 <p class="code">
-typedef enum <a href="#ipp_finish_e">ipp_finish_e</a> ipp_finish_t;
+typedef enum <a href="#ipp_finishings_e">ipp_finishings_e</a> ipp_finish_t;
 </p>
 <h3 class="typedef"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ipp_iocb_t">ipp_iocb_t</a></h3>
 <p class="description">IPP IO Callback Function </p>
@@ -4790,34 +5267,38 @@ with a hostname. </p>
 <p class="description">HTTP transfer encoding values</p>
 <h4 class="constants">Constants</h4>
 <dl>
-<dt>HTTP_ENCODE_CHUNKED </dt>
+<dt>HTTP_ENCODING_CHUNKED </dt>
 <dd class="description">Data is chunked</dd>
-<dt>HTTP_ENCODE_FIELDS </dt>
+<dt>HTTP_ENCODING_FIELDS </dt>
 <dd class="description">Sending HTTP fields</dd>
-<dt>HTTP_ENCODE_LENGTH </dt>
+<dt>HTTP_ENCODING_LENGTH </dt>
 <dd class="description">Data is sent with Content-Length</dd>
 </dl>
 <h3 class="enumeration"><a name="http_encryption_e">http_encryption_e</a></h3>
 <p class="description">HTTP encryption values</p>
 <h4 class="constants">Constants</h4>
 <dl>
-<dt>HTTP_ENCRYPT_ALWAYS </dt>
+<dt>HTTP_ENCRYPTION_ALWAYS </dt>
 <dd class="description">Always encrypt (SSL)</dd>
-<dt>HTTP_ENCRYPT_IF_REQUESTED </dt>
+<dt>HTTP_ENCRYPTION_IF_REQUESTED </dt>
 <dd class="description">Encrypt if requested (TLS upgrade)</dd>
-<dt>HTTP_ENCRYPT_NEVER </dt>
+<dt>HTTP_ENCRYPTION_NEVER </dt>
 <dd class="description">Never encrypt</dd>
-<dt>HTTP_ENCRYPT_REQUIRED </dt>
+<dt>HTTP_ENCRYPTION_REQUIRED </dt>
 <dd class="description">Encryption is required (TLS upgrade)</dd>
 </dl>
 <h3 class="enumeration"><a name="http_field_e">http_field_e</a></h3>
 <p class="description">HTTP field names</p>
 <h4 class="constants">Constants</h4>
 <dl>
+<dt>HTTP_FIELD_ACCEPT_ENCODING <span class="info">&nbsp;CUPS 1.7&nbsp;</span></dt>
+<dd class="description">Accepting-Encoding field </dd>
 <dt>HTTP_FIELD_ACCEPT_LANGUAGE </dt>
 <dd class="description">Accept-Language field</dd>
 <dt>HTTP_FIELD_ACCEPT_RANGES </dt>
 <dd class="description">Accept-Ranges field</dd>
+<dt>HTTP_FIELD_ALLOW <span class="info">&nbsp;CUPS 1.7&nbsp;</span></dt>
+<dd class="description">Allow field </dd>
 <dt>HTTP_FIELD_AUTHORIZATION </dt>
 <dd class="description">Authorization field</dd>
 <dt>HTTP_FIELD_CONNECTION </dt>
@@ -4862,6 +5343,8 @@ with a hostname. </p>
 <dd class="description">Referer field</dd>
 <dt>HTTP_FIELD_RETRY_AFTER </dt>
 <dd class="description">Retry-After field</dd>
+<dt>HTTP_FIELD_SERVER <span class="info">&nbsp;CUPS 1.7&nbsp;</span></dt>
+<dd class="description">Server field </dd>
 <dt>HTTP_FIELD_TRANSFER_ENCODING </dt>
 <dd class="description">Transfer-Encoding field</dd>
 <dt>HTTP_FIELD_UNKNOWN </dt>
@@ -4887,124 +5370,132 @@ with a hostname. </p>
 are server-oriented...</p>
 <h4 class="constants">Constants</h4>
 <dl>
-<dt>HTTP_CLOSE </dt>
-<dd class="description">CLOSE command, waiting for blank line</dd>
-<dt>HTTP_DELETE </dt>
+<dt>HTTP_STATE_CONNECT </dt>
+<dd class="description">CONNECT command, waiting for blank line</dd>
+<dt>HTTP_STATE_DELETE </dt>
 <dd class="description">DELETE command, waiting for blank line</dd>
-<dt>HTTP_GET </dt>
+<dt>HTTP_STATE_ERROR </dt>
+<dd class="description">Error on socket</dd>
+<dt>HTTP_STATE_GET </dt>
 <dd class="description">GET command, waiting for blank line</dd>
-<dt>HTTP_GET_SEND </dt>
+<dt>HTTP_STATE_GET_SEND </dt>
 <dd class="description">GET command, sending data</dd>
-<dt>HTTP_HEAD </dt>
+<dt>HTTP_STATE_HEAD </dt>
 <dd class="description">HEAD command, waiting for blank line</dd>
-<dt>HTTP_OPTIONS </dt>
+<dt>HTTP_STATE_OPTIONS </dt>
 <dd class="description">OPTIONS command, waiting for blank line</dd>
-<dt>HTTP_POST </dt>
+<dt>HTTP_STATE_POST </dt>
 <dd class="description">POST command, waiting for blank line</dd>
-<dt>HTTP_POST_RECV </dt>
+<dt>HTTP_STATE_POST_RECV </dt>
 <dd class="description">POST command, receiving data</dd>
-<dt>HTTP_POST_SEND </dt>
+<dt>HTTP_STATE_POST_SEND </dt>
 <dd class="description">POST command, sending data</dd>
-<dt>HTTP_PUT </dt>
+<dt>HTTP_STATE_PUT </dt>
 <dd class="description">PUT command, waiting for blank line</dd>
-<dt>HTTP_PUT_RECV </dt>
+<dt>HTTP_STATE_PUT_RECV </dt>
 <dd class="description">PUT command, receiving data</dd>
-<dt>HTTP_STATUS </dt>
+<dt>HTTP_STATE_STATUS </dt>
 <dd class="description">Command complete, sending status</dd>
-<dt>HTTP_TRACE </dt>
+<dt>HTTP_STATE_TRACE </dt>
 <dd class="description">TRACE command, waiting for blank line</dd>
-<dt>HTTP_WAITING </dt>
+<dt>HTTP_STATE_UNKNOWN_METHOD <span class="info">&nbsp;CUPS 1.7&nbsp;</span></dt>
+<dd class="description">Unknown request method, waiting for blank line </dd>
+<dt>HTTP_STATE_UNKNOWN_VERSION <span class="info">&nbsp;CUPS 1.7&nbsp;</span></dt>
+<dd class="description">Unknown request method, waiting for blank line </dd>
+<dt>HTTP_STATE_WAITING </dt>
 <dd class="description">Waiting for command</dd>
 </dl>
 <h3 class="enumeration"><a name="http_status_e">http_status_e</a></h3>
 <p class="description">HTTP status codes</p>
 <h4 class="constants">Constants</h4>
 <dl>
-<dt>HTTP_ACCEPTED </dt>
-<dd class="description">DELETE command was successful</dd>
-<dt>HTTP_AUTHORIZATION_CANCELED <span class="info">&nbsp;CUPS 1.4&nbsp;</span></dt>
+<dt>CUPS_STATUS_AUTHORIZATION_CANCELED <span class="info">&nbsp;CUPS 1.4&nbsp;</span></dt>
 <dd class="description">User canceled authorization </dd>
-<dt>HTTP_BAD_GATEWAY </dt>
+<dt>CUPS_STATUS_PKI_ERROR <span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span></dt>
+<dd class="description">Error negotiating a secure connection </dd>
+<dt>HTTP_STATUS_ACCEPTED </dt>
+<dd class="description">DELETE command was successful</dd>
+<dt>HTTP_STATUS_BAD_GATEWAY </dt>
 <dd class="description">Bad gateway</dd>
-<dt>HTTP_BAD_REQUEST </dt>
+<dt>HTTP_STATUS_BAD_REQUEST </dt>
 <dd class="description">Bad request</dd>
-<dt>HTTP_CONFLICT </dt>
+<dt>HTTP_STATUS_CONFLICT </dt>
 <dd class="description">Request is self-conflicting</dd>
-<dt>HTTP_CONTINUE </dt>
+<dt>HTTP_STATUS_CONTINUE </dt>
 <dd class="description">Everything OK, keep going...</dd>
-<dt>HTTP_CREATED </dt>
+<dt>HTTP_STATUS_CREATED </dt>
 <dd class="description">PUT command was successful</dd>
-<dt>HTTP_ERROR </dt>
+<dt>HTTP_STATUS_ERROR </dt>
 <dd class="description">An error response from httpXxxx()</dd>
-<dt>HTTP_EXPECTATION_FAILED </dt>
+<dt>HTTP_STATUS_EXPECTATION_FAILED </dt>
 <dd class="description">The expectation given in an Expect header field was not met</dd>
-<dt>HTTP_FORBIDDEN </dt>
+<dt>HTTP_STATUS_FORBIDDEN </dt>
 <dd class="description">Forbidden to access this URI</dd>
-<dt>HTTP_GATEWAY_TIMEOUT </dt>
+<dt>HTTP_STATUS_GATEWAY_TIMEOUT </dt>
 <dd class="description">Gateway connection timed out</dd>
-<dt>HTTP_GONE </dt>
+<dt>HTTP_STATUS_GONE </dt>
 <dd class="description">Server has gone away</dd>
-<dt>HTTP_LENGTH_REQUIRED </dt>
+<dt>HTTP_STATUS_LENGTH_REQUIRED </dt>
 <dd class="description">A content length or encoding is required</dd>
-<dt>HTTP_METHOD_NOT_ALLOWED </dt>
+<dt>HTTP_STATUS_METHOD_NOT_ALLOWED </dt>
 <dd class="description">Method is not allowed</dd>
-<dt>HTTP_MOVED_PERMANENTLY </dt>
+<dt>HTTP_STATUS_MOVED_PERMANENTLY </dt>
 <dd class="description">Document has moved permanently</dd>
-<dt>HTTP_MOVED_TEMPORARILY </dt>
+<dt>HTTP_STATUS_MOVED_TEMPORARILY </dt>
 <dd class="description">Document has moved temporarily</dd>
-<dt>HTTP_MULTIPLE_CHOICES </dt>
+<dt>HTTP_STATUS_MULTIPLE_CHOICES </dt>
 <dd class="description">Multiple files match request</dd>
-<dt>HTTP_NOT_ACCEPTABLE </dt>
+<dt>HTTP_STATUS_NONE <span class="info">&nbsp;CUPS 1.7&nbsp;</span></dt>
+<dd class="description">No Expect value </dd>
+<dt>HTTP_STATUS_NOT_ACCEPTABLE </dt>
 <dd class="description">Not Acceptable</dd>
-<dt>HTTP_NOT_AUTHORITATIVE </dt>
+<dt>HTTP_STATUS_NOT_AUTHORITATIVE </dt>
 <dd class="description">Information isn't authoritative</dd>
-<dt>HTTP_NOT_FOUND </dt>
+<dt>HTTP_STATUS_NOT_FOUND </dt>
 <dd class="description">URI was not found</dd>
-<dt>HTTP_NOT_IMPLEMENTED </dt>
+<dt>HTTP_STATUS_NOT_IMPLEMENTED </dt>
 <dd class="description">Feature not implemented</dd>
-<dt>HTTP_NOT_MODIFIED </dt>
+<dt>HTTP_STATUS_NOT_MODIFIED </dt>
 <dd class="description">File not modified</dd>
-<dt>HTTP_NOT_SUPPORTED </dt>
+<dt>HTTP_STATUS_NOT_SUPPORTED </dt>
 <dd class="description">HTTP version not supported</dd>
-<dt>HTTP_NO_CONTENT </dt>
+<dt>HTTP_STATUS_NO_CONTENT </dt>
 <dd class="description">Successful command, no new data</dd>
-<dt>HTTP_OK </dt>
+<dt>HTTP_STATUS_OK </dt>
 <dd class="description">OPTIONS/GET/HEAD/POST/TRACE command was successful</dd>
-<dt>HTTP_PARTIAL_CONTENT </dt>
+<dt>HTTP_STATUS_PARTIAL_CONTENT </dt>
 <dd class="description">Only a partial file was recieved/sent</dd>
-<dt>HTTP_PAYMENT_REQUIRED </dt>
+<dt>HTTP_STATUS_PAYMENT_REQUIRED </dt>
 <dd class="description">Payment required</dd>
-<dt>HTTP_PKI_ERROR <span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span></dt>
-<dd class="description">Error negotiating a secure connection </dd>
-<dt>HTTP_PRECONDITION </dt>
+<dt>HTTP_STATUS_PRECONDITION </dt>
 <dd class="description">Precondition failed</dd>
-<dt>HTTP_PROXY_AUTHENTICATION </dt>
+<dt>HTTP_STATUS_PROXY_AUTHENTICATION </dt>
 <dd class="description">Proxy Authentication is Required</dd>
-<dt>HTTP_REQUESTED_RANGE </dt>
+<dt>HTTP_STATUS_REQUESTED_RANGE </dt>
 <dd class="description">The requested range is not satisfiable</dd>
-<dt>HTTP_REQUEST_TIMEOUT </dt>
+<dt>HTTP_STATUS_REQUEST_TIMEOUT </dt>
 <dd class="description">Request timed out</dd>
-<dt>HTTP_REQUEST_TOO_LARGE </dt>
+<dt>HTTP_STATUS_REQUEST_TOO_LARGE </dt>
 <dd class="description">Request entity too large</dd>
-<dt>HTTP_RESET_CONTENT </dt>
+<dt>HTTP_STATUS_RESET_CONTENT </dt>
 <dd class="description">Content was reset/recreated</dd>
-<dt>HTTP_SEE_OTHER </dt>
+<dt>HTTP_STATUS_SEE_OTHER </dt>
 <dd class="description">See this other link...</dd>
-<dt>HTTP_SERVER_ERROR </dt>
+<dt>HTTP_STATUS_SERVER_ERROR </dt>
 <dd class="description">Internal server error</dd>
-<dt>HTTP_SERVICE_UNAVAILABLE </dt>
+<dt>HTTP_STATUS_SERVICE_UNAVAILABLE </dt>
 <dd class="description">Service is unavailable</dd>
-<dt>HTTP_SWITCHING_PROTOCOLS </dt>
+<dt>HTTP_STATUS_SWITCHING_PROTOCOLS </dt>
 <dd class="description">HTTP upgrade to TLS/SSL</dd>
-<dt>HTTP_UNAUTHORIZED </dt>
+<dt>HTTP_STATUS_UNAUTHORIZED </dt>
 <dd class="description">Unauthorized to access host</dd>
-<dt>HTTP_UNSUPPORTED_MEDIATYPE </dt>
+<dt>HTTP_STATUS_UNSUPPORTED_MEDIATYPE </dt>
 <dd class="description">The requested media type is unsupported</dd>
-<dt>HTTP_UPGRADE_REQUIRED </dt>
+<dt>HTTP_STATUS_UPGRADE_REQUIRED </dt>
 <dd class="description">Upgrade to SSL/TLS required</dd>
-<dt>HTTP_URI_TOO_LONG </dt>
+<dt>HTTP_STATUS_URI_TOO_LONG </dt>
 <dd class="description">URI too long</dd>
-<dt>HTTP_USE_PROXY </dt>
+<dt>HTTP_STATUS_USE_PROXY </dt>
 <dd class="description">Must use a proxy to access this URI</dd>
 </dl>
 <h3 class="enumeration"><a name="http_uri_coding_e">http_uri_coding_e</a></h3>
@@ -5030,40 +5521,40 @@ are server-oriented...</p>
 <p class="description">URI separation status </p>
 <h4 class="constants">Constants</h4>
 <dl>
-<dt>HTTP_URI_BAD_ARGUMENTS </dt>
+<dt>HTTP_URI_STATUS_BAD_ARGUMENTS </dt>
 <dd class="description">Bad arguments to function (error)</dd>
-<dt>HTTP_URI_BAD_HOSTNAME </dt>
+<dt>HTTP_URI_STATUS_BAD_HOSTNAME </dt>
 <dd class="description">Bad hostname in URI (error)</dd>
-<dt>HTTP_URI_BAD_PORT </dt>
+<dt>HTTP_URI_STATUS_BAD_PORT </dt>
 <dd class="description">Bad port number in URI (error)</dd>
-<dt>HTTP_URI_BAD_RESOURCE </dt>
+<dt>HTTP_URI_STATUS_BAD_RESOURCE </dt>
 <dd class="description">Bad resource in URI (error)</dd>
-<dt>HTTP_URI_BAD_SCHEME </dt>
+<dt>HTTP_URI_STATUS_BAD_SCHEME </dt>
 <dd class="description">Bad scheme in URI (error)</dd>
-<dt>HTTP_URI_BAD_URI </dt>
+<dt>HTTP_URI_STATUS_BAD_URI </dt>
 <dd class="description">Bad/empty URI (error)</dd>
-<dt>HTTP_URI_BAD_USERNAME </dt>
+<dt>HTTP_URI_STATUS_BAD_USERNAME </dt>
 <dd class="description">Bad username in URI (error)</dd>
-<dt>HTTP_URI_MISSING_RESOURCE </dt>
+<dt>HTTP_URI_STATUS_MISSING_RESOURCE </dt>
 <dd class="description">Missing resource in URI (warning)</dd>
-<dt>HTTP_URI_MISSING_SCHEME </dt>
+<dt>HTTP_URI_STATUS_MISSING_SCHEME </dt>
 <dd class="description">Missing scheme in URI (warning)</dd>
-<dt>HTTP_URI_OK </dt>
+<dt>HTTP_URI_STATUS_OK </dt>
 <dd class="description">URI decoded OK</dd>
-<dt>HTTP_URI_OVERFLOW </dt>
+<dt>HTTP_URI_STATUS_OVERFLOW </dt>
 <dd class="description">URI buffer for httpAssembleURI is too small</dd>
-<dt>HTTP_URI_UNKNOWN_SCHEME </dt>
+<dt>HTTP_URI_STATUS_UNKNOWN_SCHEME </dt>
 <dd class="description">Unknown scheme in URI (warning)</dd>
 </dl>
 <h3 class="enumeration"><a name="http_version_e">http_version_e</a></h3>
 <p class="description">HTTP version numbers</p>
 <h4 class="constants">Constants</h4>
 <dl>
-<dt>HTTP_0_9 </dt>
+<dt>HTTP_VERSION_0_9 </dt>
 <dd class="description">HTTP/0.9</dd>
-<dt>HTTP_1_0 </dt>
+<dt>HTTP_VERSION_1_0 </dt>
 <dd class="description">HTTP/1.0</dd>
-<dt>HTTP_1_1 </dt>
+<dt>HTTP_VERSION_1_1 </dt>
 <dd class="description">HTTP/1.1</dd>
 </dl>
 <h3 class="enumeration"><a name="ipp_dstate_e">ipp_dstate_e</a></h3>
@@ -5071,12 +5562,17 @@ are server-oriented...</p>
 <h4 class="constants">Constants</h4>
 <dl>
 <dt>IPP_DOCUMENT_ABORTED </dt>
+<dd class="description">Document is aborted</dd>
 <dt>IPP_DOCUMENT_CANCELED </dt>
+<dd class="description">Document is canceled</dd>
 <dt>IPP_DOCUMENT_COMPLETED </dt>
+<dd class="description">Document is completed</dd>
 <dt>IPP_DOCUMENT_PENDING </dt>
+<dd class="description">Document is pending</dd>
 <dt>IPP_DOCUMENT_PROCESSING </dt>
+<dd class="description">Document is processing</dd>
 </dl>
-<h3 class="enumeration"><a name="ipp_finish_e">ipp_finish_e</a></h3>
+<h3 class="enumeration"><a name="ipp_finishings_e">ipp_finishings_e</a></h3>
 <p class="description">Finishings</p>
 <h4 class="constants">Constants</h4>
 <dl>
@@ -5096,6 +5592,38 @@ are server-oriented...</p>
 <dd class="description">Fold to make booklet</dd>
 <dt>IPP_FINISHINGS_COVER </dt>
 <dd class="description">Add cover</dd>
+<dt>IPP_FINISHINGS_CUPS_PUNCH_BOTTOM_LEFT </dt>
+<dd class="description">Punch 1 hole bottom left</dd>
+<dt>IPP_FINISHINGS_CUPS_PUNCH_BOTTOM_RIGHT </dt>
+<dd class="description">Punch 1 hole bottom right</dd>
+<dt>IPP_FINISHINGS_CUPS_PUNCH_DUAL_BOTTOM </dt>
+<dd class="description">Punch 2 holes bottom edge</dd>
+<dt>IPP_FINISHINGS_CUPS_PUNCH_DUAL_LEFT </dt>
+<dd class="description">Punch 2 holes left side</dd>
+<dt>IPP_FINISHINGS_CUPS_PUNCH_DUAL_RIGHT </dt>
+<dd class="description">Punch 2 holes right side</dd>
+<dt>IPP_FINISHINGS_CUPS_PUNCH_DUAL_TOP </dt>
+<dd class="description">Punch 2 holes top edge</dd>
+<dt>IPP_FINISHINGS_CUPS_PUNCH_QUAD_BOTTOM </dt>
+<dd class="description">Punch 4 holes bottom edge</dd>
+<dt>IPP_FINISHINGS_CUPS_PUNCH_QUAD_LEFT </dt>
+<dd class="description">Punch 4 holes left side</dd>
+<dt>IPP_FINISHINGS_CUPS_PUNCH_QUAD_RIGHT </dt>
+<dd class="description">Punch 4 holes right side</dd>
+<dt>IPP_FINISHINGS_CUPS_PUNCH_QUAD_TOP </dt>
+<dd class="description">Punch 4 holes top edge</dd>
+<dt>IPP_FINISHINGS_CUPS_PUNCH_TOP_LEFT </dt>
+<dd class="description">Punch 1 hole top left</dd>
+<dt>IPP_FINISHINGS_CUPS_PUNCH_TOP_RIGHT </dt>
+<dd class="description">Punch 1 hole top right</dd>
+<dt>IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_BOTTOM </dt>
+<dd class="description">Punch 3 holes bottom edge</dd>
+<dt>IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_LEFT </dt>
+<dd class="description">Punch 3 holes left side</dd>
+<dt>IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_RIGHT </dt>
+<dd class="description">Punch 3 holes right side</dd>
+<dt>IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_TOP </dt>
+<dd class="description">Punch 3 holes top edge</dd>
 <dt>IPP_FINISHINGS_EDGE_STITCH </dt>
 <dd class="description">Stitch along any side</dd>
 <dt>IPP_FINISHINGS_EDGE_STITCH_BOTTOM </dt>
@@ -5149,152 +5677,152 @@ are server-oriented...</p>
 <p class="description">Job collation types</p>
 <h4 class="constants">Constants</h4>
 <dl>
-<dt>IPP_JOB_COLLATED_DOCUMENTS </dt>
-<dt>IPP_JOB_UNCOLLATED_DOCUMENTS </dt>
-<dt>IPP_JOB_UNCOLLATED_SHEETS </dt>
+<dt>IPP_JCOLLATE_COLLATED_DOCUMENTS </dt>
+<dt>IPP_JCOLLATE_UNCOLLATED_DOCUMENTS </dt>
+<dt>IPP_JCOLLATE_UNCOLLATED_SHEETS </dt>
 </dl>
 <h3 class="enumeration"><a name="ipp_jstate_e">ipp_jstate_e</a></h3>
 <p class="description">Job states</p>
 <h4 class="constants">Constants</h4>
 <dl>
-<dt>IPP_JOB_ABORTED </dt>
+<dt>IPP_JSTATE_ABORTED </dt>
 <dd class="description">Job has aborted due to error</dd>
-<dt>IPP_JOB_CANCELED </dt>
+<dt>IPP_JSTATE_CANCELED </dt>
 <dd class="description">Job has been canceled</dd>
-<dt>IPP_JOB_COMPLETED </dt>
+<dt>IPP_JSTATE_COMPLETED </dt>
 <dd class="description">Job has completed successfully</dd>
-<dt>IPP_JOB_HELD </dt>
+<dt>IPP_JSTATE_HELD </dt>
 <dd class="description">Job is held for printing</dd>
-<dt>IPP_JOB_PENDING </dt>
+<dt>IPP_JSTATE_PENDING </dt>
 <dd class="description">Job is waiting to be printed</dd>
-<dt>IPP_JOB_PROCESSING </dt>
+<dt>IPP_JSTATE_PROCESSING </dt>
 <dd class="description">Job is currently printing</dd>
-<dt>IPP_JOB_STOPPED </dt>
+<dt>IPP_JSTATE_STOPPED </dt>
 <dd class="description">Job has been stopped</dd>
 </dl>
 <h3 class="enumeration"><a name="ipp_op_e">ipp_op_e</a></h3>
 <p class="description">IPP operations</p>
 <h4 class="constants">Constants</h4>
 <dl>
-<dt>CUPS_ACCEPT_JOBS </dt>
+<dt>IPP_OP_CANCEL_JOB </dt>
+<dd class="description">Cancel a job</dd>
+<dt>IPP_OP_CANCEL_JOBS </dt>
+<dd class="description">Cancel-Jobs</dd>
+<dt>IPP_OP_CANCEL_MY_JOBS </dt>
+<dd class="description">Cancel-My-Jobs</dd>
+<dt>IPP_OP_CANCEL_SUBSCRIPTION <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dd class="description">Cancel a subscription </dd>
+<dt>IPP_OP_CLOSE_JOB </dt>
+<dd class="description">Close-Job</dd>
+<dt>IPP_OP_CREATE_JOB </dt>
+<dd class="description">Create an empty print job</dd>
+<dt>IPP_OP_CREATE_JOB_SUBSCRIPTION <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dd class="description">Create a job subscription </dd>
+<dt>IPP_OP_CREATE_PRINTER_SUBSCRIPTION <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dd class="description">Create a printer subscription </dd>
+<dt>IPP_OP_CUPS_ACCEPT_JOBS </dt>
 <dd class="description">Accept new jobs on a printer</dd>
-<dt>CUPS_ADD_MODIFY_CLASS </dt>
+<dt>IPP_OP_CUPS_ADD_MODIFY_CLASS </dt>
 <dd class="description">Add or modify a class</dd>
-<dt>CUPS_ADD_MODIFY_PRINTER </dt>
+<dt>IPP_OP_CUPS_ADD_MODIFY_PRINTER </dt>
 <dd class="description">Add or modify a printer</dd>
-<dt>CUPS_AUTHENTICATE_JOB <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>IPP_OP_CUPS_AUTHENTICATE_JOB <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
 <dd class="description">Authenticate a job </dd>
-<dt>CUPS_DELETE_CLASS </dt>
+<dt>IPP_OP_CUPS_DELETE_CLASS </dt>
 <dd class="description">Delete a class</dd>
-<dt>CUPS_DELETE_PRINTER </dt>
+<dt>IPP_OP_CUPS_DELETE_PRINTER </dt>
 <dd class="description">Delete a printer</dd>
-<dt>CUPS_GET_CLASSES <span class="info">&nbsp;DEPRECATED&nbsp;</span></dt>
+<dt>IPP_OP_CUPS_GET_CLASSES <span class="info">&nbsp;DEPRECATED&nbsp;</span></dt>
 <dd class="description">Get a list of classes </dd>
-<dt>CUPS_GET_DEFAULT </dt>
+<dt>IPP_OP_CUPS_GET_DEFAULT </dt>
 <dd class="description">Get the default printer</dd>
-<dt>CUPS_GET_DEVICES </dt>
+<dt>IPP_OP_CUPS_GET_DEVICES </dt>
 <dd class="description">Get a list of supported devices</dd>
-<dt>CUPS_GET_DOCUMENT <span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span></dt>
+<dt>IPP_OP_CUPS_GET_DOCUMENT <span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span></dt>
 <dd class="description">Get a document file </dd>
-<dt>CUPS_GET_PPD <span class="info">&nbsp;CUPS 1.3/OS X 10.5&nbsp;</span></dt>
+<dt>IPP_OP_CUPS_GET_PPD <span class="info">&nbsp;CUPS 1.3/OS X 10.5&nbsp;</span></dt>
 <dd class="description">Get a PPD file </dd>
-<dt>CUPS_GET_PPDS </dt>
+<dt>IPP_OP_CUPS_GET_PPDS </dt>
 <dd class="description">Get a list of supported drivers</dd>
-<dt>CUPS_GET_PRINTERS </dt>
+<dt>IPP_OP_CUPS_GET_PRINTERS </dt>
 <dd class="description">Get a list of printers and/or classes</dd>
-<dt>CUPS_MOVE_JOB </dt>
+<dt>IPP_OP_CUPS_INVALID </dt>
+<dd class="description">Invalid operation name for <a href="#ippOpValue"><code>ippOpValue</code></a></dd>
+<dt>IPP_OP_CUPS_MOVE_JOB </dt>
 <dd class="description">Move a job to a different printer</dd>
-<dt>CUPS_REJECT_JOBS </dt>
+<dt>IPP_OP_CUPS_REJECT_JOBS </dt>
 <dd class="description">Reject new jobs on a printer</dd>
-<dt>CUPS_SET_DEFAULT </dt>
+<dt>IPP_OP_CUPS_SET_DEFAULT </dt>
 <dd class="description">Set the default printer</dd>
-<dt>IPP_CANCEL_JOB </dt>
-<dd class="description">Cancel a job</dd>
-<dt>IPP_CANCEL_JOBS </dt>
-<dd class="description">Cancel-Jobs</dd>
-<dt>IPP_CANCEL_MY_JOBS </dt>
-<dd class="description">Cancel-My-Jobs</dd>
-<dt>IPP_CANCEL_SUBSCRIPTION <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
-<dd class="description">Cancel a subscription </dd>
-<dt>IPP_CLOSE_JOB </dt>
-<dd class="description">Close-Job</dd>
-<dt>IPP_CREATE_JOB </dt>
-<dd class="description">Create an empty print job</dd>
-<dt>IPP_CREATE_JOB_SUBSCRIPTION <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
-<dd class="description">Create a job subscription </dd>
-<dt>IPP_CREATE_PRINTER_SUBSCRIPTION <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
-<dd class="description">Create a printer subscription </dd>
-<dt>IPP_DISABLE_PRINTER </dt>
+<dt>IPP_OP_DISABLE_PRINTER </dt>
 <dd class="description">Stop a printer</dd>
-<dt>IPP_ENABLE_PRINTER </dt>
+<dt>IPP_OP_ENABLE_PRINTER </dt>
 <dd class="description">Start a printer</dd>
-<dt>IPP_GET_JOBS </dt>
+<dt>IPP_OP_GET_JOBS </dt>
 <dd class="description">Get a list of jobs</dd>
-<dt>IPP_GET_JOB_ATTRIBUTES </dt>
+<dt>IPP_OP_GET_JOB_ATTRIBUTES </dt>
 <dd class="description">Get job attributes</dd>
-<dt>IPP_GET_NOTIFICATIONS <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>IPP_OP_GET_NOTIFICATIONS <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
 <dd class="description">Get notification events </dd>
-<dt>IPP_GET_PRINTER_ATTRIBUTES </dt>
+<dt>IPP_OP_GET_PRINTER_ATTRIBUTES </dt>
 <dd class="description">Get printer attributes</dd>
-<dt>IPP_GET_PRINTER_SUPPORTED_VALUES </dt>
+<dt>IPP_OP_GET_PRINTER_SUPPORTED_VALUES </dt>
 <dd class="description">Get supported attribute values</dd>
-<dt>IPP_GET_SUBSCRIPTIONS <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>IPP_OP_GET_SUBSCRIPTIONS <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
 <dd class="description">Get list of subscriptions </dd>
-<dt>IPP_GET_SUBSCRIPTION_ATTRIBUTES <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
 <dd class="description">Get subscription attributes </dd>
-<dt>IPP_HOLD_JOB </dt>
+<dt>IPP_OP_HOLD_JOB </dt>
 <dd class="description">Hold a job for printing</dd>
-<dt>IPP_IDENTIFY_PRINTER </dt>
+<dt>IPP_OP_IDENTIFY_PRINTER </dt>
 <dd class="description">Identify-Printer (proposed IPP JPS3)</dd>
-<dt>IPP_OP_CUPS_INVALID </dt>
-<dd class="description">Invalid operation name for <a href="#ippOpValue"><code>ippOpValue</code></a></dd>
-<dt>IPP_PAUSE_PRINTER </dt>
+<dt>IPP_OP_PAUSE_PRINTER </dt>
 <dd class="description">Stop a printer</dd>
-<dt>IPP_PRINT_JOB </dt>
+<dt>IPP_OP_PRINT_JOB </dt>
 <dd class="description">Print a single file</dd>
-<dt>IPP_PURGE_JOBS </dt>
+<dt>IPP_OP_PURGE_JOBS </dt>
 <dd class="description">Cancel all jobs</dd>
-<dt>IPP_RELEASE_JOB </dt>
+<dt>IPP_OP_RELEASE_JOB </dt>
 <dd class="description">Release a job for printing</dd>
-<dt>IPP_RENEW_SUBSCRIPTION <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>IPP_OP_RENEW_SUBSCRIPTION <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
 <dd class="description">Renew a printer subscription </dd>
-<dt>IPP_RESTART_JOB </dt>
+<dt>IPP_OP_RESTART_JOB </dt>
 <dd class="description">Reprint a job</dd>
-<dt>IPP_RESUBMIT_JOB </dt>
+<dt>IPP_OP_RESUBMIT_JOB </dt>
 <dd class="description">Resubmit-Job</dd>
-<dt>IPP_RESUME_PRINTER </dt>
+<dt>IPP_OP_RESUME_PRINTER </dt>
 <dd class="description">Start a printer</dd>
-<dt>IPP_SEND_DOCUMENT </dt>
+<dt>IPP_OP_SEND_DOCUMENT </dt>
 <dd class="description">Add a file to a job</dd>
-<dt>IPP_SET_JOB_ATTRIBUTES </dt>
+<dt>IPP_OP_SET_JOB_ATTRIBUTES </dt>
 <dd class="description">Set job attributes</dd>
-<dt>IPP_VALIDATE_DOCUMENT </dt>
+<dt>IPP_OP_VALIDATE_DOCUMENT </dt>
 <dd class="description">Validate-Document (proposed IPP JPS3)</dd>
-<dt>IPP_VALIDATE_JOB </dt>
+<dt>IPP_OP_VALIDATE_JOB </dt>
 <dd class="description">Validate job options</dd>
 </dl>
 <h3 class="enumeration"><a name="ipp_orient_e">ipp_orient_e</a></h3>
 <p class="description">Orientation values</p>
 <h4 class="constants">Constants</h4>
 <dl>
-<dt>IPP_LANDSCAPE </dt>
+<dt>IPP_ORIENT_LANDSCAPE </dt>
 <dd class="description">90 degrees counter-clockwise</dd>
-<dt>IPP_PORTRAIT </dt>
+<dt>IPP_ORIENT_PORTRAIT </dt>
 <dd class="description">No rotation</dd>
-<dt>IPP_REVERSE_LANDSCAPE </dt>
+<dt>IPP_ORIENT_REVERSE_LANDSCAPE </dt>
 <dd class="description">90 degrees clockwise</dd>
-<dt>IPP_REVERSE_PORTRAIT </dt>
+<dt>IPP_ORIENT_REVERSE_PORTRAIT </dt>
 <dd class="description">180 degrees</dd>
 </dl>
 <h3 class="enumeration"><a name="ipp_pstate_e">ipp_pstate_e</a></h3>
 <p class="description">Printer states</p>
 <h4 class="constants">Constants</h4>
 <dl>
-<dt>IPP_PRINTER_IDLE </dt>
+<dt>IPP_PSTATE_IDLE </dt>
 <dd class="description">Printer is idle</dd>
-<dt>IPP_PRINTER_PROCESSING </dt>
+<dt>IPP_PSTATE_PROCESSING </dt>
 <dd class="description">Printer is working</dd>
-<dt>IPP_PRINTER_STOPPED </dt>
+<dt>IPP_PSTATE_STOPPED </dt>
 <dd class="description">Printer is stopped</dd>
 </dl>
 <h3 class="enumeration"><a name="ipp_quality_e">ipp_quality_e</a></h3>
@@ -5321,121 +5849,129 @@ are server-oriented...</p>
 <p class="description">IPP states</p>
 <h4 class="constants">Constants</h4>
 <dl>
-<dt>IPP_ATTRIBUTE </dt>
+<dt>IPP_STATE_ATTRIBUTE </dt>
 <dd class="description">One or more attributes need to be sent/received</dd>
-<dt>IPP_DATA </dt>
+<dt>IPP_STATE_DATA </dt>
 <dd class="description">IPP request data needs to be sent/received</dd>
-<dt>IPP_ERROR </dt>
+<dt>IPP_STATE_ERROR </dt>
 <dd class="description">An error occurred</dd>
-<dt>IPP_HEADER </dt>
+<dt>IPP_STATE_HEADER </dt>
 <dd class="description">The request header needs to be sent/received</dd>
-<dt>IPP_IDLE </dt>
+<dt>IPP_STATE_IDLE </dt>
 <dd class="description">Nothing is happening/request completed</dd>
 </dl>
 <h3 class="enumeration"><a name="ipp_status_e">ipp_status_e</a></h3>
 <p class="description">IPP status codes</p>
 <h4 class="constants">Constants</h4>
 <dl>
-<dt>CUPS_SEE_OTHER </dt>
+<dt>IPP_STATUS_CUPS_INVALID </dt>
+<dd class="description">Invalid status name for <a href="#ippErrorValue"><code>ippErrorValue</code></a></dd>
+<dt>IPP_STATUS_CUPS_SEE_OTHER </dt>
 <dd class="description">cups-see-other</dd>
-<dt>IPP_ATTRIBUTES </dt>
-<dd class="description">client-error-attributes-or-values-not-supported</dd>
-<dt>IPP_ATTRIBUTES_NOT_SETTABLE </dt>
+<dt>IPP_STATUS_ERROR_ATTRIBUTES_NOT_SETTABLE </dt>
 <dd class="description">client-error-attributes-not-settable</dd>
-<dt>IPP_AUTHENTICATION_CANCELED <span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span></dt>
-<dd class="description">Authentication canceled by user </dd>
-<dt>IPP_BAD_REQUEST </dt>
+<dt>IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES </dt>
+<dd class="description">client-error-attributes-or-values-not-supported</dd>
+<dt>IPP_STATUS_ERROR_BAD_REQUEST </dt>
 <dd class="description">client-error-bad-request</dd>
-<dt>IPP_CHARSET </dt>
+<dt>IPP_STATUS_ERROR_BUSY </dt>
+<dd class="description">server-error-busy</dd>
+<dt>IPP_STATUS_ERROR_CHARSET </dt>
 <dd class="description">client-error-charset-not-supported</dd>
-<dt>IPP_COMPRESSION_ERROR </dt>
+<dt>IPP_STATUS_ERROR_COMPRESSION_ERROR </dt>
 <dd class="description">client-error-compression-error</dd>
-<dt>IPP_COMPRESSION_NOT_SUPPORTED </dt>
+<dt>IPP_STATUS_ERROR_COMPRESSION_NOT_SUPPORTED </dt>
 <dd class="description">client-error-compression-not-supported</dd>
-<dt>IPP_CONFLICT </dt>
+<dt>IPP_STATUS_ERROR_CONFLICTING </dt>
 <dd class="description">client-error-conflicting-attributes</dd>
-<dt>IPP_DEVICE_ERROR </dt>
+<dt>IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED <span class="info">&nbsp;CUPS 1.7&nbsp;</span></dt>
+<dd class="description">cups-error-account-authorization-failed </dd>
+<dt>IPP_STATUS_ERROR_CUPS_ACCOUNT_CLOSED <span class="info">&nbsp;CUPS 1.7&nbsp;</span></dt>
+<dd class="description">cups-error-account-closed </dd>
+<dt>IPP_STATUS_ERROR_CUPS_ACCOUNT_INFO_NEEDED <span class="info">&nbsp;CUPS 1.7&nbsp;</span></dt>
+<dd class="description">cups-error-account-info-needed </dd>
+<dt>IPP_STATUS_ERROR_CUPS_ACCOUNT_LIMIT_REACHED <span class="info">&nbsp;CUPS 1.7&nbsp;</span></dt>
+<dd class="description">cups-error-account-limit-reached </dd>
+<dt>IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED <span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span></dt>
+<dd class="description">cups-authentication-canceled - Authentication canceled by user </dd>
+<dt>IPP_STATUS_ERROR_CUPS_PKI <span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span></dt>
+<dd class="description">cups-pki-error - Error negotiating a secure connection </dd>
+<dt>IPP_STATUS_ERROR_CUPS_UPGRADE_REQUIRED </dt>
+<dd class="description">cups-upgrade-required - TLS upgrade required</dd>
+<dt>IPP_STATUS_ERROR_DEVICE </dt>
 <dd class="description">server-error-device-error</dd>
-<dt>IPP_DOCUMENT_ACCESS_ERROR </dt>
+<dt>IPP_STATUS_ERROR_DOCUMENT_ACCESS </dt>
 <dd class="description">client-error-document-access-error</dd>
-<dt>IPP_DOCUMENT_FORMAT </dt>
-<dd class="description">client-error-document-format-not-supported</dd>
-<dt>IPP_DOCUMENT_FORMAT_ERROR </dt>
+<dt>IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR </dt>
 <dd class="description">client-error-document-format-error</dd>
-<dt>IPP_DOCUMENT_PASSWORD_ERROR </dt>
+<dt>IPP_STATUS_ERROR_DOCUMENT_FORMAT_NOT_SUPPORTED </dt>
+<dd class="description">client-error-document-format-not-supported</dd>
+<dt>IPP_STATUS_ERROR_DOCUMENT_PASSWORD </dt>
 <dd class="description">client-error-document-password-error</dd>
-<dt>IPP_DOCUMENT_PERMISSION_ERROR </dt>
+<dt>IPP_STATUS_ERROR_DOCUMENT_PERMISSION </dt>
 <dd class="description">client-error-document-permission-error</dd>
-<dt>IPP_DOCUMENT_SECURITY_ERROR </dt>
+<dt>IPP_STATUS_ERROR_DOCUMENT_SECURITY </dt>
 <dd class="description">client-error-document-security-error</dd>
-<dt>IPP_DOCUMENT_UNPRINTABLE_ERROR </dt>
+<dt>IPP_STATUS_ERROR_DOCUMENT_UNPRINTABLE </dt>
 <dd class="description">client-error-document-unprintable-error</dd>
-<dt>IPP_ERROR_JOB_CANCELED </dt>
-<dd class="description">server-error-job-canceled</dd>
-<dt>IPP_FORBIDDEN </dt>
+<dt>IPP_STATUS_ERROR_FORBIDDEN </dt>
 <dd class="description">client-error-forbidden</dd>
-<dt>IPP_GONE </dt>
+<dt>IPP_STATUS_ERROR_GONE </dt>
 <dd class="description">client-error-gone</dd>
-<dt>IPP_IGNORED_ALL_SUBSCRIPTIONS </dt>
+<dt>IPP_STATUS_ERROR_IGNORED_ALL_SUBSCRIPTIONS </dt>
 <dd class="description">client-error-ignored-all-subscriptions</dd>
-<dt>IPP_INTERNAL_ERROR </dt>
+<dt>IPP_STATUS_ERROR_INTERNAL </dt>
 <dd class="description">server-error-internal-error</dd>
-<dt>IPP_MULTIPLE_JOBS_NOT_SUPPORTED </dt>
+<dt>IPP_STATUS_ERROR_JOB_CANCELED </dt>
+<dd class="description">server-error-job-canceled</dd>
+<dt>IPP_STATUS_ERROR_MULTIPLE_JOBS_NOT_SUPPORTED </dt>
 <dd class="description">server-error-multiple-document-jobs-not-supported</dd>
-<dt>IPP_NOT_ACCEPTING </dt>
+<dt>IPP_STATUS_ERROR_NOT_ACCEPTING_JOBS </dt>
 <dd class="description">server-error-not-accepting-jobs</dd>
-<dt>IPP_NOT_AUTHENTICATED </dt>
+<dt>IPP_STATUS_ERROR_NOT_AUTHENTICATED </dt>
 <dd class="description">client-error-not-authenticated</dd>
-<dt>IPP_NOT_AUTHORIZED </dt>
+<dt>IPP_STATUS_ERROR_NOT_AUTHORIZED </dt>
 <dd class="description">client-error-not-authorized</dd>
-<dt>IPP_NOT_FOUND </dt>
+<dt>IPP_STATUS_ERROR_NOT_FOUND </dt>
 <dd class="description">client-error-not-found</dd>
-<dt>IPP_NOT_POSSIBLE </dt>
+<dt>IPP_STATUS_ERROR_NOT_POSSIBLE </dt>
 <dd class="description">client-error-not-possible</dd>
-<dt>IPP_OK </dt>
-<dd class="description">successful-ok</dd>
-<dt>IPP_OK_CONFLICT </dt>
-<dd class="description">successful-ok-conflicting-attributes</dd>
-<dt>IPP_OK_EVENTS_COMPLETE </dt>
-<dd class="description">successful-ok-events-complete</dd>
-<dt>IPP_OK_IGNORED_SUBSCRIPTIONS </dt>
-<dd class="description">successful-ok-ignored-subscriptions</dd>
-<dt>IPP_OK_SUBST </dt>
-<dd class="description">successful-ok-ignored-or-substituted-attributes</dd>
-<dt>IPP_OK_TOO_MANY_EVENTS </dt>
-<dd class="description">successful-ok-too-many-events</dd>
-<dt>IPP_OPERATION_NOT_SUPPORTED </dt>
+<dt>IPP_STATUS_ERROR_OPERATION_NOT_SUPPORTED </dt>
 <dd class="description">server-error-operation-not-supported</dd>
-<dt>IPP_PKI_ERROR <span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span></dt>
-<dd class="description">Error negotiating a secure connection </dd>
-<dt>IPP_PRINTER_BUSY </dt>
-<dd class="description">server-error-busy</dd>
-<dt>IPP_PRINTER_IS_DEACTIVATED </dt>
+<dt>IPP_STATUS_ERROR_PRINTER_IS_DEACTIVATED </dt>
 <dd class="description">server-error-printer-is-deactivated</dd>
-<dt>IPP_REQUEST_ENTITY </dt>
+<dt>IPP_STATUS_ERROR_REQUEST_ENTITY </dt>
 <dd class="description">client-error-request-entity-too-large</dd>
-<dt>IPP_REQUEST_VALUE </dt>
+<dt>IPP_STATUS_ERROR_REQUEST_VALUE </dt>
 <dd class="description">client-error-request-value-too-long</dd>
-<dt>IPP_SERVICE_UNAVAILABLE </dt>
+<dt>IPP_STATUS_ERROR_SERVICE_UNAVAILABLE </dt>
 <dd class="description">server-error-service-unavailable</dd>
-<dt>IPP_STATUS_CUPS_INVALID </dt>
-<dd class="description">Invalid status name for <a href="#ippErrorValue"><code>ippErrorValue</code></a></dd>
-<dt>IPP_TEMPORARY_ERROR </dt>
+<dt>IPP_STATUS_ERROR_TEMPORARY </dt>
 <dd class="description">server-error-temporary-error</dd>
-<dt>IPP_TIMEOUT </dt>
+<dt>IPP_STATUS_ERROR_TIMEOUT </dt>
 <dd class="description">client-error-timeout</dd>
-<dt>IPP_TOO_MANY_DOCUMENTS </dt>
+<dt>IPP_STATUS_ERROR_TOO_MANY_DOCUMENTS </dt>
 <dd class="description">server-error-too-many-documents</dd>
-<dt>IPP_TOO_MANY_JOBS </dt>
+<dt>IPP_STATUS_ERROR_TOO_MANY_JOBS </dt>
 <dd class="description">server-error-too-many-jobs</dd>
-<dt>IPP_TOO_MANY_SUBSCRIPTIONS </dt>
+<dt>IPP_STATUS_ERROR_TOO_MANY_SUBSCRIPTIONS </dt>
 <dd class="description">client-error-too-many-subscriptions</dd>
-<dt>IPP_UPGRADE_REQUIRED </dt>
-<dd class="description">TLS upgrade required</dd>
-<dt>IPP_URI_SCHEME </dt>
+<dt>IPP_STATUS_ERROR_URI_SCHEME </dt>
 <dd class="description">client-error-uri-scheme-not-supported</dd>
-<dt>IPP_VERSION_NOT_SUPPORTED </dt>
+<dt>IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED </dt>
 <dd class="description">server-error-version-not-supported</dd>
+<dt>IPP_STATUS_OK </dt>
+<dd class="description">successful-ok</dd>
+<dt>IPP_STATUS_OK_CONFLICTING </dt>
+<dd class="description">successful-ok-conflicting-attributes</dd>
+<dt>IPP_STATUS_OK_EVENTS_COMPLETE </dt>
+<dd class="description">successful-ok-events-complete</dd>
+<dt>IPP_STATUS_OK_IGNORED_OR_SUBSTITUTED </dt>
+<dd class="description">successful-ok-ignored-or-substituted-attributes</dd>
+<dt>IPP_STATUS_OK_IGNORED_SUBSCRIPTIONS </dt>
+<dd class="description">successful-ok-ignored-subscriptions</dd>
+<dt>IPP_STATUS_OK_TOO_MANY_EVENTS </dt>
+<dd class="description">successful-ok-too-many-events</dd>
 </dl>
 <h3 class="enumeration"><a name="ipp_tag_e">ipp_tag_e</a></h3>
 <p class="description">Format tags for attributes</p>
index ddb65575ce16c73bcc2f0f52e5350f762f2f7292..cc8c2f99d5fa63b6ad870b8b680982d75c8c78e2 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: 2012-05-23 16:24-0700\n"
+"POT-Creation-Date: 2012-10-22 11:09-0400\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"
@@ -39,12 +39,12 @@ msgstr ""
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: systemv/lpstat.c:1876 systemv/lpstat.c:2001
+#: systemv/lpstat.c:1833 systemv/lpstat.c:1958
 msgid "\t\t(all)"
 msgstr ""
 
-#: systemv/lpstat.c:1879 systemv/lpstat.c:1882 systemv/lpstat.c:2004
-#: systemv/lpstat.c:2007
+#: systemv/lpstat.c:1836 systemv/lpstat.c:1839 systemv/lpstat.c:1961
+#: systemv/lpstat.c:1964
 msgid "\t\t(none)"
 msgstr ""
 
@@ -53,104 +53,104 @@ msgstr ""
 msgid "\t%d entries"
 msgstr ""
 
-#: systemv/lpstat.c:756 systemv/lpstat.c:772
+#: systemv/lpstat.c:713 systemv/lpstat.c:729
 #, c-format
 msgid "\t%s"
 msgstr ""
 
-#: systemv/lpstat.c:1857 systemv/lpstat.c:1982
+#: systemv/lpstat.c:1814 systemv/lpstat.c:1939
 msgid "\tAfter fault: continue"
 msgstr ""
 
-#: systemv/lpstat.c:1481 systemv/lpstat.c:1826 systemv/lpstat.c:1952
+#: systemv/lpstat.c:1438 systemv/lpstat.c:1783 systemv/lpstat.c:1909
 #, c-format
 msgid "\tAlerts: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1880 systemv/lpstat.c:2005
+#: systemv/lpstat.c:1837 systemv/lpstat.c:1962
 msgid "\tBanner required"
 msgstr ""
 
-#: systemv/lpstat.c:1881 systemv/lpstat.c:2006
+#: systemv/lpstat.c:1838 systemv/lpstat.c:1963
 msgid "\tCharset sets:"
 msgstr ""
 
-#: systemv/lpstat.c:1845 systemv/lpstat.c:1970
+#: systemv/lpstat.c:1802 systemv/lpstat.c:1927
 msgid "\tConnection: direct"
 msgstr ""
 
-#: systemv/lpstat.c:1836 systemv/lpstat.c:1962
+#: systemv/lpstat.c:1793 systemv/lpstat.c:1919
 msgid "\tConnection: remote"
 msgstr ""
 
-#: systemv/lpstat.c:1800 systemv/lpstat.c:1926
+#: systemv/lpstat.c:1757 systemv/lpstat.c:1883
 msgid "\tContent types: any"
 msgstr ""
 
-#: systemv/lpstat.c:1884 systemv/lpstat.c:2009
+#: systemv/lpstat.c:1841 systemv/lpstat.c:1966
 msgid "\tDefault page size:"
 msgstr ""
 
-#: systemv/lpstat.c:1883 systemv/lpstat.c:2008
+#: systemv/lpstat.c:1840 systemv/lpstat.c:1965
 msgid "\tDefault pitch:"
 msgstr ""
 
-#: systemv/lpstat.c:1885 systemv/lpstat.c:2010
+#: systemv/lpstat.c:1842 systemv/lpstat.c:1967
 msgid "\tDefault port settings:"
 msgstr ""
 
-#: systemv/lpstat.c:1806 systemv/lpstat.c:1932
+#: systemv/lpstat.c:1763 systemv/lpstat.c:1889
 #, c-format
 msgid "\tDescription: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1799 systemv/lpstat.c:1925
+#: systemv/lpstat.c:1756 systemv/lpstat.c:1882
 msgid "\tForm mounted:"
 msgstr ""
 
-#: systemv/lpstat.c:1878 systemv/lpstat.c:2003
+#: systemv/lpstat.c:1835 systemv/lpstat.c:1960
 msgid "\tForms allowed:"
 msgstr ""
 
-#: systemv/lpstat.c:1840 systemv/lpstat.c:1966
+#: systemv/lpstat.c:1797 systemv/lpstat.c:1923
 #, c-format
 msgid "\tInterface: %s.ppd"
 msgstr ""
 
-#: systemv/lpstat.c:1849 systemv/lpstat.c:1974
+#: systemv/lpstat.c:1806 systemv/lpstat.c:1931
 #, c-format
 msgid "\tInterface: %s/interfaces/%s"
 msgstr ""
 
-#: systemv/lpstat.c:1853 systemv/lpstat.c:1978
+#: systemv/lpstat.c:1810 systemv/lpstat.c:1935
 #, c-format
 msgid "\tInterface: %s/ppd/%s.ppd"
 msgstr ""
 
-#: systemv/lpstat.c:1831 systemv/lpstat.c:1957
+#: systemv/lpstat.c:1788 systemv/lpstat.c:1914
 #, c-format
 msgid "\tLocation: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1856 systemv/lpstat.c:1981
+#: systemv/lpstat.c:1813 systemv/lpstat.c:1938
 msgid "\tOn fault: no alert"
 msgstr ""
 
-#: systemv/lpstat.c:1801 systemv/lpstat.c:1927
+#: systemv/lpstat.c:1758 systemv/lpstat.c:1884
 msgid "\tPrinter types: unknown"
 msgstr ""
 
-#: systemv/lpstat.c:1462
+#: systemv/lpstat.c:1419
 #, c-format
 msgid "\tStatus: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1861 systemv/lpstat.c:1875 systemv/lpstat.c:1986
-#: systemv/lpstat.c:2000
+#: systemv/lpstat.c:1818 systemv/lpstat.c:1832 systemv/lpstat.c:1943
+#: systemv/lpstat.c:1957
 msgid "\tUsers allowed:"
 msgstr ""
 
-#: systemv/lpstat.c:1868 systemv/lpstat.c:1993
+#: systemv/lpstat.c:1825 systemv/lpstat.c:1950
 msgid "\tUsers denied:"
 msgstr ""
 
@@ -175,7 +175,7 @@ msgstr ""
 msgid "\tprinting is enabled"
 msgstr ""
 
-#: systemv/lpstat.c:1484
+#: systemv/lpstat.c:1441
 #, c-format
 msgid "\tqueued for %s"
 msgstr ""
@@ -188,7 +188,7 @@ msgstr ""
 msgid "\tqueuing is enabled"
 msgstr ""
 
-#: systemv/lpstat.c:1792 systemv/lpstat.c:1918
+#: systemv/lpstat.c:1749 systemv/lpstat.c:1875
 msgid "\treason unknown"
 msgstr ""
 
@@ -198,11 +198,11 @@ msgid ""
 "    DETAILED CONFORMANCE TEST RESULTS"
 msgstr ""
 
-#: systemv/cupstestppd.c:3800
+#: systemv/cupstestppd.c:3801
 msgid "                          Ignore specific warnings."
 msgstr ""
 
-#: systemv/cupstestppd.c:3804
+#: systemv/cupstestppd.c:3805
 msgid "                          Issue warnings instead of errors."
 msgstr ""
 
@@ -250,7 +250,7 @@ msgstr ""
 msgid "                REF: Pages 52-54, section 5.2."
 msgstr ""
 
-#: berkeley/lpq.c:554
+#: berkeley/lpq.c:558
 #, c-format
 msgid "        %-39.39s %.0f bytes"
 msgstr ""
@@ -409,11 +409,11 @@ msgstr ""
 msgid "       cupstestdsc [options] -"
 msgstr ""
 
-#: systemv/cupstestppd.c:3795
+#: systemv/cupstestppd.c:3796
 msgid "       program | cupstestppd [options] -"
 msgstr ""
 
-#: systemv/cupstestppd.c:3727
+#: systemv/cupstestppd.c:3728
 #, c-format
 msgid ""
 "      %s  \"%s %s\" conflicts with \"%s %s\"\n"
@@ -425,7 +425,7 @@ msgstr ""
 msgid "      %s  %s %s does not exist."
 msgstr ""
 
-#: systemv/cupstestppd.c:3884
+#: systemv/cupstestppd.c:3885
 #, c-format
 msgid "      %s  %s file \"%s\" has the wrong capitalization."
 msgstr ""
@@ -437,13 +437,13 @@ msgid ""
 "                REF: Page 122, section 5.17"
 msgstr ""
 
-#: systemv/cupstestppd.c:3487 systemv/cupstestppd.c:3536
-#: systemv/cupstestppd.c:3575
+#: systemv/cupstestppd.c:3488 systemv/cupstestppd.c:3537
+#: systemv/cupstestppd.c:3576
 #, c-format
 msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s, choice %s."
 msgstr ""
 
-#: systemv/cupstestppd.c:3441
+#: systemv/cupstestppd.c:3442
 #, c-format
 msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s."
 msgstr ""
@@ -473,7 +473,7 @@ msgstr ""
 msgid "      %s  Bad cupsUIConstraints %s: \"%s\""
 msgstr ""
 
-#: systemv/cupstestppd.c:3391
+#: systemv/cupstestppd.c:3392
 #, c-format
 msgid "      %s  Bad language \"%s\"."
 msgstr ""
@@ -510,12 +510,12 @@ msgstr ""
 msgid "      %s  Empty cupsUIConstraints %s"
 msgstr ""
 
-#: systemv/cupstestppd.c:3519 systemv/cupstestppd.c:3559
+#: systemv/cupstestppd.c:3520 systemv/cupstestppd.c:3560
 #, c-format
 msgid "      %s  Missing \"%s\" translation string for option %s, choice %s."
 msgstr ""
 
-#: systemv/cupstestppd.c:3427
+#: systemv/cupstestppd.c:3428
 #, c-format
 msgid "      %s  Missing \"%s\" translation string for option %s."
 msgstr ""
@@ -568,7 +568,7 @@ msgstr ""
 msgid "      %s  Missing option %s in cupsUIConstraints %s: \"%s\""
 msgstr ""
 
-#: systemv/cupstestppd.c:3613
+#: systemv/cupstestppd.c:3614
 #, c-format
 msgid "      %s  No base translation \"%s\" is included in file."
 msgstr ""
@@ -590,12 +590,12 @@ msgstr ""
 msgid "      %s  Size \"%s\" has unexpected dimensions (%gx%g)."
 msgstr ""
 
-#: systemv/cupstestppd.c:3332
+#: systemv/cupstestppd.c:3333
 #, c-format
 msgid "      %s  Size \"%s\" should be \"%s\"."
 msgstr ""
 
-#: systemv/cupstestppd.c:3292
+#: systemv/cupstestppd.c:3293
 #, c-format
 msgid "      %s  Size \"%s\" should be the Adobe standard name \"%s\"."
 msgstr ""
@@ -712,7 +712,7 @@ msgid ""
 "                REF: Page 84, section 5.9"
 msgstr ""
 
-#: systemv/cupstestppd.c:3754 systemv/cupstestppd.c:3776
+#: systemv/cupstestppd.c:3755 systemv/cupstestppd.c:3777
 #, c-format
 msgid "      **FAIL**  Default option code cannot be interpreted: %s"
 msgstr ""
@@ -1007,15 +1007,15 @@ msgstr ""
 msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
 msgstr ""
 
-#: test/ipptool.c:4404
+#: test/ipptool.c:4446
 msgid "  -4                      Connect using IPv4."
 msgstr ""
 
-#: test/ipptool.c:4405
+#: test/ipptool.c:4447
 msgid "  -6                      Connect using IPv6."
 msgstr ""
 
-#: test/ipptool.c:4406
+#: test/ipptool.c:4448
 msgid "  -C                      Send requests using chunking (default)."
 msgstr ""
 
@@ -1031,11 +1031,11 @@ msgstr ""
 msgid "  -E                      Encrypt the connection."
 msgstr ""
 
-#: test/ipptool.c:4408
+#: test/ipptool.c:4450
 msgid "  -E                      Test with HTTP Upgrade to TLS."
 msgstr ""
 
-#: scheduler/main.c:2021
+#: scheduler/main.c:1988
 msgid "  -F                      Run in the foreground but detach from console."
 msgstr ""
 
@@ -1043,7 +1043,7 @@ msgstr ""
 msgid "  -H samba-server         Use the named SAMBA server."
 msgstr ""
 
-#: test/ipptool.c:4410
+#: test/ipptool.c:4452
 msgid "  -I                      Ignore errors."
 msgstr ""
 
@@ -1051,11 +1051,11 @@ msgstr ""
 msgid "  -I include-dir          Add include directory to search path."
 msgstr ""
 
-#: systemv/cupstestppd.c:3799
+#: systemv/cupstestppd.c:3800
 msgid "  -I {filename,filters,none,profiles}"
 msgstr ""
 
-#: test/ipptool.c:4411
+#: test/ipptool.c:4453
 msgid "  -L                      Send requests using content-length."
 msgstr ""
 
@@ -1063,15 +1063,15 @@ msgstr ""
 msgid "  -P filename.ppd         Set PPD file."
 msgstr ""
 
-#: systemv/cupstestppd.c:3801
+#: systemv/cupstestppd.c:3802
 msgid "  -R root-directory       Set alternate root."
 msgstr ""
 
-#: test/ipptool.c:4413
+#: test/ipptool.c:4455
 msgid "  -S                      Test with SSL encryption."
 msgstr ""
 
-#: test/ipptool.c:4415
+#: test/ipptool.c:4457
 msgid "  -T seconds              Set the receive/send timeout in seconds."
 msgstr ""
 
@@ -1079,15 +1079,15 @@ msgstr ""
 msgid "  -U username             Specify username."
 msgstr ""
 
-#: test/ipptool.c:4417
+#: test/ipptool.c:4459
 msgid "  -V version              Set default IPP version."
 msgstr ""
 
-#: systemv/cupstestppd.c:3802
+#: systemv/cupstestppd.c:3803
 msgid "  -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,translations}"
 msgstr ""
 
-#: test/ipptool.c:4419
+#: test/ipptool.c:4461
 msgid "  -X                      Produce XML plist instead of plain text."
 msgstr ""
 
@@ -1099,11 +1099,11 @@ msgstr ""
 msgid "  -c catalog.po           Load the specified message catalog."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1435 scheduler/main.c:2019
+#: scheduler/cupsfilter.c:1435 scheduler/main.c:1986
 msgid "  -c cupsd.conf           Set cupsd.conf file to use."
 msgstr ""
 
-#: test/ipptool.c:4421
+#: test/ipptool.c:4463
 msgid "  -d name=value           Set named variable to value."
 msgstr ""
 
@@ -1119,15 +1119,15 @@ msgstr ""
 msgid "  -e                      Use every filter from the PPD file."
 msgstr ""
 
-#: scheduler/main.c:2020
+#: scheduler/main.c:1987
 msgid "  -f                      Run in the foreground."
 msgstr ""
 
-#: test/ipptool.c:4423
+#: test/ipptool.c:4465
 msgid "  -f filename             Set default request filename."
 msgstr ""
 
-#: scheduler/main.c:2023
+#: scheduler/main.c:1990
 msgid "  -h                      Show this usage message."
 msgstr ""
 
@@ -1139,7 +1139,7 @@ msgstr ""
 msgid "  -i mime/type            Set input MIME type (otherwise auto-typed)."
 msgstr ""
 
-#: test/ipptool.c:4425
+#: test/ipptool.c:4467
 msgid "  -i seconds              Repeat the last file with the given time interval."
 msgstr ""
 
@@ -1147,7 +1147,7 @@ msgstr ""
 msgid "  -j job-id[,N]           Filter file N from the specified job (default is file 1)."
 msgstr ""
 
-#: scheduler/main.c:2024
+#: scheduler/main.c:1991
 msgid "  -l                      Run cupsd from launchd(8)."
 msgstr ""
 
@@ -1167,7 +1167,7 @@ msgstr ""
 msgid "  -n copies               Set number of copies."
 msgstr ""
 
-#: test/ipptool.c:4427
+#: test/ipptool.c:4469
 msgid "  -n count                Repeat the last file the given number of times."
 msgstr ""
 
@@ -1187,15 +1187,15 @@ msgstr ""
 msgid "  -p filename.ppd         Set PPD file."
 msgstr ""
 
-#: systemv/cupstestppd.c:3806 test/ipptool.c:4429
+#: systemv/cupstestppd.c:3807 test/ipptool.c:4471
 msgid "  -q                      Run silently."
 msgstr ""
 
-#: systemv/cupstestppd.c:3807
+#: systemv/cupstestppd.c:3808
 msgid "  -r                      Use 'relaxed' open mode."
 msgstr ""
 
-#: test/ipptool.c:4430
+#: test/ipptool.c:4472
 msgid "  -t                      Produce a test report."
 msgstr ""
 
@@ -1203,7 +1203,7 @@ msgstr ""
 msgid "  -t                      Test PPDs instead of generating them."
 msgstr ""
 
-#: scheduler/main.c:2025
+#: scheduler/main.c:1992
 msgid "  -t                      Test the configuration file."
 msgstr ""
 
@@ -1215,12 +1215,12 @@ msgstr ""
 msgid "  -u                      Remove the PPD file when finished."
 msgstr ""
 
-#: systemv/cupsaddsmb.c:291 systemv/cupstestppd.c:3808 test/ipptool.c:4431
+#: systemv/cupsaddsmb.c:291 systemv/cupstestppd.c:3809 test/ipptool.c:4473
 #: ppdc/ppdc.cxx:452 ppdc/ppdpo.cxx:259
 msgid "  -v                      Be verbose."
 msgstr ""
 
-#: systemv/cupstestppd.c:3809
+#: systemv/cupstestppd.c:3810
 msgid "  -vv                     Be very verbose."
 msgstr ""
 
@@ -1276,12 +1276,12 @@ msgstr ""
 #: systemv/cupstestppd.c:3037 systemv/cupstestppd.c:3102
 #: systemv/cupstestppd.c:3117 systemv/cupstestppd.c:3156
 #: systemv/cupstestppd.c:3176 systemv/cupstestppd.c:3190
-#: systemv/cupstestppd.c:3387 systemv/cupstestppd.c:3423
-#: systemv/cupstestppd.c:3437 systemv/cupstestppd.c:3483
-#: systemv/cupstestppd.c:3515 systemv/cupstestppd.c:3532
-#: systemv/cupstestppd.c:3555 systemv/cupstestppd.c:3571
-#: systemv/cupstestppd.c:3609 systemv/cupstestppd.c:3750
-#: systemv/cupstestppd.c:3772 systemv/cupstestppd.c:3880
+#: systemv/cupstestppd.c:3388 systemv/cupstestppd.c:3424
+#: systemv/cupstestppd.c:3438 systemv/cupstestppd.c:3484
+#: systemv/cupstestppd.c:3516 systemv/cupstestppd.c:3533
+#: systemv/cupstestppd.c:3556 systemv/cupstestppd.c:3572
+#: systemv/cupstestppd.c:3610 systemv/cupstestppd.c:3751
+#: systemv/cupstestppd.c:3773 systemv/cupstestppd.c:3881
 msgid " FAIL"
 msgstr ""
 
@@ -1289,22 +1289,22 @@ msgstr ""
 msgid " PASS"
 msgstr ""
 
-#: berkeley/lpq.c:560
+#: berkeley/lpq.c:564
 #, c-format
 msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
 msgstr ""
 
-#: berkeley/lpq.c:565
+#: berkeley/lpq.c:569
 #, c-format
 msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
 msgstr ""
 
-#: systemv/lpstat.c:750
+#: systemv/lpstat.c:707
 #, c-format
 msgid "%s accepting requests since %s"
 msgstr ""
 
-#: scheduler/ipp.c:10045
+#: scheduler/ipp.c:10106
 #, c-format
 msgid "%s cannot be changed."
 msgstr ""
@@ -1314,28 +1314,28 @@ msgstr ""
 msgid "%s is not implemented by the CUPS version of lpc."
 msgstr ""
 
-#: berkeley/lpq.c:651
+#: berkeley/lpq.c:655
 #, c-format
 msgid "%s is not ready"
 msgstr ""
 
-#: berkeley/lpq.c:644
+#: berkeley/lpq.c:648
 #, c-format
 msgid "%s is ready"
 msgstr ""
 
-#: berkeley/lpq.c:647
+#: berkeley/lpq.c:651
 #, c-format
 msgid "%s is ready and printing"
 msgstr ""
 
 #: filter/rastertoepson.c:985 filter/rastertohp.c:711
-#: filter/rastertolabel.c:1134
+#: filter/rastertolabel.c:1123
 #, c-format
 msgid "%s job-id user title copies options [file]"
 msgstr ""
 
-#: systemv/lpstat.c:754
+#: systemv/lpstat.c:711
 #, c-format
 msgid "%s not accepting requests since %s -"
 msgstr ""
@@ -1345,17 +1345,17 @@ msgstr ""
 msgid "%s not supported."
 msgstr ""
 
-#: systemv/lpstat.c:765
+#: systemv/lpstat.c:722
 #, c-format
 msgid "%s/%s accepting requests since %s"
 msgstr ""
 
-#: systemv/lpstat.c:770
+#: systemv/lpstat.c:727
 #, c-format
 msgid "%s/%s not accepting requests since %s -"
 msgstr ""
 
-#: berkeley/lpq.c:552
+#: berkeley/lpq.c:556
 #, c-format
 msgid "%s: %-33.33s [job %d localhost]"
 msgstr ""
@@ -1424,11 +1424,6 @@ msgstr ""
 msgid "%s: Error - expected destination after \"-P\" option."
 msgstr ""
 
-#: systemv/lpstat.c:231
-#, c-format
-msgid "%s: Error - expected destination after \"-b\" option."
-msgstr ""
-
 #: systemv/lp.c:138
 #, c-format
 msgid "%s: Error - expected destination after \"-d\" option."
@@ -1450,7 +1445,7 @@ msgid "%s: Error - expected hostname after \"-H\" option."
 msgstr ""
 
 #: berkeley/lpq.c:180 berkeley/lprm.c:123 systemv/cancel.c:124
-#: systemv/cupsaccept.c:123 systemv/lp.c:189 systemv/lpstat.c:291
+#: systemv/cupsaccept.c:123 systemv/lp.c:189 systemv/lpstat.c:259
 #, c-format
 msgid "%s: Error - expected hostname after \"-h\" option."
 msgstr ""
@@ -1553,7 +1548,7 @@ msgid "%s: Error - unknown destination \"%s/%s\"."
 msgstr ""
 
 #: berkeley/lpr.c:274 berkeley/lprm.c:139 systemv/cancel.c:156
-#: systemv/cupsaccept.c:164 systemv/lp.c:496 systemv/lpstat.c:452
+#: systemv/cupsaccept.c:164 systemv/lp.c:496 systemv/lpstat.c:409
 #, c-format
 msgid "%s: Error - unknown option \"%c\"."
 msgstr ""
@@ -1568,7 +1563,7 @@ msgstr ""
 msgid "%s: Expected job ID after \"-i\" option."
 msgstr ""
 
-#: systemv/lpstat.c:504 systemv/lpstat.c:543
+#: systemv/lpstat.c:461 systemv/lpstat.c:500
 #, c-format
 msgid "%s: Invalid destination name in list \"%s\"."
 msgstr ""
@@ -1632,7 +1627,7 @@ msgstr ""
 msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"."
 msgstr ""
 
-#: berkeley/lpq.c:153 systemv/lpstat.c:558
+#: berkeley/lpq.c:153 systemv/lpstat.c:515
 #, c-format
 msgid "%s: Unknown destination \"%s\"."
 msgstr ""
@@ -2481,7 +2476,7 @@ msgstr ""
 msgid "A Samba username is required to export printer drivers"
 msgstr ""
 
-#: scheduler/ipp.c:2283
+#: scheduler/ipp.c:2341
 #, c-format
 msgid "A class named \"%s\" already exists."
 msgstr ""
@@ -2631,7 +2626,7 @@ msgstr ""
 msgid "Accept Jobs"
 msgstr ""
 
-#: cups/http-support.c:1284
+#: cups/http-support.c:1285
 msgid "Accepted"
 msgstr ""
 
@@ -2660,7 +2655,7 @@ msgstr ""
 msgid "Always"
 msgstr ""
 
-#: backend/socket.c:129
+#: backend/socket.c:130
 msgid "AppSocket/HP JetDirect"
 msgstr ""
 
@@ -2726,7 +2721,12 @@ msgstr ""
 msgid "B9"
 msgstr ""
 
-#: cups/dest.c:1680
+#: scheduler/ipp.c:11032
+#, c-format
+msgid "Bad 'document-format' value \"%s\"."
+msgstr ""
+
+#: cups/dest.c:1683
 msgid "Bad NULL dests pointer"
 msgstr ""
 
@@ -2746,16 +2746,16 @@ msgstr ""
 #: cups/ppd-cache.c:239 cups/ppd-cache.c:255 cups/ppd-cache.c:271
 #: cups/ppd-cache.c:280 cups/ppd-cache.c:288 cups/ppd-cache.c:305
 #: cups/ppd-cache.c:313 cups/ppd-cache.c:328 cups/ppd-cache.c:336
-#: cups/ppd-cache.c:354 cups/ppd-cache.c:366 cups/ppd-cache.c:381
-#: cups/ppd-cache.c:393 cups/ppd-cache.c:415 cups/ppd-cache.c:423
-#: cups/ppd-cache.c:441 cups/ppd-cache.c:449 cups/ppd-cache.c:464
-#: cups/ppd-cache.c:472 cups/ppd-cache.c:490 cups/ppd-cache.c:498
-#: cups/ppd-cache.c:525 cups/ppd-cache.c:571 cups/ppd-cache.c:579
-#: cups/ppd-cache.c:587
+#: cups/ppd-cache.c:357 cups/ppd-cache.c:369 cups/ppd-cache.c:384
+#: cups/ppd-cache.c:396 cups/ppd-cache.c:418 cups/ppd-cache.c:426
+#: cups/ppd-cache.c:444 cups/ppd-cache.c:452 cups/ppd-cache.c:467
+#: cups/ppd-cache.c:475 cups/ppd-cache.c:493 cups/ppd-cache.c:501
+#: cups/ppd-cache.c:528 cups/ppd-cache.c:589 cups/ppd-cache.c:597
+#: cups/ppd-cache.c:605
 msgid "Bad PPD cache file."
 msgstr ""
 
-#: cups/http-support.c:1299
+#: cups/http-support.c:1300
 msgid "Bad Request"
 msgstr ""
 
@@ -2767,7 +2767,7 @@ msgstr ""
 msgid "Bad UIConstraints"
 msgstr ""
 
-#: scheduler/ipp.c:1380
+#: scheduler/ipp.c:1438
 #, c-format
 msgid "Bad copies value %d."
 msgstr ""
@@ -2776,23 +2776,22 @@ msgstr ""
 msgid "Bad custom parameter"
 msgstr ""
 
-#: cups/http-support.c:1451 scheduler/ipp.c:2350
+#: cups/http-support.c:1452 scheduler/ipp.c:2408
 #, c-format
 msgid "Bad device-uri \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:2391
+#: scheduler/ipp.c:2449
 #, c-format
 msgid "Bad device-uri scheme \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:8224 scheduler/ipp.c:8240 scheduler/ipp.c:9454
-#: scheduler/ipp.c:10968
+#: scheduler/ipp.c:8284 scheduler/ipp.c:8300 scheduler/ipp.c:9515
 #, c-format
 msgid "Bad document-format \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:9470
+#: scheduler/ipp.c:9531
 #, c-format
 msgid "Bad document-format-default \"%s\"."
 msgstr ""
@@ -2801,42 +2800,42 @@ msgstr ""
 msgid "Bad filename buffer"
 msgstr ""
 
-#: scheduler/ipp.c:10060
+#: scheduler/ipp.c:10121
 msgid "Bad job-priority value."
 msgstr ""
 
-#: scheduler/ipp.c:1410
+#: scheduler/ipp.c:1468
 #, c-format
 msgid "Bad job-sheets value \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:1394
+#: scheduler/ipp.c:1452
 msgid "Bad job-sheets value type."
 msgstr ""
 
-#: scheduler/ipp.c:10090
+#: scheduler/ipp.c:10151
 msgid "Bad job-state value."
 msgstr ""
 
-#: scheduler/ipp.c:2974 scheduler/ipp.c:3426 scheduler/ipp.c:6078
-#: scheduler/ipp.c:6225 scheduler/ipp.c:7658 scheduler/ipp.c:7927
-#: scheduler/ipp.c:8775 scheduler/ipp.c:9001 scheduler/ipp.c:9350
-#: scheduler/ipp.c:9953
+#: scheduler/ipp.c:3032 scheduler/ipp.c:3484 scheduler/ipp.c:6138
+#: scheduler/ipp.c:6285 scheduler/ipp.c:7718 scheduler/ipp.c:7987
+#: scheduler/ipp.c:8836 scheduler/ipp.c:9062 scheduler/ipp.c:9411
+#: scheduler/ipp.c:10014
 #, c-format
 msgid "Bad job-uri \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:2049 scheduler/ipp.c:5622
+#: scheduler/ipp.c:2107 scheduler/ipp.c:5682
 #, c-format
 msgid "Bad notify-pull-method \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:2013 scheduler/ipp.c:5586
+#: scheduler/ipp.c:2071 scheduler/ipp.c:5646
 #, c-format
 msgid "Bad notify-recipient-uri \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:1426
+#: scheduler/ipp.c:1484
 #, c-format
 msgid "Bad number-up value %d."
 msgstr ""
@@ -2846,21 +2845,21 @@ msgstr ""
 msgid "Bad option + choice on line %d."
 msgstr ""
 
-#: scheduler/ipp.c:1443
+#: scheduler/ipp.c:1501
 #, c-format
 msgid "Bad page-ranges values %d-%d."
 msgstr ""
 
-#: scheduler/ipp.c:2434
+#: scheduler/ipp.c:2492
 #, c-format
 msgid "Bad port-monitor \"%s\"."
 msgstr ""
 
-#: cups/dest.c:676 cups/dest.c:1333
+#: cups/dest.c:677 cups/dest.c:1334
 msgid "Bad printer URI."
 msgstr ""
 
-#: scheduler/ipp.c:2495
+#: scheduler/ipp.c:2553
 #, c-format
 msgid "Bad printer-state value %d."
 msgstr ""
@@ -2891,7 +2890,7 @@ msgstr ""
 msgid "Bond Paper"
 msgstr ""
 
-#: backend/usb-darwin.c:1846
+#: backend/usb-darwin.c:1875
 #, c-format
 msgid "Boolean expected for waiteof option \"%s\"."
 msgstr ""
@@ -2912,11 +2911,11 @@ msgstr ""
 msgid "Cancel RSS Subscription"
 msgstr ""
 
-#: backend/ipp.c:1921
+#: backend/ipp.c:2016
 msgid "Canceling print job."
 msgstr ""
 
-#: scheduler/ipp.c:2475
+#: scheduler/ipp.c:2533
 msgid "Cannot share a remote Kerberized printer."
 msgstr ""
 
@@ -2929,7 +2928,7 @@ msgstr ""
 msgid "Change Settings"
 msgstr ""
 
-#: scheduler/ipp.c:2061 scheduler/ipp.c:5634
+#: scheduler/ipp.c:2119 scheduler/ipp.c:5694
 #, c-format
 msgid "Character set \"%s\" not supported."
 msgstr ""
@@ -2942,7 +2941,7 @@ msgstr ""
 msgid "Clean Print Heads"
 msgstr ""
 
-#: scheduler/ipp.c:3878
+#: scheduler/ipp.c:3936
 msgid "Close-Job doesn't support the job-uri attribute."
 msgstr ""
 
@@ -2965,15 +2964,15 @@ msgstr ""
 msgid "Community name uses indefinite length"
 msgstr ""
 
-#: backend/ipp.c:786 backend/lpd.c:871 backend/socket.c:395
+#: backend/ipp.c:820 backend/lpd.c:888 backend/socket.c:409
 msgid "Connected to printer."
 msgstr ""
 
-#: backend/ipp.c:691 backend/lpd.c:694 backend/socket.c:314
+#: backend/ipp.c:725 backend/lpd.c:711 backend/socket.c:328
 msgid "Connecting to printer."
 msgstr ""
 
-#: cups/http-support.c:1272
+#: cups/http-support.c:1273
 msgid "Continue"
 msgstr ""
 
@@ -2981,15 +2980,15 @@ msgstr ""
 msgid "Continuous"
 msgstr ""
 
-#: backend/lpd.c:1020 backend/lpd.c:1152
+#: backend/lpd.c:1037 backend/lpd.c:1169
 msgid "Control file sent successfully."
 msgstr ""
 
-#: backend/ipp.c:1233 backend/lpd.c:464
+#: backend/ipp.c:1271 backend/lpd.c:481
 msgid "Copying print data."
 msgstr ""
 
-#: cups/http-support.c:1281
+#: cups/http-support.c:1282
 msgid "Created"
 msgstr ""
 
@@ -3021,7 +3020,7 @@ msgstr ""
 msgid "Darkness"
 msgstr ""
 
-#: backend/lpd.c:1105
+#: backend/lpd.c:1122
 msgid "Data file sent successfully."
 msgstr ""
 
@@ -3037,7 +3036,7 @@ msgstr ""
 msgid "DeskJet Series"
 msgstr ""
 
-#: scheduler/ipp.c:1346
+#: scheduler/ipp.c:1362
 #, c-format
 msgid "Destination \"%s\" is not accepting jobs."
 msgstr ""
@@ -3086,7 +3085,7 @@ msgstr ""
 msgid "Disabled"
 msgstr ""
 
-#: scheduler/ipp.c:6127
+#: scheduler/ipp.c:6187
 #, c-format
 msgid "Document #%d does not exist in job #%d."
 msgstr ""
@@ -3415,7 +3414,7 @@ msgstr ""
 msgid "Executive"
 msgstr ""
 
-#: cups/http-support.c:1327
+#: cups/http-support.c:1328
 msgid "Expectation Failed"
 msgstr ""
 
@@ -3474,13 +3473,13 @@ msgstr ""
 msgid "File Folder "
 msgstr ""
 
-#: scheduler/ipp.c:2370
+#: scheduler/ipp.c:2428
 #, c-format
 msgid "File device URIs have been disabled. To enable, see the FileDevice directive in \"%s/cupsd.conf\"."
 msgstr ""
 
 #: filter/rastertoepson.c:1117 filter/rastertohp.c:845
-#: filter/rastertolabel.c:1273
+#: filter/rastertolabel.c:1262
 #, c-format
 msgid "Finished page %d."
 msgstr ""
@@ -3489,7 +3488,7 @@ msgstr ""
 msgid "Folio"
 msgstr ""
 
-#: cups/http-support.c:1306
+#: cups/http-support.c:1307
 msgid "Forbidden"
 msgstr ""
 
@@ -3509,10 +3508,10 @@ msgstr ""
 msgid "Glossy Paper"
 msgstr ""
 
-#: scheduler/ipp.c:2952 scheduler/ipp.c:3352 scheduler/ipp.c:3890
-#: scheduler/ipp.c:6056 scheduler/ipp.c:6203 scheduler/ipp.c:7635
-#: scheduler/ipp.c:8753 scheduler/ipp.c:8979 scheduler/ipp.c:9328
-#: scheduler/ipp.c:9931
+#: scheduler/ipp.c:3010 scheduler/ipp.c:3410 scheduler/ipp.c:3948
+#: scheduler/ipp.c:6116 scheduler/ipp.c:6263 scheduler/ipp.c:7695
+#: scheduler/ipp.c:8814 scheduler/ipp.c:9040 scheduler/ipp.c:9389
+#: scheduler/ipp.c:9992
 msgid "Got a printer-uri attribute but no job-id."
 msgstr ""
 
@@ -3532,83 +3531,111 @@ msgstr ""
 msgid "Help file not in index."
 msgstr ""
 
-#: cups/ipp.c:2687 cups/ipp.c:2714 cups/ipp.c:2737
+#: cups/ipp.c:2701 cups/ipp.c:2728 cups/ipp.c:2751
 msgid "IPP 1setOf attribute with incompatible value tags."
 msgstr ""
 
-#: cups/ipp.c:2650
+#: cups/ipp.c:2664
 msgid "IPP attribute has no name."
 msgstr ""
 
-#: cups/ipp.c:5487
+#: cups/ipp.c:5579
 msgid "IPP attribute is not a member of the message."
 msgstr ""
 
-#: cups/ipp.c:3083
+#: cups/ipp.c:3140
 msgid "IPP begCollection value not 0 bytes."
 msgstr ""
 
-#: cups/ipp.c:2873
+#: cups/ipp.c:2887
 msgid "IPP boolean value not 1 byte."
 msgstr ""
 
-#: cups/ipp.c:2934
+#: cups/ipp.c:2958
 msgid "IPP date value not 11 bytes."
 msgstr ""
 
-#: cups/ipp.c:3104
+#: cups/ipp.c:3161
 msgid "IPP endCollection value not 0 bytes."
 msgstr ""
 
-#: cups/ipp.c:2848
+#: cups/ipp.c:2862
 msgid "IPP enum value not 4 bytes."
 msgstr ""
 
-#: cups/ipp.c:2579
+#: cups/ipp.c:2593
 msgid "IPP extension tag larger than 0x7FFFFFFF."
 msgstr ""
 
-#: cups/ipp.c:2845
+#: cups/ipp.c:2859
 msgid "IPP integer value not 4 bytes."
 msgstr ""
 
-#: cups/ipp.c:3045
+#: cups/ipp.c:3084
 msgid "IPP language length overflows value."
 msgstr ""
 
-#: cups/ipp.c:2764
+#: cups/ipp.c:3093
+msgid "IPP language length too large."
+msgstr ""
+
+#: cups/ipp.c:2778
 msgid "IPP member name is not empty."
 msgstr ""
 
-#: cups/ipp.c:3122
+#: cups/ipp.c:3187
 msgid "IPP memberName value is empty."
 msgstr ""
 
-#: cups/ipp.c:2633
+#: cups/ipp.c:3179
+msgid "IPP memberName with no attribute."
+msgstr ""
+
+#: cups/ipp.c:2647
 msgid "IPP name larger than 32767 bytes."
 msgstr ""
 
-#: cups/ipp.c:3011
+#: cups/ipp.c:3035
 msgid "IPP nameWithLanguage value less than minimum 4 bytes."
 msgstr ""
 
-#: cups/ipp.c:2979
+#: cups/ipp.c:3050
+msgid "IPP nameWithLanguage value more than maximum 1090 bytes."
+msgstr ""
+
+#: cups/ipp.c:3217
+msgid "IPP octetString length too large."
+msgstr ""
+
+#: cups/ipp.c:3003
 msgid "IPP rangeOfInteger value not 8 bytes."
 msgstr ""
 
-#: cups/ipp.c:2952
+#: cups/ipp.c:2976
 msgid "IPP resolution value not 9 bytes."
 msgstr ""
 
-#: cups/ipp.c:3063
+#: cups/ipp.c:3111
 msgid "IPP string length overflows value."
 msgstr ""
 
-#: cups/ipp.c:3007
+#: cups/ipp.c:2933
+msgid "IPP string value too large."
+msgstr ""
+
+#: cups/ipp.c:3119
+msgid "IPP text length too large."
+msgstr ""
+
+#: cups/ipp.c:3031
 msgid "IPP textWithLanguage value less than minimum 4 bytes."
 msgstr ""
 
-#: cups/ipp.c:2831
+#: cups/ipp.c:3046
+msgid "IPP textWithLanguage value more than maximum 1090 bytes."
+msgstr ""
+
+#: cups/ipp.c:2845
 msgid "IPP value larger than 32767 bytes."
 msgstr ""
 
@@ -3652,7 +3679,7 @@ msgstr ""
 msgid "Intellitech"
 msgstr ""
 
-#: cups/http-support.c:1333
+#: cups/http-support.c:1334
 msgid "Internal Server Error"
 msgstr ""
 
@@ -3668,11 +3695,11 @@ msgstr ""
 msgid "Internet Postage 3-Part"
 msgstr ""
 
-#: backend/ipp.c:307
+#: backend/ipp.c:328
 msgid "Internet Printing Protocol"
 msgstr ""
 
-#: cups/dest-options.c:839
+#: cups/dest-options.c:837
 msgid "Invalid media size."
 msgstr ""
 
@@ -3741,52 +3768,52 @@ msgstr ""
 msgid "JIS B9"
 msgstr ""
 
-#: scheduler/ipp.c:9051
+#: scheduler/ipp.c:9112
 #, c-format
 msgid "Job #%d cannot be restarted - no files."
 msgstr ""
 
-#: scheduler/ipp.c:2992 scheduler/ipp.c:3222 scheduler/ipp.c:3277
-#: scheduler/ipp.c:3454 scheduler/ipp.c:3900 scheduler/ipp.c:5720
-#: scheduler/ipp.c:6096 scheduler/ipp.c:6243 scheduler/ipp.c:6543
-#: scheduler/ipp.c:7482 scheduler/ipp.c:7504 scheduler/ipp.c:7676
-#: scheduler/ipp.c:7901 scheduler/ipp.c:7944 scheduler/ipp.c:8793
-#: scheduler/ipp.c:9019 scheduler/ipp.c:9368 scheduler/ipp.c:9971
+#: scheduler/ipp.c:3050 scheduler/ipp.c:3280 scheduler/ipp.c:3335
+#: scheduler/ipp.c:3512 scheduler/ipp.c:3958 scheduler/ipp.c:5780
+#: scheduler/ipp.c:6156 scheduler/ipp.c:6303 scheduler/ipp.c:6603
+#: scheduler/ipp.c:7542 scheduler/ipp.c:7564 scheduler/ipp.c:7736
+#: scheduler/ipp.c:7961 scheduler/ipp.c:8004 scheduler/ipp.c:8854
+#: scheduler/ipp.c:9080 scheduler/ipp.c:9429 scheduler/ipp.c:10032
 #, c-format
 msgid "Job #%d does not exist."
 msgstr ""
 
-#: scheduler/ipp.c:3486
+#: scheduler/ipp.c:3544
 #, c-format
 msgid "Job #%d is already aborted - can't cancel."
 msgstr ""
 
-#: scheduler/ipp.c:3480
+#: scheduler/ipp.c:3538
 #, c-format
 msgid "Job #%d is already canceled - can't cancel."
 msgstr ""
 
-#: scheduler/ipp.c:3492
+#: scheduler/ipp.c:3550
 #, c-format
 msgid "Job #%d is already completed - can't cancel."
 msgstr ""
 
-#: scheduler/ipp.c:7702 scheduler/ipp.c:7986 scheduler/ipp.c:9986
+#: scheduler/ipp.c:7762 scheduler/ipp.c:8046 scheduler/ipp.c:10047
 #, c-format
 msgid "Job #%d is finished and cannot be altered."
 msgstr ""
 
-#: scheduler/ipp.c:9033
+#: scheduler/ipp.c:9094
 #, c-format
 msgid "Job #%d is not complete."
 msgstr ""
 
-#: scheduler/ipp.c:3007
+#: scheduler/ipp.c:3065
 #, c-format
 msgid "Job #%d is not held for authentication."
 msgstr ""
 
-#: scheduler/ipp.c:8807
+#: scheduler/ipp.c:8868
 #, c-format
 msgid "Job #%d is not held."
 msgstr ""
@@ -3807,7 +3834,7 @@ msgstr ""
 msgid "Job Stopped"
 msgstr ""
 
-#: scheduler/ipp.c:10068
+#: scheduler/ipp.c:10129
 msgid "Job is completed and cannot be changed."
 msgstr ""
 
@@ -3815,11 +3842,11 @@ msgstr ""
 msgid "Job operation failed"
 msgstr ""
 
-#: scheduler/ipp.c:10104 scheduler/ipp.c:10123 scheduler/ipp.c:10134
+#: scheduler/ipp.c:10165 scheduler/ipp.c:10184 scheduler/ipp.c:10195
 msgid "Job state cannot be changed."
 msgstr ""
 
-#: scheduler/ipp.c:8899
+#: scheduler/ipp.c:8960
 msgid "Job subscriptions cannot be renewed."
 msgstr ""
 
@@ -3827,7 +3854,7 @@ msgstr ""
 msgid "Jobs"
 msgstr ""
 
-#: backend/lpd.c:185
+#: backend/lpd.c:186
 msgid "LPD/LPR Host or Printer"
 msgstr ""
 
@@ -3839,7 +3866,7 @@ msgstr ""
 msgid "Label Top"
 msgstr ""
 
-#: scheduler/ipp.c:2070 scheduler/ipp.c:5643
+#: scheduler/ipp.c:2128 scheduler/ipp.c:5703
 #, c-format
 msgid "Language \"%s\" not supported."
 msgstr ""
@@ -3876,7 +3903,7 @@ msgstr ""
 msgid "Long-Edge (Portrait)"
 msgstr ""
 
-#: cups/http-support.c:1558
+#: cups/http-support.c:1560
 msgid "Looking for printer."
 msgstr ""
 
@@ -3920,7 +3947,7 @@ msgstr ""
 msgid "Missing asterisk in column 1"
 msgstr ""
 
-#: scheduler/ipp.c:6119
+#: scheduler/ipp.c:6179
 msgid "Missing document-number attribute."
 msgstr ""
 
@@ -3935,7 +3962,7 @@ msgstr ""
 msgid "Missing form variable"
 msgstr ""
 
-#: scheduler/ipp.c:9422
+#: scheduler/ipp.c:9483
 msgid "Missing last-document attribute in request."
 msgstr ""
 
@@ -3947,7 +3974,7 @@ msgstr ""
 msgid "Missing media-size in media-col."
 msgstr ""
 
-#: scheduler/ipp.c:6673
+#: scheduler/ipp.c:6733
 msgid "Missing notify-subscription-ids attribute."
 msgstr ""
 
@@ -3955,7 +3982,7 @@ msgstr ""
 msgid "Missing option keyword"
 msgstr ""
 
-#: scheduler/ipp.c:3133 scheduler/ipp.c:3158
+#: scheduler/ipp.c:3191 scheduler/ipp.c:3216
 msgid "Missing requesting-user-name attribute."
 msgstr ""
 
@@ -4005,7 +4032,7 @@ msgstr ""
 msgid "Move Job"
 msgstr ""
 
-#: cups/http-support.c:1290
+#: cups/http-support.c:1291
 msgid "Moved Permanently"
 msgstr ""
 
@@ -4037,7 +4064,7 @@ msgstr ""
 msgid "No"
 msgstr ""
 
-#: cups/http-support.c:1287
+#: cups/http-support.c:1288
 msgid "No Content"
 msgstr ""
 
@@ -4053,11 +4080,11 @@ msgstr ""
 msgid "No Windows printer drivers are installed."
 msgstr ""
 
-#: cups/request.c:566 cups/request.c:908
+#: cups/request.c:568 cups/request.c:914
 msgid "No active connection"
 msgstr ""
 
-#: scheduler/ipp.c:3403
+#: scheduler/ipp.c:3461
 #, c-format
 msgid "No active jobs on %s."
 msgstr ""
@@ -4066,7 +4093,7 @@ msgstr ""
 msgid "No attributes in request."
 msgstr ""
 
-#: scheduler/ipp.c:3034
+#: scheduler/ipp.c:3092
 msgid "No authentication information provided."
 msgstr ""
 
@@ -4074,11 +4101,11 @@ msgstr ""
 msgid "No community name"
 msgstr ""
 
-#: scheduler/ipp.c:5919
+#: scheduler/ipp.c:5979
 msgid "No default printer."
 msgstr ""
 
-#: cgi-bin/ipp-var.c:436 scheduler/ipp.c:7248
+#: cgi-bin/ipp-var.c:436 scheduler/ipp.c:7308
 msgid "No destinations added."
 msgstr ""
 
@@ -4094,7 +4121,7 @@ msgstr ""
 msgid "No error-status"
 msgstr ""
 
-#: scheduler/ipp.c:8190 scheduler/ipp.c:9436
+#: scheduler/ipp.c:8250 scheduler/ipp.c:9497
 msgid "No file in print request."
 msgstr ""
 
@@ -4107,7 +4134,7 @@ msgid "No name OID"
 msgstr ""
 
 #: filter/rastertoepson.c:1147 filter/rastertohp.c:876
-#: filter/rastertolabel.c:1302
+#: filter/rastertolabel.c:1291
 msgid "No pages were found."
 msgstr ""
 
@@ -4115,15 +4142,15 @@ msgstr ""
 msgid "No printer name"
 msgstr ""
 
-#: cups/util.c:1801
+#: cups/util.c:1829
 msgid "No printer-uri found"
 msgstr ""
 
-#: cups/util.c:1786
+#: cups/util.c:1814
 msgid "No printer-uri found for class"
 msgstr ""
 
-#: scheduler/ipp.c:6322
+#: scheduler/ipp.c:6382
 msgid "No printer-uri in request."
 msgstr ""
 
@@ -4131,11 +4158,11 @@ msgstr ""
 msgid "No request-id"
 msgstr ""
 
-#: scheduler/ipp.c:5528
+#: scheduler/ipp.c:5588
 msgid "No subscription attributes in request."
 msgstr ""
 
-#: scheduler/ipp.c:7575
+#: scheduler/ipp.c:7635
 msgid "No subscriptions found."
 msgstr ""
 
@@ -4159,11 +4186,11 @@ msgstr ""
 msgid "Normal"
 msgstr ""
 
-#: cups/http-support.c:1309
+#: cups/http-support.c:1310
 msgid "Not Found"
 msgstr ""
 
-#: cups/http-support.c:1321
+#: cups/http-support.c:1322
 msgid "Not Implemented"
 msgstr ""
 
@@ -4171,15 +4198,15 @@ msgstr ""
 msgid "Not Installed"
 msgstr ""
 
-#: cups/http-support.c:1296
+#: cups/http-support.c:1297
 msgid "Not Modified"
 msgstr ""
 
-#: cups/http-support.c:1324
+#: cups/http-support.c:1325
 msgid "Not Supported"
 msgstr ""
 
-#: scheduler/ipp.c:1518 scheduler/ipp.c:10666
+#: scheduler/ipp.c:1576 scheduler/ipp.c:10728
 msgid "Not allowed to print."
 msgstr ""
 
@@ -4191,7 +4218,7 @@ msgstr ""
 msgid "Note: this program only validates the DSC comments, not the PostScript itself."
 msgstr ""
 
-#: cups/http-support.c:1278 cups/ppd.c:338
+#: cups/http-support.c:1279 cups/ppd.c:338
 msgid "OK"
 msgstr ""
 
@@ -4233,9 +4260,9 @@ msgstr ""
 msgid "Options Installed"
 msgstr ""
 
-#: scheduler/cupsfilter.c:1430 scheduler/main.c:2018 systemv/cupsaddsmb.c:284
-#: systemv/cupsctl.c:203 systemv/cupstestdsc.c:429 systemv/cupstestppd.c:3797
-#: test/ipptool.c:4403 ppdc/ppdc.cxx:437 ppdc/ppdhtml.cxx:174
+#: scheduler/cupsfilter.c:1430 scheduler/main.c:1985 systemv/cupsaddsmb.c:284
+#: systemv/cupsctl.c:203 systemv/cupstestdsc.c:429 systemv/cupstestppd.c:3798
+#: test/ipptool.c:4445 ppdc/ppdc.cxx:437 ppdc/ppdhtml.cxx:174
 #: ppdc/ppdi.cxx:130 ppdc/ppdmerge.cxx:369 ppdc/ppdpo.cxx:254
 msgid "Options:"
 msgstr ""
@@ -4244,7 +4271,7 @@ msgstr ""
 msgid "Out of date PPD cache file."
 msgstr ""
 
-#: cups/ppd-cache.c:1381
+#: cups/ppd-cache.c:1416
 msgid "Out of memory."
 msgstr ""
 
@@ -4252,22 +4279,22 @@ msgstr ""
 msgid "Output Mode"
 msgstr ""
 
-#: systemv/lpstat.c:1191 systemv/lpstat.c:1195
+#: systemv/lpstat.c:1148 systemv/lpstat.c:1152
 #, c-format
 msgid "Output for printer %s is sent to %s"
 msgstr ""
 
-#: systemv/lpstat.c:1185
+#: systemv/lpstat.c:1142
 #, c-format
 msgid "Output for printer %s is sent to remote printer %s on %s"
 msgstr ""
 
-#: systemv/lpstat.c:1209 systemv/lpstat.c:1213
+#: systemv/lpstat.c:1166 systemv/lpstat.c:1170
 #, c-format
 msgid "Output for printer %s/%s is sent to %s"
 msgstr ""
 
-#: systemv/lpstat.c:1203
+#: systemv/lpstat.c:1160
 #, c-format
 msgid "Output for printer %s/%s is sent to remote printer %s on %s"
 msgstr ""
@@ -4320,7 +4347,7 @@ msgstr ""
 msgid "ParamCustominTearInterval"
 msgstr ""
 
-#: cups/auth.c:199 cups/auth.c:367
+#: cups/auth.c:206 cups/auth.c:374
 #, c-format
 msgid "Password for %s on %s? "
 msgstr ""
@@ -4382,6 +4409,10 @@ msgstr ""
 msgid "Postcard Long Edge"
 msgstr ""
 
+#: backend/ipp.c:925 backend/ipp.c:933
+msgid "Preparing to print."
+msgstr ""
+
 #: ppdc/sample.c:295
 msgid "Print Density"
 msgstr ""
@@ -4418,31 +4449,22 @@ msgstr ""
 msgid "Print and Tear"
 msgstr ""
 
-#: backend/ipp.c:1537
-#, c-format
-msgid "Print file accepted - job ID %d."
-msgstr ""
-
-#: backend/ipp.c:1527
-msgid "Print file accepted - job ID unknown."
-msgstr ""
-
-#: backend/socket.c:424 backend/usb-unix.c:191
+#: backend/socket.c:438 backend/usb-unix.c:191
 msgid "Print file sent."
 msgstr ""
 
-#: backend/ipp.c:1488
-msgid "Print file was not accepted."
-msgstr ""
-
-#: backend/ipp.c:1895
+#: backend/ipp.c:1990
 msgid "Print job canceled at printer."
 msgstr ""
 
-#: backend/ipp.c:1890
+#: backend/ipp.c:1985
 msgid "Print job too large."
 msgstr ""
 
+#: backend/ipp.c:1543
+msgid "Print job was not accepted."
+msgstr ""
+
 #: cgi-bin/ipp-var.c:1047
 msgid "Printer Added"
 msgstr ""
@@ -4467,7 +4489,7 @@ msgstr ""
 msgid "Printer Settings"
 msgstr ""
 
-#: backend/ipp.c:1893
+#: backend/ipp.c:1988
 msgid "Printer cannot print supplied content."
 msgstr ""
 
@@ -4480,7 +4502,7 @@ msgid "Printers"
 msgstr ""
 
 #: filter/rastertoepson.c:1093 filter/rastertohp.c:817
-#: filter/rastertolabel.c:1249
+#: filter/rastertolabel.c:1238
 #, c-format
 msgid "Printing page %d, %d%% complete."
 msgstr ""
@@ -4493,16 +4515,16 @@ msgstr ""
 msgid "Quarto"
 msgstr ""
 
-#: scheduler/ipp.c:1513 scheduler/ipp.c:10661
+#: scheduler/ipp.c:1571 scheduler/ipp.c:10723
 msgid "Quota limit reached."
 msgstr ""
 
-#: berkeley/lpq.c:515
+#: berkeley/lpq.c:519
 msgid "Rank    Owner   Job     File(s)                         Total Size"
 msgstr ""
 
 #. TRANSLATORS: Pri is job priority.
-#: berkeley/lpq.c:511
+#: berkeley/lpq.c:515
 msgid "Rank   Owner      Pri  Job        Files                       Total Size"
 msgstr ""
 
@@ -4510,12 +4532,12 @@ msgstr ""
 msgid "Reject Jobs"
 msgstr ""
 
-#: backend/lpd.c:1016 backend/lpd.c:1148
+#: backend/lpd.c:1033 backend/lpd.c:1165
 #, c-format
 msgid "Remote host did not accept control file (%d)."
 msgstr ""
 
-#: backend/lpd.c:1101
+#: backend/lpd.c:1118
 #, c-format
 msgid "Remote host did not accept data file (%d)."
 msgstr ""
@@ -4524,7 +4546,7 @@ msgstr ""
 msgid "Reprint After Error"
 msgstr ""
 
-#: cups/http-support.c:1312
+#: cups/http-support.c:1313
 msgid "Request Entity Too Large"
 msgstr ""
 
@@ -4557,15 +4579,15 @@ msgstr ""
 msgid "SEQUENCE uses indefinite length"
 msgstr ""
 
-#: cups/http-support.c:1336
+#: cups/http-support.c:1337
 msgid "SSL/TLS Negotiation Error"
 msgstr ""
 
-#: cups/http-support.c:1293
+#: cups/http-support.c:1294
 msgid "See Other"
 msgstr ""
 
-#: backend/usb-darwin.c:543 backend/usb-libusb.c:273
+#: backend/usb-darwin.c:572 backend/usb-libusb.c:405
 msgid "Sending data to printer."
 msgstr ""
 
@@ -4585,7 +4607,7 @@ msgstr ""
 msgid "Server Stopped"
 msgstr ""
 
-#: cups/http-support.c:1330
+#: cups/http-support.c:1331
 msgid "Service Unavailable"
 msgstr ""
 
@@ -4622,7 +4644,7 @@ msgstr ""
 msgid "Special Paper"
 msgstr ""
 
-#: backend/lpd.c:1057
+#: backend/lpd.c:1074
 #, c-format
 msgid "Spooling job, %.0f%% complete."
 msgstr ""
@@ -4637,7 +4659,7 @@ msgid "Starting Banner"
 msgstr ""
 
 #: filter/rastertoepson.c:1069 filter/rastertohp.c:793
-#: filter/rastertolabel.c:1225
+#: filter/rastertolabel.c:1214
 #, c-format
 msgid "Starting page %d."
 msgstr ""
@@ -4654,8 +4676,8 @@ msgstr ""
 msgid "Stylus Photo Series"
 msgstr ""
 
-#: scheduler/ipp.c:3549 scheduler/ipp.c:6689 scheduler/ipp.c:7388
-#: scheduler/ipp.c:8887
+#: scheduler/ipp.c:3607 scheduler/ipp.c:6749 scheduler/ipp.c:7448
+#: scheduler/ipp.c:8948
 #, c-format
 msgid "Subscription #%d does not exist."
 msgstr ""
@@ -4672,7 +4694,7 @@ msgstr ""
 msgid "Super B/A3"
 msgstr ""
 
-#: cups/http-support.c:1275
+#: cups/http-support.c:1276
 msgid "Switching Protocols"
 msgstr ""
 
@@ -4700,29 +4722,39 @@ msgstr ""
 msgid "Tear-Off Adjust Position"
 msgstr ""
 
-#: scheduler/ipp.c:6393 scheduler/ipp.c:6471 scheduler/ipp.c:6487
-#: scheduler/ipp.c:6505
+#: scheduler/ipp.c:1407
+#, c-format
+msgid "The \"%s\" attribute is required for print jobs."
+msgstr ""
+
+#: scheduler/ipp.c:6453 scheduler/ipp.c:6531 scheduler/ipp.c:6547
+#: scheduler/ipp.c:6565
 #, c-format
 msgid "The %s attribute cannot be provided with job-ids."
 msgstr ""
 
-#: scheduler/ipp.c:5118
+#: scheduler/ipp.c:1383
+#, c-format
+msgid "The '%s' Job Description attribute cannot be supplied in a job creation request."
+msgstr ""
+
+#: scheduler/ipp.c:5176
 #, c-format
 msgid "The '%s' operation attribute cannot be supplied in a Create-Job request."
 msgstr ""
 
-#: scheduler/ipp.c:6919
+#: scheduler/ipp.c:6979
 #, c-format
 msgid "The PPD file \"%s\" could not be found."
 msgstr ""
 
-#: scheduler/ipp.c:6906
+#: scheduler/ipp.c:6966
 #, c-format
 msgid "The PPD file \"%s\" could not be opened: %s"
 msgstr ""
 
 #: filter/rastertoepson.c:1038 filter/rastertohp.c:764
-#: filter/rastertolabel.c:1189
+#: filter/rastertolabel.c:1178
 msgid "The PPD file could not be opened."
 msgstr ""
 
@@ -4746,11 +4778,11 @@ msgstr ""
 msgid "The fuser's temperature is low."
 msgstr ""
 
-#: scheduler/ipp.c:2097
+#: scheduler/ipp.c:2155
 msgid "The notify-lease-duration attribute cannot be used with job subscriptions."
 msgstr ""
 
-#: scheduler/ipp.c:2080 scheduler/ipp.c:5653
+#: scheduler/ipp.c:2138 scheduler/ipp.c:5713
 #, c-format
 msgid "The notify-user-data value is too large (%d > 63 octets)."
 msgstr ""
@@ -4791,22 +4823,17 @@ msgstr ""
 msgid "The paper tray needs to be filled."
 msgstr ""
 
-#: backend/ipp.c:909
-msgid "The printer URI is incorrect or no longer exists."
+#: backend/ipp.c:945
+msgid "The printer configuration is incorrect or the printer no longer exists."
 msgstr ""
 
-#: backend/lpd.c:619 backend/lpd.c:1009 backend/lpd.c:1091 backend/lpd.c:1141
+#: backend/lpd.c:636 backend/lpd.c:1026 backend/lpd.c:1108 backend/lpd.c:1158
 msgid "The printer did not respond."
 msgstr ""
 
-#: backend/ipp.c:892 backend/ipp.c:899
-#, c-format
-msgid "The printer does not support IPP/%d.%d, trying IPP/%s."
-msgstr ""
-
-#: backend/ipp.c:757 backend/ipp.c:874 backend/ipp.c:980 backend/ipp.c:1313
-#: backend/ipp.c:1464 backend/lpd.c:828 backend/socket.c:374
-#: backend/usb-unix.c:131 backend/usb-unix.c:424 backend/usb-unix.c:507
+#: backend/ipp.c:791 backend/ipp.c:908 backend/ipp.c:1018 backend/ipp.c:1361
+#: backend/ipp.c:1516 backend/lpd.c:845 backend/socket.c:388
+#: backend/usb-unix.c:131 backend/usb-unix.c:423 backend/usb-unix.c:506
 msgid "The printer is in use."
 msgstr ""
 
@@ -4814,8 +4841,8 @@ msgstr ""
 msgid "The printer is not connected."
 msgstr ""
 
-#: backend/ipp.c:735 backend/ipp.c:768 backend/ipp.c:870 backend/lpd.c:807
-#: backend/lpd.c:848 backend/socket.c:353 backend/socket.c:386
+#: backend/ipp.c:769 backend/ipp.c:802 backend/ipp.c:904 backend/lpd.c:824
+#: backend/lpd.c:865 backend/socket.c:367 backend/socket.c:400
 msgid "The printer is not responding."
 msgstr ""
 
@@ -4823,11 +4850,11 @@ msgstr ""
 msgid "The printer is now connected."
 msgstr ""
 
-#: backend/usb-darwin.c:1286
+#: backend/usb-darwin.c:1315
 msgid "The printer is now online."
 msgstr ""
 
-#: backend/usb-darwin.c:1307
+#: backend/usb-darwin.c:1336
 msgid "The printer is offline."
 msgstr ""
 
@@ -4839,7 +4866,7 @@ msgstr ""
 msgid "The printer is running low on toner."
 msgstr ""
 
-#: backend/ipp.c:750 backend/lpd.c:821 backend/socket.c:367
+#: backend/ipp.c:784 backend/lpd.c:838 backend/socket.c:381
 msgid "The printer is unreachable at this time."
 msgstr ""
 
@@ -4851,7 +4878,7 @@ msgstr ""
 msgid "The printer may be out of toner."
 msgstr ""
 
-#: backend/ipp.c:744 backend/lpd.c:815 backend/socket.c:361
+#: backend/ipp.c:778 backend/lpd.c:832 backend/socket.c:375
 msgid "The printer may not exist or is unavailable at this time."
 msgstr ""
 
@@ -4859,18 +4886,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:876 scheduler/ipp.c:1136 scheduler/ipp.c:3198
-#: scheduler/ipp.c:3369 scheduler/ipp.c:5101 scheduler/ipp.c:5487
-#: scheduler/ipp.c:5801 scheduler/ipp.c:6359 scheduler/ipp.c:7124
-#: scheduler/ipp.c:7180 scheduler/ipp.c:7494 scheduler/ipp.c:7760
-#: scheduler/ipp.c:7849 scheduler/ipp.c:7882 scheduler/ipp.c:8205
-#: scheduler/ipp.c:8598 scheduler/ipp.c:8679 scheduler/ipp.c:9840
-#: scheduler/ipp.c:10294 scheduler/ipp.c:10624 scheduler/ipp.c:10706
-#: scheduler/ipp.c:10998
+#: scheduler/ipp.c:876 scheduler/ipp.c:1136 scheduler/ipp.c:3256
+#: scheduler/ipp.c:3427 scheduler/ipp.c:5159 scheduler/ipp.c:5547
+#: scheduler/ipp.c:5861 scheduler/ipp.c:6419 scheduler/ipp.c:7184
+#: scheduler/ipp.c:7240 scheduler/ipp.c:7554 scheduler/ipp.c:7820
+#: scheduler/ipp.c:7909 scheduler/ipp.c:7942 scheduler/ipp.c:8265
+#: scheduler/ipp.c:8658 scheduler/ipp.c:8740 scheduler/ipp.c:9901
+#: scheduler/ipp.c:10355 scheduler/ipp.c:10686 scheduler/ipp.c:10768
+#: scheduler/ipp.c:11142
 msgid "The printer or class does not exist."
 msgstr ""
 
-#: scheduler/ipp.c:1304
+#: scheduler/ipp.c:1320
 msgid "The printer or class is not shared."
 msgstr ""
 
@@ -4894,12 +4921,12 @@ msgstr ""
 msgid "The printer's waste bin is full."
 msgstr ""
 
-#: scheduler/ipp.c:982 scheduler/ipp.c:2261
+#: scheduler/ipp.c:982 scheduler/ipp.c:2319
 #, c-format
 msgid "The printer-uri \"%s\" contains invalid characters."
 msgstr ""
 
-#: scheduler/ipp.c:3175
+#: scheduler/ipp.c:3233
 msgid "The printer-uri attribute is required."
 msgstr ""
 
@@ -4907,7 +4934,7 @@ msgstr ""
 msgid "The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
 msgstr ""
 
-#: scheduler/ipp.c:2245
+#: scheduler/ipp.c:2303
 msgid "The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
 msgstr ""
 
@@ -4919,12 +4946,12 @@ msgstr ""
 msgid "The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to enable it."
 msgstr ""
 
-#: scheduler/ipp.c:6454
+#: scheduler/ipp.c:6514
 #, c-format
 msgid "The which-jobs value \"%s\" is not supported."
 msgstr ""
 
-#: scheduler/ipp.c:5731
+#: scheduler/ipp.c:5791
 msgid "There are too many subscriptions."
 msgstr ""
 
@@ -4932,8 +4959,8 @@ msgstr ""
 msgid "There is a paper jam."
 msgstr ""
 
-#: backend/usb-darwin.c:379 backend/usb-darwin.c:438 backend/usb-darwin.c:505
-#: backend/usb-darwin.c:526 backend/usb-libusb.c:235 backend/usb-libusb.c:256
+#: backend/usb-darwin.c:411 backend/usb-darwin.c:470 backend/usb-darwin.c:534
+#: backend/usb-darwin.c:555 backend/usb-libusb.c:330 backend/usb-libusb.c:384
 msgid "There was an unrecoverable USB error."
 msgstr ""
 
@@ -4941,16 +4968,16 @@ msgstr ""
 msgid "Thermal Transfer Media"
 msgstr ""
 
-#: scheduler/ipp.c:1507
+#: scheduler/ipp.c:1565
 msgid "Too many active jobs."
 msgstr ""
 
-#: scheduler/ipp.c:1401
+#: scheduler/ipp.c:1459
 #, c-format
 msgid "Too many job-sheets values (%d > 2)."
 msgstr ""
 
-#: scheduler/ipp.c:2529
+#: scheduler/ipp.c:2587
 #, c-format
 msgid "Too many printer-state-reasons values (%d > %d)."
 msgstr ""
@@ -4979,7 +5006,7 @@ msgstr ""
 msgid "Tray 4"
 msgstr ""
 
-#: cups/http-support.c:1315
+#: cups/http-support.c:1316
 msgid "URI Too Long"
 msgstr ""
 
@@ -5031,11 +5058,11 @@ msgstr ""
 msgid "Unable to add class"
 msgstr ""
 
-#: backend/ipp.c:1635
+#: backend/ipp.c:1691
 msgid "Unable to add document to print job."
 msgstr ""
 
-#: scheduler/ipp.c:1548
+#: scheduler/ipp.c:1606
 #, c-format
 msgid "Unable to add job for destination \"%s\"."
 msgstr ""
@@ -5060,7 +5087,7 @@ msgstr ""
 msgid "Unable to cancel RSS subscription"
 msgstr ""
 
-#: backend/ipp.c:1942
+#: backend/ipp.c:2037
 msgid "Unable to cancel print job."
 msgstr ""
 
@@ -5080,11 +5107,11 @@ msgstr ""
 msgid "Unable to configure printer options."
 msgstr ""
 
-#: cups/adminutil.c:911 cups/request.c:1016
+#: cups/adminutil.c:911 cups/request.c:1022
 msgid "Unable to connect to host."
 msgstr ""
 
-#: backend/ipp.c:713 backend/ipp.c:1138 backend/lpd.c:787 backend/socket.c:333
+#: backend/ipp.c:747 backend/ipp.c:1176 backend/lpd.c:804 backend/socket.c:347
 #: backend/usb-unix.c:117
 msgid "Unable to contact printer, queuing on next printer in class."
 msgstr ""
@@ -5104,12 +5131,12 @@ msgstr ""
 msgid "Unable to copy CUPS printer driver files (%d)."
 msgstr ""
 
-#: scheduler/ipp.c:2649
+#: scheduler/ipp.c:2707
 #, c-format
 msgid "Unable to copy PPD file - %s"
 msgstr ""
 
-#: scheduler/ipp.c:2704
+#: scheduler/ipp.c:2762
 msgid "Unable to copy PPD file."
 msgstr ""
 
@@ -5123,16 +5150,16 @@ msgstr ""
 msgid "Unable to copy Windows 9x printer driver files (%d)."
 msgstr ""
 
-#: scheduler/ipp.c:2626
+#: scheduler/ipp.c:2684
 #, c-format
 msgid "Unable to copy interface script - %s"
 msgstr ""
 
-#: backend/ipp.c:2034
+#: backend/ipp.c:2129
 msgid "Unable to create compressed print file"
 msgstr ""
 
-#: cups/util.c:602 cups/util.c:1656
+#: cups/util.c:602 cups/util.c:1657
 msgid "Unable to create printer-uri"
 msgstr ""
 
@@ -5156,35 +5183,35 @@ msgstr ""
 msgid "Unable to edit cupsd.conf files larger than 1MB"
 msgstr ""
 
-#: cups/http.c:4272
+#: cups/http.c:4287
 msgid "Unable to establish a secure connection to host (certificate chain invalid)."
 msgstr ""
 
-#: cups/http.c:4262
+#: cups/http.c:4277
 msgid "Unable to establish a secure connection to host (certificate not yet valid)."
 msgstr ""
 
-#: cups/http.c:4257
+#: cups/http.c:4272
 msgid "Unable to establish a secure connection to host (expired certificate)."
 msgstr ""
 
-#: cups/http.c:4267
+#: cups/http.c:4282
 msgid "Unable to establish a secure connection to host (host name mismatch)."
 msgstr ""
 
-#: cups/http.c:4277
+#: cups/http.c:4292
 msgid "Unable to establish a secure connection to host (peer dropped connection before responding)."
 msgstr ""
 
-#: cups/http.c:4252
+#: cups/http.c:4267
 msgid "Unable to establish a secure connection to host (self-signed certificate)."
 msgstr ""
 
-#: cups/http.c:4247
+#: cups/http.c:4262
 msgid "Unable to establish a secure connection to host (untrusted certificate)."
 msgstr ""
 
-#: cups/http.c:4008 cups/http.c:4304 cups/http.c:4337 cups/http.c:4354
+#: cups/http.c:4021 cups/http.c:4319 cups/http.c:4352 cups/http.c:4369
 msgid "Unable to establish a secure connection to host."
 msgstr ""
 
@@ -5192,15 +5219,15 @@ msgstr ""
 msgid "Unable to find destination for job"
 msgstr ""
 
-#: cups/http-support.c:1748
+#: cups/http-support.c:1750
 msgid "Unable to find printer."
 msgstr ""
 
-#: backend/ipp.c:2056
+#: backend/ipp.c:2151
 msgid "Unable to generate compressed print file"
 msgstr ""
 
-#: backend/ipp.c:3009
+#: backend/ipp.c:3284
 msgid "Unable to get backend exit status."
 msgstr ""
 
@@ -5228,7 +5255,7 @@ msgstr ""
 msgid "Unable to get printer status"
 msgstr ""
 
-#: backend/ipp.c:933
+#: backend/ipp.c:969
 msgid "Unable to get printer status."
 msgstr ""
 
@@ -5246,13 +5273,13 @@ msgstr ""
 msgid "Unable to load help index."
 msgstr ""
 
-#: backend/ipp.c:642 backend/lpd.c:421 backend/socket.c:275
+#: backend/ipp.c:673 backend/lpd.c:435 backend/socket.c:286
 #, c-format
 msgid "Unable to locate printer \"%s\"."
 msgstr ""
 
-#: backend/dnssd.c:781 backend/ipp.c:324 backend/lpd.c:204
-#: backend/socket.c:171
+#: backend/dnssd.c:781 backend/ipp.c:345 backend/lpd.c:205
+#: backend/socket.c:172
 msgid "Unable to locate printer."
 msgstr ""
 
@@ -5276,7 +5303,7 @@ msgstr ""
 msgid "Unable to open PPD file"
 msgstr ""
 
-#: backend/ipp.c:2040
+#: backend/ipp.c:2135
 msgid "Unable to open compressed print file"
 msgstr ""
 
@@ -5288,7 +5315,7 @@ msgstr ""
 msgid "Unable to open device file"
 msgstr ""
 
-#: scheduler/ipp.c:6140
+#: scheduler/ipp.c:6200
 #, c-format
 msgid "Unable to open document #%d in job #%d."
 msgstr ""
@@ -5297,14 +5324,14 @@ msgstr ""
 msgid "Unable to open help file."
 msgstr ""
 
-#: backend/ipp.c:365 backend/ipp.c:1398 backend/ipp.c:1594 backend/ipp.c:2046
-#: backend/lpd.c:488 backend/socket.c:158 backend/usb.c:237
+#: backend/ipp.c:386 backend/ipp.c:1450 backend/ipp.c:1650 backend/ipp.c:2141
+#: backend/lpd.c:505 backend/socket.c:159 backend/usb.c:237
 #: filter/gziptoany.c:71 filter/pstops.c:300
 msgid "Unable to open print file"
 msgstr ""
 
 #: filter/rastertoepson.c:998 filter/rastertohp.c:724
-#: filter/rastertolabel.c:1147
+#: filter/rastertolabel.c:1136
 msgid "Unable to open raster file"
 msgstr ""
 
@@ -5312,12 +5339,12 @@ msgstr ""
 msgid "Unable to print test page"
 msgstr ""
 
-#: backend/runloop.c:96 backend/runloop.c:325 backend/usb-darwin.c:613
-#: backend/usb-darwin.c:657 backend/usb-libusb.c:343 backend/usb-libusb.c:378
+#: backend/runloop.c:96 backend/runloop.c:325 backend/usb-darwin.c:642
+#: backend/usb-darwin.c:686 backend/usb-libusb.c:475 backend/usb-libusb.c:510
 msgid "Unable to read print data."
 msgstr ""
 
-#: cups/dest.c:3402
+#: cups/dest.c:3409
 msgid "Unable to resolve printer URI."
 msgstr ""
 
@@ -5334,7 +5361,7 @@ msgstr ""
 msgid "Unable to send command to printer driver"
 msgstr ""
 
-#: backend/usb-darwin.c:735 backend/usb-libusb.c:454
+#: backend/usb-darwin.c:764 backend/usb-libusb.c:586
 msgid "Unable to send data to printer."
 msgstr ""
 
@@ -5351,7 +5378,7 @@ msgstr ""
 msgid "Unable to set server default"
 msgstr ""
 
-#: backend/ipp.c:2868 backend/ipp.c:2945 backend/ipp.c:2953
+#: backend/ipp.c:3143 backend/ipp.c:3220 backend/ipp.c:3228
 msgid "Unable to start backend process."
 msgstr ""
 
@@ -5359,7 +5386,7 @@ msgstr ""
 msgid "Unable to upload cupsd.conf file"
 msgstr ""
 
-#: backend/usb-darwin.c:1985 backend/usb-darwin.c:2009
+#: backend/usb-darwin.c:2014 backend/usb-darwin.c:2038
 msgid "Unable to use legacy USB class driver."
 msgstr ""
 
@@ -5372,7 +5399,7 @@ msgstr ""
 msgid "Unable to write uncompressed print data: %s"
 msgstr ""
 
-#: cups/http-support.c:1303
+#: cups/http-support.c:1304
 msgid "Unauthorized"
 msgstr ""
 
@@ -5380,7 +5407,7 @@ msgstr ""
 msgid "Units"
 msgstr ""
 
-#: cups/http-support.c:1343 cups/ppd.c:366
+#: cups/http-support.c:1344 cups/ppd.c:366
 msgid "Unknown"
 msgstr ""
 
@@ -5389,26 +5416,26 @@ msgstr ""
 msgid "Unknown choice \"%s\" for option \"%s\"."
 msgstr ""
 
-#: backend/ipp.c:507
+#: backend/ipp.c:528
 #, c-format
 msgid "Unknown encryption option value: \"%s\"."
 msgstr ""
 
-#: backend/lpd.c:350
+#: backend/lpd.c:351
 #, c-format
 msgid "Unknown file order: \"%s\"."
 msgstr ""
 
-#: backend/lpd.c:321
+#: backend/lpd.c:322
 #, c-format
 msgid "Unknown format character: \"%c\"."
 msgstr ""
 
-#: cups/dest-options.c:770
+#: cups/dest-options.c:769
 msgid "Unknown media size name."
 msgstr ""
 
-#: backend/ipp.c:554
+#: backend/ipp.c:585
 #, c-format
 msgid "Unknown option \"%s\" with value \"%s\"."
 msgstr ""
@@ -5418,17 +5445,17 @@ msgstr ""
 msgid "Unknown option \"%s\"."
 msgstr ""
 
-#: backend/lpd.c:336
+#: backend/lpd.c:337
 #, c-format
 msgid "Unknown print mode: \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:10496
+#: scheduler/ipp.c:10557
 #, c-format
 msgid "Unknown printer-error-policy \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:10479
+#: scheduler/ipp.c:10540
 #, c-format
 msgid "Unknown printer-op-policy \"%s\"."
 msgstr ""
@@ -5437,37 +5464,51 @@ msgstr ""
 msgid "Unknown service name."
 msgstr ""
 
-#: backend/ipp.c:526
+#: backend/ipp.c:557
 #, c-format
 msgid "Unknown version option value: \"%s\"."
 msgstr ""
 
+#: scheduler/ipp.c:11013
+#, c-format
+msgid "Unsupported 'compression' value \"%s\"."
+msgstr ""
+
+#: scheduler/ipp.c:11043
+#, c-format
+msgid "Unsupported 'document-format' value \"%s\"."
+msgstr ""
+
+#: scheduler/ipp.c:11118
+msgid "Unsupported 'job-name' value."
+msgstr ""
+
 #: scheduler/ipp.c:402
 #, c-format
 msgid "Unsupported character set \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:8171 scheduler/ipp.c:9401 scheduler/ipp.c:10950
+#: scheduler/ipp.c:8231 scheduler/ipp.c:9462
 #, c-format
 msgid "Unsupported compression \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:8305 scheduler/ipp.c:9551 scheduler/ipp.c:10979
+#: scheduler/ipp.c:8365 scheduler/ipp.c:9612
 #, c-format
 msgid "Unsupported document-format \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:9534
+#: scheduler/ipp.c:9595
 #, c-format
 msgid "Unsupported document-format \"%s/%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:1367
+#: scheduler/ipp.c:1425
 #, c-format
 msgid "Unsupported format \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:1465
+#: scheduler/ipp.c:1523
 msgid "Unsupported margins."
 msgstr ""
 
@@ -5498,7 +5539,7 @@ msgstr ""
 msgid "Unsupported value type"
 msgstr ""
 
-#: cups/http-support.c:1318
+#: cups/http-support.c:1319
 msgid "Upgrade Required"
 msgstr ""
 
@@ -5514,8 +5555,8 @@ msgid ""
 "                       [-u allow:user,user] [-u deny:user,user]"
 msgstr ""
 
-#: backend/dnssd.c:241 backend/ipp.c:313 backend/lpd.c:191
-#: backend/socket.c:135 backend/usb.c:183 filter/commandtops.c:74
+#: backend/dnssd.c:241 backend/ipp.c:334 backend/lpd.c:192
+#: backend/socket.c:136 backend/usb.c:183 filter/commandtops.c:74
 #: filter/gziptoany.c:50 filter/pstops.c:264 monitor/bcp.c:62
 #: monitor/tbcp.c:61
 #, c-format
@@ -5530,7 +5571,7 @@ msgstr ""
 msgid "Usage: cupsctl [options] [param=value ... paramN=valueN]"
 msgstr ""
 
-#: scheduler/main.c:2017
+#: scheduler/main.c:1984
 msgid "Usage: cupsd [options]"
 msgstr ""
 
@@ -5542,11 +5583,11 @@ msgstr ""
 msgid "Usage: cupstestdsc [options] filename.ps [... filename.ps]"
 msgstr ""
 
-#: systemv/cupstestppd.c:3793
+#: systemv/cupstestppd.c:3794
 msgid "Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]"
 msgstr ""
 
-#: test/ipptool.c:4401
+#: test/ipptool.c:4443
 msgid "Usage: ipptool [options] URI filename [ ... filenameN ]"
 msgstr ""
 
@@ -5573,7 +5614,7 @@ msgid ""
 "       lppasswd [-g groupname] -x [username]"
 msgstr ""
 
-#: berkeley/lpq.c:670
+#: berkeley/lpq.c:674
 msgid "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
 msgstr ""
 
@@ -5613,15 +5654,15 @@ msgstr ""
 msgid "Version uses indefinite length"
 msgstr ""
 
-#: backend/ipp.c:1675
+#: backend/ipp.c:1757
 msgid "Waiting for job to complete."
 msgstr ""
 
-#: backend/usb-darwin.c:457 backend/usb-libusb.c:193
+#: backend/usb-darwin.c:489 backend/usb-libusb.c:282
 msgid "Waiting for printer to become available."
 msgstr ""
 
-#: backend/socket.c:444
+#: backend/socket.c:458
 msgid "Waiting for printer to finish."
 msgstr ""
 
@@ -5629,7 +5670,7 @@ msgstr ""
 msgid "Warning, no Windows 2000 printer drivers are installed."
 msgstr ""
 
-#: cups/http-support.c:1339
+#: cups/http-support.c:1340
 msgid "Web Interface is Disabled"
 msgstr ""
 
@@ -5666,11 +5707,11 @@ msgstr ""
 msgid "completed"
 msgstr ""
 
-#: scheduler/ipp.c:6012
+#: scheduler/ipp.c:6072
 msgid "cups-deviced failed to execute."
 msgstr ""
 
-#: scheduler/ipp.c:6842 scheduler/ipp.c:7091
+#: scheduler/ipp.c:6902 scheduler/ipp.c:7151
 msgid "cups-driverd failed to execute."
 msgstr ""
 
@@ -5698,25 +5739,25 @@ msgstr ""
 msgid "cupsctl: Unknown option \"-%c\""
 msgstr ""
 
-#: scheduler/main.c:189
+#: scheduler/main.c:190
 msgid "cupsd: Expected config filename after \"-c\" option."
 msgstr ""
 
-#: scheduler/main.c:221 scheduler/main.c:228
+#: scheduler/main.c:222 scheduler/main.c:229
 msgid "cupsd: Unable to get current directory."
 msgstr ""
 
-#: scheduler/main.c:295
+#: scheduler/main.c:296
 #, c-format
 msgid "cupsd: Unknown argument \"%s\" - aborting."
 msgstr ""
 
-#: scheduler/main.c:288
+#: scheduler/main.c:289
 #, c-format
 msgid "cupsd: Unknown option \"%c\" - aborting."
 msgstr ""
 
-#: scheduler/main.c:255
+#: scheduler/main.c:256
 msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
 msgstr ""
 
@@ -5747,12 +5788,12 @@ msgstr ""
 msgid "cupstestppd: The -v option is incompatible with the -q option."
 msgstr ""
 
-#: systemv/lpstat.c:1231 systemv/lpstat.c:1234 systemv/lpstat.c:1237
+#: systemv/lpstat.c:1188 systemv/lpstat.c:1191 systemv/lpstat.c:1194
 #, c-format
 msgid "device for %s/%s: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1218 systemv/lpstat.c:1221 systemv/lpstat.c:1224
+#: systemv/lpstat.c:1175 systemv/lpstat.c:1178 systemv/lpstat.c:1181
 #, c-format
 msgid "device for %s: %s"
 msgstr ""
@@ -5832,7 +5873,7 @@ msgstr ""
 msgid "ipptool: Unknown option \"-%c\"."
 msgstr ""
 
-#: scheduler/ipp.c:7838
+#: scheduler/ipp.c:7898
 msgid "job-printer-uri attribute missing."
 msgstr ""
 
@@ -6120,34 +6161,34 @@ msgstr ""
 msgid "lppasswd: user \"%s\" and group \"%s\" do not exist."
 msgstr ""
 
-#: systemv/lpstat.c:1039
+#: systemv/lpstat.c:996
 #, c-format
 msgid "lpstat: error - %s environment variable names non-existent destination \"%s\"."
 msgstr ""
 
-#: systemv/lpstat.c:970
+#: systemv/lpstat.c:927
 #, c-format
 msgid "members of class %s:"
 msgstr ""
 
-#: berkeley/lpq.c:582
+#: berkeley/lpq.c:586
 msgid "no entries"
 msgstr ""
 
-#: systemv/lpstat.c:1043
+#: systemv/lpstat.c:1000
 msgid "no system default destination"
 msgstr ""
 
-#: scheduler/ipp.c:5702
+#: scheduler/ipp.c:5762
 msgid "notify-events not specified."
 msgstr ""
 
-#: scheduler/ipp.c:2034 scheduler/ipp.c:5607
+#: scheduler/ipp.c:2092 scheduler/ipp.c:5667
 #, c-format
 msgid "notify-recipient-uri URI \"%s\" is already used."
 msgstr ""
 
-#: scheduler/ipp.c:2024 scheduler/ipp.c:5597
+#: scheduler/ipp.c:2082 scheduler/ipp.c:5657
 #, c-format
 msgid "notify-recipient-uri URI \"%s\" uses unknown scheme."
 msgstr ""
@@ -6629,32 +6670,32 @@ msgstr ""
 msgid "ppdmerge: Unable to backup %s to %s - %s"
 msgstr ""
 
-#: systemv/lpstat.c:1784
+#: systemv/lpstat.c:1741
 #, c-format
 msgid "printer %s disabled since %s -"
 msgstr ""
 
-#: systemv/lpstat.c:1773
+#: systemv/lpstat.c:1730
 #, c-format
 msgid "printer %s is idle.  enabled since %s"
 msgstr ""
 
-#: systemv/lpstat.c:1778
+#: systemv/lpstat.c:1735
 #, c-format
 msgid "printer %s now printing %s-%d.  enabled since %s"
 msgstr ""
 
-#: systemv/lpstat.c:1909
+#: systemv/lpstat.c:1866
 #, c-format
 msgid "printer %s/%s disabled since %s -"
 msgstr ""
 
-#: systemv/lpstat.c:1895
+#: systemv/lpstat.c:1852
 #, c-format
 msgid "printer %s/%s is idle.  enabled since %s"
 msgstr ""
 
-#: systemv/lpstat.c:1902
+#: systemv/lpstat.c:1859
 #, c-format
 msgid "printer %s/%s now printing %s-%d.  enabled since %s"
 msgstr ""
@@ -6672,11 +6713,11 @@ msgstr ""
 msgid "request-id uses indefinite length"
 msgstr ""
 
-#: systemv/lpstat.c:2048
+#: systemv/lpstat.c:2005
 msgid "scheduler is not running"
 msgstr ""
 
-#: systemv/lpstat.c:2044
+#: systemv/lpstat.c:2001
 msgid "scheduler is running"
 msgstr ""
 
@@ -6693,12 +6734,12 @@ msgstr ""
 msgid "stopped"
 msgstr ""
 
-#: systemv/lpstat.c:1017
+#: systemv/lpstat.c:974
 #, c-format
 msgid "system default destination: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1014
+#: systemv/lpstat.c:971
 #, c-format
 msgid "system default destination: %s/%s"
 msgstr ""
index 745be0f84c27ef251bdc23dcfd929c38ead8204f..164144f15461343df3426ede584cbc75c8357261 100644 (file)
 "%s: Error - expected copies after \"-#\" option." = "%s: Error - expected copies after \"-#\" option.";
 "%s: Error - expected copies after \"-n\" option." = "%s: Error - expected copies after \"-n\" option.";
 "%s: Error - expected destination after \"-P\" option." = "%s: Error - expected destination after \"-P\" option.";
-"%s: Error - expected destination after \"-b\" option." = "%s: Error - expected destination after \"-b\" option.";
 "%s: Error - expected destination after \"-d\" option." = "%s: Error - expected destination after \"-d\" option.";
 "%s: Error - expected form after \"-f\" option." = "%s: Error - expected form after \"-f\" option.";
 "%s: Error - expected hold name after \"-H\" option." = "%s: Error - expected hold name after \"-H\" option.";
 "B7" = "B7";
 "B8" = "B8";
 "B9" = "B9";
+"Bad 'document-format' value \"%s\"." = "Bad 'document-format' value \"%s\".";
 "Bad NULL dests pointer" = "Bad NULL dests pointer";
 "Bad OpenGroup" = "Bad OpenGroup";
 "Bad OpenUI/JCLOpenUI" = "Bad OpenUI/JCLOpenUI";
 "IPP extension tag larger than 0x7FFFFFFF." = "IPP extension tag larger than 0x7FFFFFFF.";
 "IPP integer value not 4 bytes." = "IPP integer value not 4 bytes.";
 "IPP language length overflows value." = "IPP language length overflows value.";
+"IPP language length too large." = "IPP language length too large.";
 "IPP member name is not empty." = "IPP member name is not empty.";
 "IPP memberName value is empty." = "IPP memberName value is empty.";
+"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";
 "Postcard Double " = "Postcard Double ";
 "Postcard Double Long Edge" = "Postcard Double Long Edge";
 "Postcard Long Edge" = "Postcard Long Edge";
+"Preparing to print." = "Preparing to print.";
 "Print Density" = "Print Density";
 "Print Job:" = "Print Job:";
 "Print Mode" = "Print Mode";
 "Print Test Page" = "Print Test Page";
 "Print and Cut" = "Print and Cut";
 "Print and Tear" = "Print and Tear";
-"Print file accepted - job ID %d." = "Print file accepted - job ID %d.";
-"Print file accepted - job ID unknown." = "Print file accepted - job ID unknown.";
 "Print file sent." = "Print file sent.";
-"Print file was not accepted." = "Print file was not accepted.";
 "Print job canceled at printer." = "Print job canceled at printer.";
 "Print job too large." = "Print job too large.";
+"Print job was not accepted." = "Print job was not accepted.";
 "Printer Added" = "Printer Added";
 "Printer Default" = "Printer Default";
 "Printer Deleted" = "Printer Deleted";
 "Tear" = "Tear";
 "Tear-Off" = "Tear-Off";
 "Tear-Off Adjust Position" = "Tear-Off Adjust Position";
+"The \"%s\" attribute is required for print jobs." = "The \"%s\" attribute is required for print jobs.";
 "The %s attribute cannot be provided with job-ids." = "The %s attribute cannot be provided with job-ids.";
+"The '%s' Job Description attribute cannot be supplied in a job creation request." = "The '%s' Job Description attribute cannot be supplied in a job creation request.";
 "The '%s' operation attribute cannot be supplied in a Create-Job request." = "The '%s' operation attribute cannot be supplied in a Create-Job request.";
 "The PPD file \"%s\" could not be found." = "The PPD file \"%s\" could not be found.";
 "The PPD file \"%s\" could not be opened: %s" = "The PPD file \"%s\" could not be opened: %s";
 "The paper tray is empty." = "The paper tray is empty.";
 "The paper tray is missing." = "The paper tray is missing.";
 "The paper tray needs to be filled." = "The paper tray needs to be filled.";
-"The printer URI is incorrect or no longer exists." = "The printer URI is incorrect or no longer exists.";
+"The printer configuration is incorrect or the printer no longer exists." = "The printer configuration is incorrect or the printer no longer exists.";
 "The printer did not respond." = "The printer did not respond.";
-"The printer does not support IPP/%d.%d, trying IPP/%s." = "The printer does not support IPP/%d.%d, trying IPP/%s.";
 "The printer is in use." = "The printer is in use.";
 "The printer is not connected." = "The printer is not connected.";
 "The printer is not responding." = "The printer is not responding.";
 "Unknown printer-op-policy \"%s\"." = "Unknown printer-op-policy \"%s\".";
 "Unknown service name." = "Unknown service name.";
 "Unknown version option value: \"%s\"." = "Unknown version option value: \"%s\".";
+"Unsupported 'compression' value \"%s\"." = "Unsupported 'compression' value \"%s\".";
+"Unsupported 'document-format' value \"%s\"." = "Unsupported 'document-format' value \"%s\".";
+"Unsupported 'job-name' value." = "Unsupported 'job-name' value.";
 "Unsupported character set \"%s\"." = "Unsupported character set \"%s\".";
 "Unsupported compression \"%s\"." = "Unsupported compression \"%s\".";
 "Unsupported document-format \"%s\"." = "Unsupported document-format \"%s\".";
index cde14d651aa3e61feeac6f62dcf93a4a3ec4f857..d128cdcb3da3af0c3d4811eb90df8dd267b15db0 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: 2012-05-23 16:24-0700\n"
+"POT-Creation-Date: 2012-10-22 11:09-0400\n"
 "PO-Revision-Date: 2012-05-26 12:28+0200\n"
 "Last-Translator: Àngel Mompó <mecatxis@gmail.com>\n"
 "Language-Team: Catalan <ca@dodds.net> <>\n"
@@ -42,160 +42,122 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n!=1);\n"
 
-#: systemv/lpstat.c:1876 systemv/lpstat.c:2001
 msgid "\t\t(all)"
 msgstr "\t\t(tots)"
 
-#: systemv/lpstat.c:1879 systemv/lpstat.c:1882 systemv/lpstat.c:2004
-#: systemv/lpstat.c:2007
 msgid "\t\t(none)"
 msgstr "\t\t(cap)"
 
-#: berkeley/lpc.c:434
 #, c-format
 msgid "\t%d entries"
 msgstr "\t%d entrades"
 
-#: systemv/lpstat.c:756 systemv/lpstat.c:772
 #, c-format
 msgid "\t%s"
 msgstr "\t%s"
 
-#: systemv/lpstat.c:1857 systemv/lpstat.c:1982
 msgid "\tAfter fault: continue"
 msgstr "\tDesprés d'una fallada: continua"
 
-#: systemv/lpstat.c:1481 systemv/lpstat.c:1826 systemv/lpstat.c:1952
 #, c-format
 msgid "\tAlerts: %s"
 msgstr "\tAlertes: %s"
 
-#: systemv/lpstat.c:1880 systemv/lpstat.c:2005
 msgid "\tBanner required"
 msgstr "\tNecessita un bàner"
 
-#: systemv/lpstat.c:1881 systemv/lpstat.c:2006
 msgid "\tCharset sets:"
 msgstr "\tConjunt de caràcters:"
 
-#: systemv/lpstat.c:1845 systemv/lpstat.c:1970
 msgid "\tConnection: direct"
 msgstr "\tConnexió: directa"
 
-#: systemv/lpstat.c:1836 systemv/lpstat.c:1962
 msgid "\tConnection: remote"
 msgstr "\tConnexió: remota"
 
-#: systemv/lpstat.c:1800 systemv/lpstat.c:1926
 msgid "\tContent types: any"
 msgstr "\tTipus de contingut: qualsevol"
 
-#: systemv/lpstat.c:1884 systemv/lpstat.c:2009
 msgid "\tDefault page size:"
 msgstr "\tMida de la pàgina per defecte:"
 
-#: systemv/lpstat.c:1883 systemv/lpstat.c:2008
 msgid "\tDefault pitch:"
 msgstr "\tDensitat per defecte:"
 
-#: systemv/lpstat.c:1885 systemv/lpstat.c:2010
 msgid "\tDefault port settings:"
 msgstr "\tConfiguració del port per defecte:"
 
-#: systemv/lpstat.c:1806 systemv/lpstat.c:1932
 #, c-format
 msgid "\tDescription: %s"
 msgstr "\tDescripció: %s"
 
-#: systemv/lpstat.c:1799 systemv/lpstat.c:1925
 msgid "\tForm mounted:"
 msgstr "\tFormularis muntats:"
 
-#: systemv/lpstat.c:1878 systemv/lpstat.c:2003
 msgid "\tForms allowed:"
 msgstr "\tFormularis admesos:"
 
-#: systemv/lpstat.c:1840 systemv/lpstat.c:1966
 #, c-format
 msgid "\tInterface: %s.ppd"
 msgstr "\tInterfície: %s.ppd"
 
-#: systemv/lpstat.c:1849 systemv/lpstat.c:1974
 #, c-format
 msgid "\tInterface: %s/interfaces/%s"
 msgstr "\tInterfície: %s/interfícies/%s"
 
-#: systemv/lpstat.c:1853 systemv/lpstat.c:1978
 #, c-format
 msgid "\tInterface: %s/ppd/%s.ppd"
 msgstr "\tInterfície: %s/ppd/%s.ppd"
 
-#: systemv/lpstat.c:1831 systemv/lpstat.c:1957
 #, c-format
 msgid "\tLocation: %s"
 msgstr "\tUbicació: %s"
 
-#: systemv/lpstat.c:1856 systemv/lpstat.c:1981
 msgid "\tOn fault: no alert"
 msgstr "\tEn cas de fallada: no avisis"
 
-#: systemv/lpstat.c:1801 systemv/lpstat.c:1927
 msgid "\tPrinter types: unknown"
 msgstr "\tTipus d'impresores: desconeguts"
 
-#: systemv/lpstat.c:1462
 #, c-format
 msgid "\tStatus: %s"
 msgstr "\tEstat: %s"
 
-#: systemv/lpstat.c:1861 systemv/lpstat.c:1875 systemv/lpstat.c:1986
-#: systemv/lpstat.c:2000
 msgid "\tUsers allowed:"
 msgstr "\tUsuaris permesos:"
 
-#: systemv/lpstat.c:1868 systemv/lpstat.c:1993
 msgid "\tUsers denied:"
 msgstr "\tUsuaris sense permís:"
 
-#: berkeley/lpc.c:436
 msgid "\tdaemon present"
 msgstr "\tpresència del dimoni"
 
-#: berkeley/lpc.c:432
 msgid "\tno entries"
 msgstr "\tcap entrada"
 
-#: berkeley/lpc.c:404 berkeley/lpc.c:416
 #, c-format
 msgid "\tprinter is on device '%s' speed -1"
 msgstr "\tLa impressora és al dispositiu «%s» velocitat -1"
 
-#: berkeley/lpc.c:429
 msgid "\tprinting is disabled"
 msgstr "\tLa impressora està deshabilitada"
 
-#: berkeley/lpc.c:427
 msgid "\tprinting is enabled"
 msgstr "\tLa impressora està habilitada"
 
-#: systemv/lpstat.c:1484
 #, c-format
 msgid "\tqueued for %s"
 msgstr "\ten cua per %s"
 
-#: berkeley/lpc.c:424
 msgid "\tqueuing is disabled"
 msgstr "\tla cua està deshabilitada"
 
-#: berkeley/lpc.c:422
 msgid "\tqueuing is enabled"
 msgstr "\tla cua està habilitada"
 
-#: systemv/lpstat.c:1792 systemv/lpstat.c:1918
 msgid "\treason unknown"
 msgstr "\traó desconeguda"
 
-#: systemv/cupstestppd.c:454
 msgid ""
 "\n"
 "    DETAILED CONFORMANCE TEST RESULTS"
@@ -203,134 +165,102 @@ msgstr ""
 "\n"
 "     RESULTAT DETALLAT DEL TEST DE CONFORMITAT"
 
-#: systemv/cupstestppd.c:3800
 msgid "                          Ignore specific warnings."
 msgstr "                          Ignora els avisos específics."
 
-#: systemv/cupstestppd.c:3804
 msgid "                          Issue warnings instead of errors."
 msgstr "                          Mostra avisos enlloc d'errors."
 
-#: systemv/cupstestppd.c:410 systemv/cupstestppd.c:415
 msgid "                REF: Page 15, section 3.1."
 msgstr "                REF: pàgina 15, secció 3.1."
 
-#: systemv/cupstestppd.c:405
 msgid "                REF: Page 15, section 3.2."
 msgstr "                REF: pàgina 15, secció 3.2."
 
-#: systemv/cupstestppd.c:425
 msgid "                REF: Page 19, section 3.3."
 msgstr "                REF: pàgina 19, secció 3.3."
 
-#: systemv/cupstestppd.c:378
 msgid "                REF: Page 20, section 3.4."
 msgstr "                REF: pàgina 20, secció 3.4."
 
-#: systemv/cupstestppd.c:430
 msgid "                REF: Page 27, section 3.5."
 msgstr "                REF: pàgina 27, secció 3.5."
 
-#: systemv/cupstestppd.c:373
 msgid "                REF: Page 42, section 5.2."
 msgstr "                REF: pàgina 42, secció 5.2."
 
-#: systemv/cupstestppd.c:420
 msgid "                REF: Pages 16-17, section 3.2."
 msgstr "                REF: pàgines 16-17, secció 3.2."
 
-#: systemv/cupstestppd.c:390
 msgid "                REF: Pages 42-45, section 5.2."
 msgstr "                REF: pàgines 42-45, secció 5.2."
 
-#: systemv/cupstestppd.c:384
 msgid "                REF: Pages 45-46, section 5.2."
 msgstr "                REF: pàgines 45-46, secció 5.2."
 
-#: systemv/cupstestppd.c:395
 msgid "                REF: Pages 48-49, section 5.2."
 msgstr "                REF: pàgines 48-49, secció 5.2."
 
-#: systemv/cupstestppd.c:400
 msgid "                REF: Pages 52-54, section 5.2."
 msgstr "                REF: pàgines 52-54, secció 5.2."
 
-#: berkeley/lpq.c:554
 #, c-format
 msgid "        %-39.39s %.0f bytes"
 msgstr "        %-39.39s %.0f bytes"
 
-#: systemv/cupstestppd.c:589
 #, c-format
 msgid "        PASS    Default%s"
 msgstr "        VALIDA    Default%s"
 
-#: systemv/cupstestppd.c:524
 msgid "        PASS    DefaultImageableArea"
 msgstr "        VALIDA    DefaultImageableArea"
 
-#: systemv/cupstestppd.c:558
 msgid "        PASS    DefaultPaperDimension"
 msgstr "        VALIDA    DefaultPaperDimension"
 
-#: systemv/cupstestppd.c:631
 msgid "        PASS    FileVersion"
 msgstr "        VALIDA    FileVersion"
 
-#: systemv/cupstestppd.c:675
 msgid "        PASS    FormatVersion"
 msgstr "        VALIDA    FileVersion"
 
-#: systemv/cupstestppd.c:695
 msgid "        PASS    LanguageEncoding"
 msgstr "       VALIDA    LanguageEncoding"
 
-#: systemv/cupstestppd.c:715
 msgid "        PASS    LanguageVersion"
 msgstr "        VALIDA    LanguageVersion"
 
-#: systemv/cupstestppd.c:769
 msgid "        PASS    Manufacturer"
 msgstr "        VALIDA    Manufacturer"
 
-#: systemv/cupstestppd.c:809
 msgid "        PASS    ModelName"
 msgstr "        VALIDA    ModelName"
 
-#: systemv/cupstestppd.c:829
 msgid "        PASS    NickName"
 msgstr "        VALIDA    NickName"
 
-#: systemv/cupstestppd.c:889
 msgid "        PASS    PCFileName"
 msgstr "        VALIDA    PCFileName"
 
-#: systemv/cupstestppd.c:964
 msgid "        PASS    PSVersion"
 msgstr "        VALIDA    PSVersion"
 
-#: systemv/cupstestppd.c:869
 msgid "        PASS    PageRegion"
 msgstr "        VALIDA    PageRegion"
 
-#: systemv/cupstestppd.c:849
 msgid "        PASS    PageSize"
 msgstr "        VALIDA    PageSize"
 
-#: systemv/cupstestppd.c:924
 msgid "        PASS    Product"
 msgstr "        VALIDA    Product"
 
-#: systemv/cupstestppd.c:999
 msgid "        PASS    ShortNickName"
 msgstr "        VALIDA    ShortNickName"
 
-#: systemv/cupstestppd.c:1374
 #, c-format
 msgid "        WARN    %s has no corresponding options."
 msgstr "        AVÍS    %s no té les opcions corresponents."
 
-#: systemv/cupstestppd.c:1486
 #, c-format
 msgid ""
 "        WARN    %s shares a common prefix with %s\n"
@@ -339,7 +269,6 @@ msgstr ""
 "        AVÍS    %s té un prefixe comú amb %s\n"
 "                REF: pàgina 15, secció 3.2."
 
-#: systemv/cupstestppd.c:1345
 #, c-format
 msgid ""
 "        WARN    Duplex option keyword %s may not work as expected and should "
@@ -350,13 +279,11 @@ msgstr ""
 "s'espera i s'hauria de dir Duplex.\n"
 "                REF: pàgina 122, secció 5.17"
 
-#: systemv/cupstestppd.c:1744
 msgid "        WARN    File contains a mix of CR, LF, and CR LF line endings."
 msgstr ""
 "        AVÍS    El fitxer conté una barreja de CR, LF, i CR LF com a finals "
 "de línia."
 
-#: systemv/cupstestppd.c:1390
 msgid ""
 "        WARN    LanguageEncoding required by PPD 4.3 spec.\n"
 "                REF: Pages 56-57, section 5.3."
@@ -365,12 +292,10 @@ msgstr ""
 "4.3\n"
 "                REF: pàgines 56-57, secció 5.3."
 
-#: systemv/cupstestppd.c:1726
 #, c-format
 msgid "        WARN    Line %d only contains whitespace."
 msgstr "        AVÍS    La línia %d només conté espais en blanc."
 
-#: systemv/cupstestppd.c:1398
 msgid ""
 "        WARN    Manufacturer required by PPD 4.3 spec.\n"
 "                REF: Pages 58-59, section 5.3."
@@ -378,7 +303,6 @@ msgstr ""
 "        AVÍS    El fabricant requereix les espec. del PPD 4.3.\n"
 "                REF: pàgines 58-59, secció 5.3."
 
-#: systemv/cupstestppd.c:1749
 msgid ""
 "        WARN    Non-Windows PPD files should use lines ending with only LF, "
 "not CR LF."
@@ -386,7 +310,6 @@ msgstr ""
 "        AVÍS    Els fitxers PPD que no són del Windows han de fer servir "
 "només LF com a final de línia, no CR LF."
 
-#: systemv/cupstestppd.c:1382
 #, c-format
 msgid ""
 "        WARN    Obsolete PPD version %.1f.\n"
@@ -395,7 +318,6 @@ msgstr ""
 "        AVÍS     La versió del PPD %.1f és obsoleta!\n"
 "                REF: pàgina 42, secció 5.2."
 
-#: systemv/cupstestppd.c:1413
 msgid ""
 "        WARN    PCFileName longer than 8.3 in violation of PPD spec.\n"
 "                REF: Pages 61-62, section 5.3."
@@ -404,7 +326,6 @@ msgstr ""
 "PPD.\n"
 "                REF: pàgines 61-62, secció 5.3."
 
-#: systemv/cupstestppd.c:1421
 msgid ""
 "        WARN    PCFileName should contain a unique filename.\n"
 "                REF: Pages 61-62, section 5.3."
@@ -413,7 +334,6 @@ msgstr ""
 "PPD.\n"
 "                REF: pàgines 61-62, secció 5.3."
 
-#: systemv/cupstestppd.c:1456
 msgid ""
 "        WARN    Protocols contains PJL but JCL attributes are not set.\n"
 "                REF: Pages 78-79, section 5.7."
@@ -422,7 +342,6 @@ msgstr ""
 "s'han definit.\n"
 "                REF: pàgines 78-79, secció 5.7."
 
-#: systemv/cupstestppd.c:1447
 msgid ""
 "        WARN    Protocols contains both PJL and BCP; expected TBCP.\n"
 "                REF: Pages 78-79, section 5.7."
@@ -431,7 +350,6 @@ msgstr ""
 "TBCP.\n"
 "                REF: pàgines 78-79, secció 5.7."
 
-#: systemv/cupstestppd.c:1430
 msgid ""
 "        WARN    ShortNickName required by PPD 4.3 spec.\n"
 "                REF: Pages 64-65, section 5.3."
@@ -439,19 +357,15 @@ msgstr ""
 "        AVÍS    Es requereix un ShortNickName segons les espec.del PPD 4.3.\n"
 "                REF: pàgines 64-65, secció 5.3."
 
-#: systemv/cupsaddsmb.c:282
 msgid "       cupsaddsmb [options] -a"
 msgstr "       cupsaddsmb [opcions] -a"
 
-#: systemv/cupstestdsc.c:427
 msgid "       cupstestdsc [options] -"
 msgstr "       cupstestdsc [opcions] -"
 
-#: systemv/cupstestppd.c:3795
 msgid "       program | cupstestppd [options] -"
 msgstr "       programa | cupstestppd [opcions] -"
 
-#: systemv/cupstestppd.c:3727
 #, c-format
 msgid ""
 "      %s  \"%s %s\" conflicts with \"%s %s\"\n"
@@ -460,17 +374,14 @@ msgstr ""
 "      %s  «%s %s» entra en conflicte amb «%s %s»\n"
 "                (restricció=«%s %s %s %s»)."
 
-#: systemv/cupstestppd.c:2248
 #, c-format
 msgid "      %s  %s %s does not exist."
 msgstr "      %s  %s %s no existeix."
 
-#: systemv/cupstestppd.c:3884
 #, c-format
 msgid "      %s  %s file \"%s\" has the wrong capitalization."
 msgstr "      %s  %s el fitxer «%s» fa un ús incorrecte de les majúscules."
 
-#: systemv/cupstestppd.c:2318
 #, c-format
 msgid ""
 "      %s  Bad %s choice %s.\n"
@@ -479,100 +390,71 @@ msgstr ""
 "      %s  Mala %s elecció %s!\n"
 "                REF: pàgina 122, secció 5.17"
 
-#: systemv/cupstestppd.c:3487 systemv/cupstestppd.c:3536
-#: systemv/cupstestppd.c:3575
 #, c-format
 msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s, choice %s."
 msgstr ""
 "      %s  UTF-8 incorrecte «%s» a la traducció de l'opció %s, elecció %s."
 
-#: systemv/cupstestppd.c:3441
 #, c-format
 msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s."
 msgstr "      %s  UTF-8 Incorrecte «%s» a la traducció de l'opció %s."
 
-#: systemv/cupstestppd.c:2389
 #, c-format
 msgid "      %s  Bad cupsFilter value \"%s\"."
 msgstr "      %s  Valor incorrecte del cupsFilter «%s»."
 
-#: systemv/cupstestppd.c:2475
 #, c-format
 msgid "      %s  Bad cupsFilter2 value \"%s\"."
 msgstr "      %s  Valor incorrecte del cupsFilter2 «%s»"
 
-#: systemv/cupstestppd.c:2964
 #, c-format
 msgid "      %s  Bad cupsICCProfile %s."
 msgstr "      %s  cupsICCProfile incorrecte %s."
 
-#: systemv/cupstestppd.c:2571
 #, c-format
 msgid "      %s  Bad cupsPreFilter value \"%s\"."
 msgstr "      %s  Valor de la cupsPreFilter incorrecte «%s»."
 
-#: systemv/cupstestppd.c:1822
 #, c-format
 msgid "      %s  Bad cupsUIConstraints %s: \"%s\""
 msgstr "      %s  cupsUIConstraints incorrecte %s: «%s»"
 
-#: systemv/cupstestppd.c:3391
 #, c-format
 msgid "      %s  Bad language \"%s\"."
 msgstr "      %s  language incorrecte «%s»."
 
-#: systemv/cupstestppd.c:2433 systemv/cupstestppd.c:2529
-#: systemv/cupstestppd.c:2615 systemv/cupstestppd.c:2673
-#: systemv/cupstestppd.c:2728 systemv/cupstestppd.c:2783
-#: systemv/cupstestppd.c:2838 systemv/cupstestppd.c:2891
-#: systemv/cupstestppd.c:3013
 #, c-format
 msgid "      %s  Bad permissions on %s file \"%s\"."
 msgstr "      %s  Permisos del fitxer %s incorrectes «%s»."
 
-#: systemv/cupstestppd.c:2373 systemv/cupstestppd.c:2459
-#: systemv/cupstestppd.c:2555 systemv/cupstestppd.c:2642
-#: systemv/cupstestppd.c:2697 systemv/cupstestppd.c:2752
-#: systemv/cupstestppd.c:2807 systemv/cupstestppd.c:2862
 #, c-format
 msgid "      %s  Bad spelling of %s - should be %s."
 msgstr "      %s  %s Està mal escrit: hauria de ser %s."
 
-#: systemv/cupstestppd.c:2907
 #, c-format
 msgid "      %s  Cannot provide both APScanAppPath and APScanAppBundleID."
 msgstr "      %s  No hi pot haver APScanAppPath i APScanAppBundleID alhora."
 
-#: systemv/cupstestppd.c:2205
 #, c-format
 msgid "      %s  Default choices conflicting."
 msgstr "      %s  Conflictes amb les opcions per defecte."
 
-#: systemv/cupstestppd.c:1803
 #, c-format
 msgid "      %s  Empty cupsUIConstraints %s"
 msgstr "      %s  cupsUIConstraints buit %s"
 
-#: systemv/cupstestppd.c:3519 systemv/cupstestppd.c:3559
 #, c-format
 msgid "      %s  Missing \"%s\" translation string for option %s, choice %s."
 msgstr "      %s  Falta la traducció de «%s» per l'opció %s, elecció %s."
 
-#: systemv/cupstestppd.c:3427
 #, c-format
 msgid "      %s  Missing \"%s\" translation string for option %s."
 msgstr "      %s  Falta la traducció de «%s» per l'opció %s."
 
-#: systemv/cupstestppd.c:2418 systemv/cupstestppd.c:2514
-#: systemv/cupstestppd.c:2600 systemv/cupstestppd.c:2658
-#: systemv/cupstestppd.c:2713 systemv/cupstestppd.c:2768
-#: systemv/cupstestppd.c:2823 systemv/cupstestppd.c:2875
-#: systemv/cupstestppd.c:2998
 #, c-format
 msgid "      %s  Missing %s file \"%s\"."
 msgstr "      %s  Falta el fitxer %s «%s»."
 
-#: systemv/cupstestppd.c:3121
 #, c-format
 msgid ""
 "      %s  Missing REQUIRED PageRegion option.\n"
@@ -581,7 +463,6 @@ msgstr ""
 "      %s  Falta l'opció PageRegion NECESSÀRIA .\n"
 "                REF: pàgina 100, secció 5.14."
 
-#: systemv/cupstestppd.c:3106
 #, c-format
 msgid ""
 "      %s  Missing REQUIRED PageSize option.\n"
@@ -590,37 +471,30 @@ msgstr ""
 "      %s  Falta l'opció PageSize NECESSÀRIA.\n"
 "                REF: pàgina 99, secció 5.14."
 
-#: systemv/cupstestppd.c:2013 systemv/cupstestppd.c:2054
 #, c-format
 msgid "      %s  Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\"."
 msgstr "      %s  Falta l'elecció *%s %s a UIConstraints «*%s %s *%s %s»."
 
-#: systemv/cupstestppd.c:1908
 #, c-format
 msgid "      %s  Missing choice *%s %s in cupsUIConstraints %s: \"%s\""
 msgstr "      %s  Falta l'elecció *%s %s a cupsUIConstraints %s: «%s»"
 
-#: systemv/cupstestppd.c:1840
 #, c-format
 msgid "      %s  Missing cupsUIResolver %s"
 msgstr "      %s  Falta el cupsUIResolver %s"
 
-#: systemv/cupstestppd.c:1999 systemv/cupstestppd.c:2040
 #, c-format
 msgid "      %s  Missing option %s in UIConstraints \"*%s %s *%s %s\"."
 msgstr "      %s  Falta l'opció %s a UIConstraints «*%s %s *%s %s»."
 
-#: systemv/cupstestppd.c:1892
 #, c-format
 msgid "      %s  Missing option %s in cupsUIConstraints %s: \"%s\""
 msgstr "      %s  Falta l'opció %s a cupsUIConstraints %s: «%s»"
 
-#: systemv/cupstestppd.c:3613
 #, c-format
 msgid "      %s  No base translation \"%s\" is included in file."
 msgstr "      %s  No s'ha inclòs cap traducció de base «%s» al fitxer."
 
-#: systemv/cupstestppd.c:2294
 #, c-format
 msgid ""
 "      %s  REQUIRED %s does not define choice None.\n"
@@ -629,44 +503,36 @@ msgstr ""
 "      %s  NECESSARI %s no defineix l'eleció «Cap»!\n"
 "                REF: pàgina 122, secció 5.17"
 
-#: systemv/cupstestppd.c:3180 systemv/cupstestppd.c:3194
 #, c-format
 msgid "      %s  Size \"%s\" defined for %s but not for %s."
 msgstr "      %s  Mida \"%s\" definida per %s però no per %s."
 
-#: systemv/cupstestppd.c:3160
 #, c-format
 msgid "      %s  Size \"%s\" has unexpected dimensions (%gx%g)."
 msgstr "      %s  Mida \"%s\" té unes dimensions inesperades (%gx%g)."
 
-#: systemv/cupstestppd.c:3332
 #, c-format
 msgid "      %s  Size \"%s\" should be \"%s\"."
 msgstr "      %s  Mida «%s» hauria de ser «%s»."
 
-#: systemv/cupstestppd.c:3292
 #, c-format
 msgid "      %s  Size \"%s\" should be the Adobe standard name \"%s\"."
 msgstr "      %s  Mida \"%s\" hauria de ser el nom estàndard d'Adobe «%s»."
 
-#: systemv/cupstestppd.c:3041
 #, c-format
 msgid "      %s  cupsICCProfile %s hash value collides with %s."
 msgstr "      %s  cupsICCProfile %s el valor resum (hash) col·lideix amb %s."
 
-#: systemv/cupstestppd.c:1963
 #, c-format
 msgid "      %s  cupsUIResolver %s causes a loop."
 msgstr "      %s  cupsUIResolver %s entra en bucle."
 
-#: systemv/cupstestppd.c:1945
 #, c-format
 msgid ""
 "      %s  cupsUIResolver %s does not list at least two different options."
 msgstr ""
 "      %s  cupsUIResolver %s no llista com a mínim dues opcions diferents."
 
-#: systemv/cupstestppd.c:1168
 #, c-format
 msgid ""
 "      **FAIL**  %s must be 1284DeviceID\n"
@@ -675,7 +541,6 @@ msgstr ""
 "      **ERROR**  %s ha de ser 1284DeviceID!\n"
 "                REF: pàgina 72, secció 5.5"
 
-#: systemv/cupstestppd.c:580
 #, c-format
 msgid ""
 "      **FAIL**  Bad Default%s %s\n"
@@ -684,7 +549,6 @@ msgstr ""
 "      **ERROR**  Default%s incorrecte %s\n"
 "                REF: pàgina 40, secció 4.5."
 
-#: systemv/cupstestppd.c:514
 #, c-format
 msgid ""
 "      **FAIL**  Bad DefaultImageableArea %s\n"
@@ -693,7 +557,6 @@ msgstr ""
 "      **ERROR**  DefaultImageableArea incorrecte %s\n"
 "                REF: pàgina 102, secció 5.15."
 
-#: systemv/cupstestppd.c:550
 #, c-format
 msgid ""
 "      **FAIL**  Bad DefaultPaperDimension %s\n"
@@ -702,7 +565,6 @@ msgstr ""
 "      **ERROR**  DefaultPaperDimension incorrecte %s\n"
 "                REF: pàgina 103, secció 5.15."
 
-#: systemv/cupstestppd.c:623
 #, c-format
 msgid ""
 "      **FAIL**  Bad FileVersion \"%s\"\n"
@@ -711,7 +573,6 @@ msgstr ""
 "      **ERROR**  FileVersion incorrecte «%s»\n"
 "                REF: pàgina 56, secció 5.3."
 
-#: systemv/cupstestppd.c:667
 #, c-format
 msgid ""
 "      **FAIL**  Bad FormatVersion \"%s\"\n"
@@ -720,7 +581,6 @@ msgstr ""
 "      **ERROR**  FormatVersion incorrecte «%s»\n"
 "                REF: pàgina 56, secció 5.3."
 
-#: systemv/cupstestppd.c:1025
 msgid ""
 "      **FAIL**  Bad JobPatchFile attribute in file\n"
 "                REF: Page 24, section 3.4."
@@ -728,17 +588,14 @@ msgstr ""
 "      **ERROR**  atribut de JobPatchFile incorrecte al fitxer\n"
 "                REF: pàgina 24, secció 3.4."
 
-#: systemv/cupstestppd.c:1213
 #, c-format
 msgid "      **FAIL**  Bad LanguageEncoding %s - must be ISOLatin1."
 msgstr "      **ERROR**  LanguageEncoding incorrecte %s: ha de ser ISOLatin1."
 
-#: systemv/cupstestppd.c:1227
 #, c-format
 msgid "      **FAIL**  Bad LanguageVersion %s - must be English."
 msgstr "      **ERROR**  LanguageVersion incorrecta %s: ha de ser anglès."
 
-#: systemv/cupstestppd.c:743 systemv/cupstestppd.c:760
 #, c-format
 msgid ""
 "      **FAIL**  Bad Manufacturer (should be \"%s\")\n"
@@ -747,7 +604,6 @@ msgstr ""
 "      **ERROR**  Manufacturer incorrecte (hauria de ser «%s»)\n"
 "                REF: pàgina 211, taula D.1."
 
-#: systemv/cupstestppd.c:800
 #, c-format
 msgid ""
 "      **FAIL**  Bad ModelName - \"%c\" not allowed in string.\n"
@@ -756,7 +612,6 @@ msgstr ""
 "      **ERROR**  ModelName incorrecte - no es permet «%c» a la cadena.\n"
 "                REF: pàgines 59-60, secció 5.3."
 
-#: systemv/cupstestppd.c:956
 msgid ""
 "      **FAIL**  Bad PSVersion - not \"(string) int\".\n"
 "                REF: Pages 62-64, section 5.3."
@@ -764,7 +619,6 @@ msgstr ""
 "      **ERROR**  PSVersion incorrecte - no és «(cadena) enter».\n"
 "                REF: pàgines 62-64, secció 5.3."
 
-#: systemv/cupstestppd.c:917
 msgid ""
 "      **FAIL**  Bad Product - not \"(string)\".\n"
 "                REF: Page 62, section 5.3."
@@ -772,7 +626,6 @@ msgstr ""
 "      **ERROR**  Product incorrecte - no és «(cadena)».\n"
 "                REF: pàgina 62, secció 5.3."
 
-#: systemv/cupstestppd.c:991
 msgid ""
 "      **FAIL**  Bad ShortNickName - longer than 31 chars.\n"
 "                REF: Pages 64-65, section 5.3."
@@ -780,7 +633,6 @@ msgstr ""
 "      **ERROR**  ShortNickName incorrecte - més llarg de 31 caràcters.\n"
 "                REF: pàgines 64-65, secció 5.3."
 
-#: systemv/cupstestppd.c:1149
 #, c-format
 msgid ""
 "      **FAIL**  Bad option %s choice %s\n"
@@ -789,13 +641,11 @@ msgstr ""
 "      **ERROR**  Elecció %s incorrecta %s\n"
 "                REF: pàgina 84, secció 5.9"
 
-#: systemv/cupstestppd.c:3754 systemv/cupstestppd.c:3776
 #, c-format
 msgid "      **FAIL**  Default option code cannot be interpreted: %s"
 msgstr ""
 "      **ERROR**  El codi de l'opció per defecte no es pot interpretar: %s"
 
-#: systemv/cupstestppd.c:1286
 #, c-format
 msgid ""
 "      **FAIL**  Default translation string for option %s choice %s contains "
@@ -804,7 +654,6 @@ msgstr ""
 "      **ERROR**  La traducció per defecte de l'opció %s elecció %s conté "
 "caràcters de 8 bits."
 
-#: systemv/cupstestppd.c:1259
 #, c-format
 msgid ""
 "      **FAIL**  Default translation string for option %s contains 8-bit "
@@ -813,34 +662,29 @@ msgstr ""
 "      **ERROR**  La traducció per defecte de l'opció %s conté caràcters de 8 "
 "bits."
 
-#: systemv/cupstestppd.c:2101
 #, c-format
 msgid "      **FAIL**  Group names %s and %s differ only by case."
 msgstr ""
 "      **ERROR**  Els noms dels grups %s i %s només es diferencien en les "
 "majúscules."
 
-#: systemv/cupstestppd.c:2146
 #, c-format
 msgid "      **FAIL**  Multiple occurrences of option %s choice name %s."
 msgstr ""
 "      **ERROR**  Coincidències múltiples de l'opció %s nom de l'elecció %s."
 
-#: systemv/cupstestppd.c:2163
 #, c-format
 msgid "      **FAIL**  Option %s choice names %s and %s differ only by case."
 msgstr ""
 "      **ERROR**  L'opció %s noms de les opcions %s i %s només es diferencien "
 "per les majúscules."
 
-#: systemv/cupstestppd.c:2123
 #, c-format
 msgid "      **FAIL**  Option names %s and %s differ only by case."
 msgstr ""
 "      **ERROR**  Els noms de les opcions %s i %s només es diferencien per "
 "les majúscules."
 
-#: systemv/cupstestppd.c:600
 #, c-format
 msgid ""
 "      **FAIL**  REQUIRED Default%s\n"
@@ -849,7 +693,6 @@ msgstr ""
 "      **ERROR**  ES NECESSITA Default%s\n"
 "                REF: pàgina 40, secció 4.5."
 
-#: systemv/cupstestppd.c:499
 msgid ""
 "      **FAIL**  REQUIRED DefaultImageableArea\n"
 "                REF: Page 102, section 5.15."
@@ -857,7 +700,6 @@ msgstr ""
 "      **ERROR**  ES NECESSITA DefaultImageableArea\n"
 "                REF: pàgina 102, secció 5.15."
 
-#: systemv/cupstestppd.c:535
 msgid ""
 "      **FAIL**  REQUIRED DefaultPaperDimension\n"
 "                REF: Page 103, section 5.15."
@@ -865,7 +707,6 @@ msgstr ""
 "      **ERROR**  ES NECESSITA DefaultPaperDimension\n"
 "                REF: pàgina 103, secció 5.15."
 
-#: systemv/cupstestppd.c:641
 msgid ""
 "      **FAIL**  REQUIRED FileVersion\n"
 "                REF: Page 56, section 5.3."
@@ -873,7 +714,6 @@ msgstr ""
 "      **ERROR**  ES NECESSITA FileVersion\n"
 "                REF: pàgina 56, secció 5.3."
 
-#: systemv/cupstestppd.c:685
 msgid ""
 "      **FAIL**  REQUIRED FormatVersion\n"
 "                REF: Page 56, section 5.3."
@@ -881,7 +721,6 @@ msgstr ""
 "      **ERROR**  ES NECESSITA FormatVersion\n"
 "                REF: pàgina 56, secció 5.3."
 
-#: systemv/cupstestppd.c:1076
 #, c-format
 msgid ""
 "      **FAIL**  REQUIRED ImageableArea for PageSize %s\n"
@@ -892,7 +731,6 @@ msgstr ""
 "                REF: pàgina 41, secció 5.\n"
 "                REF: pàgina 102, secció 5.15."
 
-#: systemv/cupstestppd.c:705
 msgid ""
 "      **FAIL**  REQUIRED LanguageEncoding\n"
 "                REF: Pages 56-57, section 5.3."
@@ -900,7 +738,6 @@ msgstr ""
 "      **ERROR**  ES NECESSITA LanguageEncoding\n"
 "                REF: pàgines 56-57, secció 5.3."
 
-#: systemv/cupstestppd.c:725
 msgid ""
 "      **FAIL**  REQUIRED LanguageVersion\n"
 "                REF: Pages 57-58, section 5.3."
@@ -908,7 +745,6 @@ msgstr ""
 "      **ERROR**  ES NECESSITA LanguageVersion\n"
 "                REF: pàgines 57-58, secció 5.3."
 
-#: systemv/cupstestppd.c:779
 msgid ""
 "      **FAIL**  REQUIRED Manufacturer\n"
 "                REF: Pages 58-59, section 5.3."
@@ -916,7 +752,6 @@ msgstr ""
 "      **ERROR**  ES NECESSITA Manufacturer\n"
 "                REF: pàgines 58-59, secció 5.3."
 
-#: systemv/cupstestppd.c:819
 msgid ""
 "      **FAIL**  REQUIRED ModelName\n"
 "                REF: Pages 59-60, section 5.3."
@@ -924,7 +759,6 @@ msgstr ""
 "      **ERROR**  ES NECESSITA ModelName\n"
 "                REF: pàgines 59-60, secció 5.3."
 
-#: systemv/cupstestppd.c:839
 msgid ""
 "      **FAIL**  REQUIRED NickName\n"
 "                REF: Page 60, section 5.3."
@@ -932,7 +766,6 @@ msgstr ""
 "      **ERROR**  ES NECESSITA NickName\n"
 "                REF: pàgina 60, secció 5.3."
 
-#: systemv/cupstestppd.c:899
 msgid ""
 "      **FAIL**  REQUIRED PCFileName\n"
 "                REF: Pages 61-62, section 5.3."
@@ -940,7 +773,6 @@ msgstr ""
 "      **ERROR**  ES NECESSITA PCFileName\n"
 "                REF: pàgines 61-62, secció 5.3."
 
-#: systemv/cupstestppd.c:974
 msgid ""
 "      **FAIL**  REQUIRED PSVersion\n"
 "                REF: Pages 62-64, section 5.3."
@@ -948,7 +780,6 @@ msgstr ""
 "      **ERROR**  ES NECESSITA PSVersion\n"
 "                REF: pàgines 62-64, secció 5.3."
 
-#: systemv/cupstestppd.c:879
 msgid ""
 "      **FAIL**  REQUIRED PageRegion\n"
 "                REF: Page 100, section 5.14."
@@ -956,7 +787,6 @@ msgstr ""
 "      **ERROR**  ES NECESSITA PageRegion\n"
 "                REF: pàgina 100, secció 5.14."
 
-#: systemv/cupstestppd.c:1045
 msgid ""
 "      **FAIL**  REQUIRED PageSize\n"
 "                REF: Page 41, section 5.\n"
@@ -966,7 +796,6 @@ msgstr ""
 "                REF: pàgina 41, secció 5.\n"
 "                REF: pàgina 99, secció 5.14."
 
-#: systemv/cupstestppd.c:859
 msgid ""
 "      **FAIL**  REQUIRED PageSize\n"
 "                REF: Pages 99-100, section 5.14."
@@ -974,7 +803,6 @@ msgstr ""
 "      **ERROR**  ES NECESSITA PageSize\n"
 "                REF: pàgines 99-100, secció 5.14."
 
-#: systemv/cupstestppd.c:1098
 #, c-format
 msgid ""
 "      **FAIL**  REQUIRED PaperDimension for PageSize %s\n"
@@ -985,7 +813,6 @@ msgstr ""
 "                REF: pàgina 41, secció 5.\n"
 "                REF: pàgina 103, secció 5.15."
 
-#: systemv/cupstestppd.c:934
 msgid ""
 "      **FAIL**  REQUIRED Product\n"
 "                REF: Page 62, section 5.3."
@@ -993,7 +820,6 @@ msgstr ""
 "      **ERROR**  ES NECESSITA Product\n"
 "                REF: pàgina 62, secció 5.3."
 
-#: systemv/cupstestppd.c:1009
 msgid ""
 "      **FAIL**  REQUIRED ShortNickName\n"
 "                REF: Page 64-65, section 5.3."
@@ -1001,22 +827,17 @@ msgstr ""
 "      **FAIL**  ES NECESSITA ShortNickName\n"
 "                REF: pàgina 64-65, secció 5.3."
 
-#: systemv/cupstestppd.c:334 systemv/cupstestppd.c:353
-#: systemv/cupstestppd.c:365
 #, c-format
 msgid "      **FAIL**  Unable to open PPD file - %s on line %d."
 msgstr "      **ERROR** No es pot obrir el fitxer PPD - %s a la línia %d."
 
-#: systemv/cupstestppd.c:1498
 #, c-format
 msgid "    %d ERRORS FOUND"
 msgstr "    %d S'HAN TROBAT ERRORS"
 
-#: systemv/cupstestdsc.c:431
 msgid "    -h       Show program usage"
 msgstr "    -h       Mostra la sintaxi del programa"
 
-#: systemv/cupstestdsc.c:234 systemv/cupstestdsc.c:276
 #, c-format
 msgid ""
 "    Bad %%%%BoundingBox: on line %d.\n"
@@ -1025,7 +846,6 @@ msgstr ""
 "    %%%%BoundingBox incorrecte: a la línia %d.\n"
 "        REF: pàgina 39, %%%%BoundingBox:"
 
-#: systemv/cupstestdsc.c:305
 #, c-format
 msgid ""
 "    Bad %%%%Page: on line %d.\n"
@@ -1034,7 +854,6 @@ msgstr ""
 "    %%%%Page incorrecte: a la línia %d.\n"
 "        REF: pàgina 53, %%%%Page:"
 
-#: systemv/cupstestdsc.c:218 systemv/cupstestdsc.c:258
 #, c-format
 msgid ""
 "    Bad %%%%Pages: on line %d.\n"
@@ -1043,7 +862,6 @@ msgstr ""
 "    %%%%Pages incorrecte: a la línia %d!\n"
 "        REF: pàgina 43, %%%%Pages:"
 
-#: systemv/cupstestdsc.c:176
 #, c-format
 msgid ""
 "    Line %d is longer than 255 characters (%d).\n"
@@ -1052,7 +870,6 @@ msgstr ""
 "    La línia %d és més llarga de 255 caràcters (%d)\n"
 "        REF: pàgina 25, Longitud de línia"
 
-#: systemv/cupstestdsc.c:192
 msgid ""
 "    Missing %!PS-Adobe-3.0 on first line.\n"
 "        REF: Page 17, 3.1 Conforming Documents"
@@ -1060,13 +877,11 @@ msgstr ""
 "    Falta %!PS-Adobe-3.0 a la primera línia.\n"
 "        REF: pàgina 17, 3.1 Adaptació de documents"
 
-#: systemv/cupstestdsc.c:362
 #, c-format
 msgid "    Missing %%EndComments comment.        REF: Page 41, %%EndComments"
 msgstr ""
 "    Falta el comentari %%EndComments.        REF: pàgina 41, %%EndComments"
 
-#: systemv/cupstestdsc.c:342
 #, c-format
 msgid ""
 "    Missing or bad %%BoundingBox: comment.\n"
@@ -1075,7 +890,6 @@ msgstr ""
 "     %%BoundingBox incorrecte o inexistent: comentari.\n"
 "        REF: pàgina 39, %%BoundingBox:"
 
-#: systemv/cupstestdsc.c:372
 #, c-format
 msgid ""
 "    Missing or bad %%Page: comments.\n"
@@ -1084,7 +898,6 @@ msgstr ""
 "    %%Page incorrecte o inexistent: comentaris.\n"
 "        REF: pàgina 53, %%Page:"
 
-#: systemv/cupstestdsc.c:352
 #, c-format
 msgid ""
 "    Missing or bad %%Pages: comment.\n"
@@ -1093,159 +906,124 @@ msgstr ""
 "    %%Pages incorrecte o inexistent: comentari.\n"
 "        REF: pàgina 43, %%Pages:"
 
-#: systemv/cupstestppd.c:1500
 msgid "    NO ERRORS FOUND"
 msgstr "    NO S'HA TROBAT CAP ERROR"
 
-#: systemv/cupstestdsc.c:395
 #, c-format
 msgid "    Saw %d lines that exceeded 255 characters."
 msgstr "     S'han trobat %d línies que superen els 255 caràcters."
 
-#: systemv/cupstestdsc.c:390
 #, c-format
 msgid "    Too many %%BeginDocument comments."
 msgstr "     Massa comentaris %%BeginDocument."
 
-#: systemv/cupstestdsc.c:382
 #, c-format
 msgid "    Too many %%EndDocument comments."
 msgstr "     Massa comentaris %%EndDocument."
 
-#: systemv/cupstestdsc.c:402
 msgid "    Warning: file contains binary data."
 msgstr "     Avís: el fitxer conté dades binàries."
 
-#: systemv/cupstestdsc.c:410
 #, c-format
 msgid "    Warning: no %%EndComments comment in file."
 msgstr "     Avís: no hi ha cap %%EndComments al fitxer."
 
-#: systemv/cupstestdsc.c:406
 #, c-format
 msgid "    Warning: obsolete DSC version %.1f in file."
 msgstr "     Avís: versió del DSC %.1f obsoleta al fitxer."
 
-#: systemv/cupsctl.c:210
 msgid "  --[no-]debug-logging    Turn debug logging on/off."
 msgstr "  --[no-]debug-logging    Activa o desactiva el registre de depuració."
 
-#: systemv/cupsctl.c:212
 msgid "  --[no-]remote-admin     Turn remote administration on/off."
 msgstr "  --[no-]remote-admin     Activa o desactiva l'administració remota."
 
-#: systemv/cupsctl.c:214
 msgid "  --[no-]remote-any       Allow/prevent access from the Internet."
 msgstr "  --[no-]remote-any       Permet o impedeix l'accés des d'Internet."
 
-#: systemv/cupsctl.c:216
 msgid "  --[no-]share-printers   Turn printer sharing on/off."
 msgstr ""
 "  --[no-]share-printers   Activa o desactiva la compartició d'impressores."
 
-#: systemv/cupsctl.c:218
 msgid "  --[no-]user-cancel-any  Allow/prevent users to cancel any job."
 msgstr ""
 "  --[no-]user-cancel-any  Permet o impedeix que els usuaris cancel·lin "
 "tasques."
 
-#: ppdc/ppdc.cxx:455
 msgid "  --cr                    End lines with CR (Mac OS 9)."
 msgstr "  --cr                    Final de línia amb CR (Mac OS 9)."
 
-#: ppdc/ppdc.cxx:457
 msgid "  --crlf                  End lines with CR + LF (Windows)."
 msgstr "  --crlf                  Final de línia amb CR + LF (Windows)."
 
-#: ppdc/ppdc.cxx:459
 msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
 msgstr "  --lf                    Final de línia amb LF (UNIX/Linux/OS X)."
 
-#: test/ipptool.c:4404
 msgid "  -4                      Connect using IPv4."
 msgstr "  -4                      Connecta fent servir IPv4."
 
-#: test/ipptool.c:4405
 msgid "  -6                      Connect using IPv6."
 msgstr "  -6                      Connecta fent servir IPv6."
 
-#: test/ipptool.c:4406
 msgid "  -C                      Send requests using chunking (default)."
 msgstr ""
 "  -C                      Envia les sol·licituds fent servir la fragmentació "
 "(per defecte)."
 
-#: scheduler/cupsfilter.c:1431
 msgid "  -D                      Remove the input file when finished."
 msgstr "  -D                      Elimina el fitxer d'entrada quan ha acabat."
 
-#: ppdc/ppdc.cxx:438 ppdc/ppdhtml.cxx:175 ppdc/ppdpo.cxx:255
 msgid "  -D name=value           Set named variable to value."
 msgstr "  -D nom=valor            Estableix la variable indicada al valor."
 
-#: systemv/cupsaddsmb.c:285 systemv/cupsctl.c:205
 msgid "  -E                      Encrypt the connection."
 msgstr "  -E                      Xifra la connexió."
 
-#: test/ipptool.c:4408
 msgid "  -E                      Test with HTTP Upgrade to TLS."
 msgstr ""
 "  -E                      Fa una prova amb l'actualització d'HTTP a TLS."
 
-#: scheduler/main.c:2021
 msgid ""
 "  -F                      Run in the foreground but detach from console."
 msgstr ""
 "  -F                      Executa en primer pla però separat de la consola."
 
-#: systemv/cupsaddsmb.c:286
 msgid "  -H samba-server         Use the named SAMBA server."
 msgstr "  -H servidor-samba         Fa servir el servidor SAMBA indicat."
 
-#: test/ipptool.c:4410
 msgid "  -I                      Ignore errors."
 msgstr "  -I                      Ignora els errors."
 
-#: ppdc/ppdc.cxx:440 ppdc/ppdhtml.cxx:177 ppdc/ppdi.cxx:131 ppdc/ppdpo.cxx:257
 msgid "  -I include-dir          Add include directory to search path."
 msgstr "  -I dir-inclòs          Afegeix el directori inclòs al camí de cerca."
 
-#: systemv/cupstestppd.c:3799
 msgid "  -I {filename,filters,none,profiles}"
 msgstr "  -I {nomfitxer,filtres,cap,perfils}"
 
-#: test/ipptool.c:4411
 msgid "  -L                      Send requests using content-length."
 msgstr ""
 "  -L                      Envia les peticions fent servir content-length."
 
-#: scheduler/cupsfilter.c:1433
 msgid "  -P filename.ppd         Set PPD file."
 msgstr "  -P nomfitxer.ppd         Estableix el fitxer PPD."
 
-#: systemv/cupstestppd.c:3801
 msgid "  -R root-directory       Set alternate root."
 msgstr "  -R directori-arrel       Estableix una arrel alternativa."
 
-#: test/ipptool.c:4413
 msgid "  -S                      Test with SSL encryption."
 msgstr "  -S                      Fa una prova amb xifrat SSL."
 
-#: test/ipptool.c:4415
 msgid "  -T seconds              Set the receive/send timeout in seconds."
 msgstr ""
 "  -T segons              Estableix el temps d'espera màxim per enviar i "
 "rebre en segons."
 
-#: scheduler/cupsfilter.c:1434 systemv/cupsaddsmb.c:288 systemv/cupsctl.c:206
 msgid "  -U username             Specify username."
 msgstr "  -U nomusuari             Especifica un nom d'usuari."
 
-#: test/ipptool.c:4417
 msgid "  -V version              Set default IPP version."
 msgstr "  -V versió              Estableix la versió per defecte del IPP."
 
-#: systemv/cupstestppd.c:3802
 msgid ""
 "  -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,"
 "translations}"
@@ -1253,71 +1031,56 @@ msgstr ""
 "  -W {tots,cap,restringits,per defecte,dúplex,filtres,perfils,mides,"
 "traduccions}"
 
-#: test/ipptool.c:4419
 msgid "  -X                      Produce XML plist instead of plain text."
 msgstr ""
 "  -X                      Retorna els plist en XML en comptes de text pla."
 
-#: systemv/cupsaddsmb.c:289
 msgid "  -a                      Export all printers."
 msgstr "  -a                      Exporta totes les impressores."
 
-#: ppdc/ppdc.cxx:442
 msgid "  -c catalog.po           Load the specified message catalog."
 msgstr "  -c catàleg.po           Carrega el catàleg de missatges indicat."
 
-#: scheduler/cupsfilter.c:1435 scheduler/main.c:2019
 msgid "  -c cupsd.conf           Set cupsd.conf file to use."
 msgstr ""
 "  -c cupsd.conf           Estableix el fitxer cupsd.conf que cal fer servir."
 
-#: test/ipptool.c:4421
 msgid "  -d name=value           Set named variable to value."
 msgstr "  -d nom=valor           Estableix la variable indicada al valor."
 
-#: ppdc/ppdc.cxx:444
 msgid "  -d output-dir           Specify the output directory."
 msgstr "  -d dir-sortida           Especifica el directori de sortida."
 
-#: scheduler/cupsfilter.c:1437
 msgid "  -d printer              Use the named printer."
 msgstr "  -d impressora              Fa servir la impressora indicada."
 
-#: scheduler/cupsfilter.c:1439
 msgid "  -e                      Use every filter from the PPD file."
 msgstr "  -e                      Fa servir tots els filtres del fitxer PPD."
 
-#: scheduler/main.c:2020
 msgid "  -f                      Run in the foreground."
 msgstr "  -f                      Executa en primer pla."
 
-#: test/ipptool.c:4423
 msgid "  -f filename             Set default request filename."
 msgstr ""
 "  -f nomfitxer             Estableix el nom del fitxer per defecte de la "
 "sol·licitud."
 
-#: scheduler/main.c:2023
 msgid "  -h                      Show this usage message."
 msgstr "  -h                      Mostra aquest missatge de sintaxi."
 
-#: systemv/cupsaddsmb.c:290 systemv/cupsctl.c:207
 msgid "  -h server[:port]        Specify server address."
 msgstr "  -h servidor[:port]        Especifica l'adreça del servidor."
 
-#: scheduler/cupsfilter.c:1441
 msgid "  -i mime/type            Set input MIME type (otherwise auto-typed)."
 msgstr ""
 "  -i tipus/mime            Estableix el tipus MIME d'entrada (auto-typed si "
 "no s'especifica)."
 
-#: test/ipptool.c:4425
 msgid ""
 "  -i seconds              Repeat the last file with the given time interval."
 msgstr ""
 "  -i segons              Repeteix l'últim fitxer amb l'interval especificat."
 
-#: scheduler/cupsfilter.c:1443
 msgid ""
 "  -j job-id[,N]           Filter file N from the specified job (default is "
 "file 1)."
@@ -1325,255 +1088,157 @@ msgstr ""
 "  -j id-tasca[,N]           Filtra el fitxer N a la tasca especificada (el "
 "fitxer per defecte és 1)."
 
-#: scheduler/main.c:2024
 msgid "  -l                      Run cupsd from launchd(8)."
 msgstr "  -l                      Executa cupsd des de launchd(8)."
 
-#: ppdc/ppdc.cxx:446
 msgid "  -l lang[,lang,...]      Specify the output language(s) (locale)."
 msgstr ""
 "  -l idioma[,idioma,...]      Especifica els idiomes de sortida (locale)."
 
-#: ppdc/ppdc.cxx:448
 msgid "  -m                      Use the ModelName value as the filename."
 msgstr ""
 "  -m                      Fa servir el valor de ModelName com a nom de "
 "fitxer."
 
-#: scheduler/cupsfilter.c:1445
 msgid ""
 "  -m mime/type            Set output MIME type (otherwise application/pdf)."
 msgstr ""
 "  -m tipus/mime            Estableix el tipus MIME de sortida (application/"
 "pdf si no s'especifica)."
 
-#: scheduler/cupsfilter.c:1447
 msgid "  -n copies               Set number of copies."
 msgstr "  -n còpies               Estableix el nombre de còpies."
 
-#: test/ipptool.c:4427
 msgid ""
 "  -n count                Repeat the last file the given number of times."
 msgstr ""
 "  -n comptador                Repeteix l'últim fitxer el nombre indicat de "
 "vegades."
 
-#: ppdc/ppdi.cxx:133
 msgid ""
 "  -o filename.drv         Set driver information file (otherwise ppdi.drv)."
 msgstr ""
 "  -o nomfitxer.drv         Estableix el fitxer d'informació del controlador "
 "(ppdi.drv si no s'especifica)."
 
-#: ppdc/ppdmerge.cxx:370
 msgid "  -o filename.ppd[.gz]    Set output file (otherwise stdout)."
 msgstr ""
 "  -o nomfitxer.ppd[.gz]    Estableix el fitxer de sortida (stdout si no "
 "s'especifica)."
 
-#: scheduler/cupsfilter.c:1448
 msgid "  -o name=value           Set option(s)."
 msgstr "  -o nom=valor           Estableix les opcions."
 
-#: scheduler/cupsfilter.c:1449
 msgid "  -p filename.ppd         Set PPD file."
 msgstr "  -p nomfitxer.ppd         Estableix el fitxer PPD."
 
-#: systemv/cupstestppd.c:3806 test/ipptool.c:4429
 msgid "  -q                      Run silently."
 msgstr "  -q                      S'executa en mode silenciós."
 
-#: systemv/cupstestppd.c:3807
 msgid "  -r                      Use 'relaxed' open mode."
 msgstr "  -r                      Fa servir el mode obert «relaxat»."
 
-#: test/ipptool.c:4430
 msgid "  -t                      Produce a test report."
 msgstr "  -t                      Genera un informe de prova."
 
-#: ppdc/ppdc.cxx:450
 msgid "  -t                      Test PPDs instead of generating them."
 msgstr "  -t                      Prova els  PPDs en comptes de generar-los."
 
-#: scheduler/main.c:2025
 msgid "  -t                      Test the configuration file."
 msgstr "  -t                      Prova el fitxer de configuració."
 
-#: scheduler/cupsfilter.c:1450
 msgid "  -t title                Set title."
 msgstr "  -t títol                Estableix el títol."
 
-#: scheduler/cupsfilter.c:1451
 msgid "  -u                      Remove the PPD file when finished."
 msgstr "  -u                      Elimina el fitxer PPD quan ha acabat."
 
-#: systemv/cupsaddsmb.c:291 systemv/cupstestppd.c:3808 test/ipptool.c:4431
-#: ppdc/ppdc.cxx:452 ppdc/ppdpo.cxx:259
 msgid "  -v                      Be verbose."
 msgstr "  -v                      Mode detallat."
 
-#: systemv/cupstestppd.c:3809
 msgid "  -vv                     Be very verbose."
 msgstr "  -vv                     Mode molt detallat."
 
-#: ppdc/ppdc.cxx:453
 msgid "  -z                      Compress PPD files using GNU zip."
 msgstr ""
 "  -z                      Comprimeix els fitxers PPD fent servir el zip de "
 "GNU."
 
-#: systemv/cupstestppd.c:332 systemv/cupstestppd.c:351
-#: systemv/cupstestppd.c:363 systemv/cupstestppd.c:496
-#: systemv/cupstestppd.c:511 systemv/cupstestppd.c:532
-#: systemv/cupstestppd.c:547 systemv/cupstestppd.c:577
-#: systemv/cupstestppd.c:597 systemv/cupstestppd.c:620
-#: systemv/cupstestppd.c:638 systemv/cupstestppd.c:664
-#: systemv/cupstestppd.c:682 systemv/cupstestppd.c:702
-#: systemv/cupstestppd.c:722 systemv/cupstestppd.c:740
-#: systemv/cupstestppd.c:757 systemv/cupstestppd.c:776
-#: systemv/cupstestppd.c:797 systemv/cupstestppd.c:816
-#: systemv/cupstestppd.c:836 systemv/cupstestppd.c:856
-#: systemv/cupstestppd.c:876 systemv/cupstestppd.c:896
-#: systemv/cupstestppd.c:914 systemv/cupstestppd.c:931
-#: systemv/cupstestppd.c:953 systemv/cupstestppd.c:971
-#: systemv/cupstestppd.c:988 systemv/cupstestppd.c:1006
-#: systemv/cupstestppd.c:1022 systemv/cupstestppd.c:1042
-#: systemv/cupstestppd.c:1073 systemv/cupstestppd.c:1095
-#: systemv/cupstestppd.c:1146 systemv/cupstestppd.c:1165
-#: systemv/cupstestppd.c:1209 systemv/cupstestppd.c:1223
-#: systemv/cupstestppd.c:1255 systemv/cupstestppd.c:1282
-#: systemv/cupstestppd.c:1800 systemv/cupstestppd.c:1819
-#: systemv/cupstestppd.c:1837 systemv/cupstestppd.c:1889
-#: systemv/cupstestppd.c:1905 systemv/cupstestppd.c:1942
-#: systemv/cupstestppd.c:1960 systemv/cupstestppd.c:1996
-#: systemv/cupstestppd.c:2010 systemv/cupstestppd.c:2037
-#: systemv/cupstestppd.c:2051 systemv/cupstestppd.c:2097
-#: systemv/cupstestppd.c:2119 systemv/cupstestppd.c:2142
-#: systemv/cupstestppd.c:2159 systemv/cupstestppd.c:2201
-#: systemv/cupstestppd.c:2244 systemv/cupstestppd.c:2291
-#: systemv/cupstestppd.c:2315 systemv/cupstestppd.c:2369
-#: systemv/cupstestppd.c:2385 systemv/cupstestppd.c:2415
-#: systemv/cupstestppd.c:2429 systemv/cupstestppd.c:2455
-#: systemv/cupstestppd.c:2471 systemv/cupstestppd.c:2511
-#: systemv/cupstestppd.c:2525 systemv/cupstestppd.c:2551
-#: systemv/cupstestppd.c:2567 systemv/cupstestppd.c:2597
-#: systemv/cupstestppd.c:2611 systemv/cupstestppd.c:2638
-#: systemv/cupstestppd.c:2655 systemv/cupstestppd.c:2669
-#: systemv/cupstestppd.c:2693 systemv/cupstestppd.c:2710
-#: systemv/cupstestppd.c:2724 systemv/cupstestppd.c:2748
-#: systemv/cupstestppd.c:2765 systemv/cupstestppd.c:2779
-#: systemv/cupstestppd.c:2803 systemv/cupstestppd.c:2820
-#: systemv/cupstestppd.c:2834 systemv/cupstestppd.c:2858
-#: systemv/cupstestppd.c:2872 systemv/cupstestppd.c:2887
-#: systemv/cupstestppd.c:2904 systemv/cupstestppd.c:2960
-#: systemv/cupstestppd.c:2995 systemv/cupstestppd.c:3009
-#: systemv/cupstestppd.c:3037 systemv/cupstestppd.c:3102
-#: systemv/cupstestppd.c:3117 systemv/cupstestppd.c:3156
-#: systemv/cupstestppd.c:3176 systemv/cupstestppd.c:3190
-#: systemv/cupstestppd.c:3387 systemv/cupstestppd.c:3423
-#: systemv/cupstestppd.c:3437 systemv/cupstestppd.c:3483
-#: systemv/cupstestppd.c:3515 systemv/cupstestppd.c:3532
-#: systemv/cupstestppd.c:3555 systemv/cupstestppd.c:3571
-#: systemv/cupstestppd.c:3609 systemv/cupstestppd.c:3750
-#: systemv/cupstestppd.c:3772 systemv/cupstestppd.c:3880
 msgid " FAIL"
 msgstr " ERROR"
 
-#: systemv/cupstestppd.c:1306
 msgid " PASS"
 msgstr " VÀLID"
 
-#: berkeley/lpq.c:560
 #, c-format
 msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
 msgstr "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
 
-#: berkeley/lpq.c:565
 #, c-format
 msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
 msgstr "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
 
-#: systemv/lpstat.c:750
 #, c-format
 msgid "%s accepting requests since %s"
 msgstr "%s accepta peticions des de %s"
 
-#: scheduler/ipp.c:10045
 #, c-format
 msgid "%s cannot be changed."
 msgstr "%s no es pot canviar."
 
-#: berkeley/lpc.c:189
 #, c-format
 msgid "%s is not implemented by the CUPS version of lpc."
 msgstr "%s no està implementat en la versió del CUPS del lpc."
 
-#: berkeley/lpq.c:651
 #, c-format
 msgid "%s is not ready"
 msgstr "%s no està preparada"
 
-#: berkeley/lpq.c:644
 #, c-format
 msgid "%s is ready"
 msgstr "%s està preparada"
 
-#: berkeley/lpq.c:647
 #, c-format
 msgid "%s is ready and printing"
 msgstr "%s està preparada i imprimeix"
 
-#: filter/rastertoepson.c:985 filter/rastertohp.c:711
-#: filter/rastertolabel.c:1134
 #, c-format
 msgid "%s job-id user title copies options [file]"
 msgstr "%s identificador-tasca usuari títol còpies opcions [fitxer]"
 
-#: systemv/lpstat.c:754
 #, c-format
 msgid "%s not accepting requests since %s -"
 msgstr "%s no accepta peticions des de %s -"
 
-#: scheduler/ipp.c:691
 #, c-format
 msgid "%s not supported."
 msgstr "no es permet l'ús de %s."
 
-#: systemv/lpstat.c:765
 #, c-format
 msgid "%s/%s accepting requests since %s"
 msgstr "%s/%s accepta peticions des de %s"
 
-#: systemv/lpstat.c:770
 #, c-format
 msgid "%s/%s not accepting requests since %s -"
 msgstr "%s/%s no accepta peticions des de %s -"
 
-#: berkeley/lpq.c:552
 #, c-format
 msgid "%s: %-33.33s [job %d localhost]"
 msgstr "%s: %-33.33s [tasca %d localhost]"
 
 #. TRANSLATORS: Message is "subject: error"
-#: cups/langprintf.c:86 scheduler/cupsfilter.c:714 systemv/lpadmin.c:805
-#: systemv/lpadmin.c:856 systemv/lpadmin.c:906 systemv/lpadmin.c:962
-#: systemv/lpadmin.c:1060 systemv/lpadmin.c:1112 systemv/lpadmin.c:1168
-#: systemv/lpadmin.c:1478
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: systemv/cancel.c:294 systemv/cancel.c:357
 #, c-format
 msgid "%s: %s failed: %s"
 msgstr "%s: %s ha fallat: %s"
 
-#: systemv/cupsaccept.c:68
 #, c-format
 msgid "%s: Don't know what to do."
 msgstr "%s: no sé que fer."
 
-#: berkeley/lpq.c:236 berkeley/lpr.c:344 systemv/lp.c:584
 #, c-format
 msgid ""
 "%s: Error - %s environment variable names non-existent destination \"%s\"."
@@ -1581,136 +1246,104 @@ msgstr ""
 "%s: error - els noms de les variables d'entorn %s tenen un destí inexistent "
 "«%s»."
 
-#: systemv/lp.c:231
 #, c-format
 msgid "%s: Error - bad job ID."
 msgstr "%s: error - ID de la tasca incorrecte."
 
-#: systemv/lp.c:219
 #, c-format
 msgid "%s: Error - cannot print files and alter jobs simultaneously."
 msgstr ""
 "%s: error - no es poden imprimir fitxers i modificar tasques al mateix temps."
 
-#: systemv/lp.c:505
 #, c-format
 msgid "%s: Error - cannot print from stdin if files or a job ID are provided."
 msgstr ""
 "%s: error - no es pot imprimir des d'stdin si s'indiquen els fitxers o "
 "l'identificador de la tasca."
 
-#: systemv/lp.c:461
 #, c-format
 msgid "%s: Error - expected character set after \"-S\" option."
 msgstr ""
 "%s: error - s'esperava un conjunt de caràcters després de l'opció «-S»."
 
-#: systemv/lp.c:480
 #, c-format
 msgid "%s: Error - expected content type after \"-T\" option."
 msgstr "%s: error - s'esperava un tipus de contingut després de l'opció «-T»."
 
-#: berkeley/lpr.c:240
 #, c-format
 msgid "%s: Error - expected copies after \"-#\" option."
 msgstr "%s: error - s'esperaven còpies després de l'opció «-#»."
 
-#: systemv/lp.c:264
 #, c-format
 msgid "%s: Error - expected copies after \"-n\" option."
 msgstr "%s: error - s'esperaven còpies després de l'opció «-n»."
 
-#: berkeley/lpr.c:209
 #, c-format
 msgid "%s: Error - expected destination after \"-P\" option."
 msgstr "%s: error - s'esperava un destí després de l'opció «-P»."
 
-#: systemv/lpstat.c:231
-#, c-format
-msgid "%s: Error - expected destination after \"-b\" option."
-msgstr "%s: error - s'esperava un destí després de l'opció «-b»."
-
-#: systemv/lp.c:138
 #, c-format
 msgid "%s: Error - expected destination after \"-d\" option."
 msgstr "%s: error - s'esperava un destí després de l'opció «-d»."
 
-#: systemv/lp.c:168
 #, c-format
 msgid "%s: Error - expected form after \"-f\" option."
 msgstr "%s: error - s'esperava un formulari després de l'opció «-f»."
 
-#: systemv/lp.c:391
 #, c-format
 msgid "%s: Error - expected hold name after \"-H\" option."
 msgstr "%s: error - s'esperava un nom per pausa després de l'opció «-H»."
 
-#: berkeley/lpr.c:103
 #, c-format
 msgid "%s: Error - expected hostname after \"-H\" option."
 msgstr ""
 "%s: error - s'esperava el nom de l'ordinador central després de l'opció «-H»."
 
-#: berkeley/lpq.c:180 berkeley/lprm.c:123 systemv/cancel.c:124
-#: systemv/cupsaccept.c:123 systemv/lp.c:189 systemv/lpstat.c:291
 #, c-format
 msgid "%s: Error - expected hostname after \"-h\" option."
 msgstr ""
 "%s: error - s'esperava el nom de l'ordinador central després de l'opció «-h»."
 
-#: systemv/lp.c:371
 #, c-format
 msgid "%s: Error - expected mode list after \"-y\" option."
 msgstr "%s: error - s'esperava una llista de modes després de l'opció «-y»."
 
-#: berkeley/lpr.c:263
 #, c-format
 msgid "%s: Error - expected name after \"-%c\" option."
 msgstr "%s: error - s'esperava un nom després de l'opció «-%c»."
 
-#: berkeley/lpr.c:153 systemv/lp.c:288
 #, c-format
 msgid "%s: Error - expected option=value after \"-o\" option."
 msgstr "%s: error - s'esperava opció=valor després de l'opció «-o»."
 
-#: systemv/lp.c:441
 #, c-format
 msgid "%s: Error - expected page list after \"-P\" option."
 msgstr "%s: error - s'esperava una llista de pàgines després de l'opció «-P»."
 
-#: systemv/lp.c:308
 #, c-format
 msgid "%s: Error - expected priority after \"-%c\" option."
 msgstr "%s: error - s'esperava una prioritat després de l'opció «-%c»."
 
-#: systemv/cupsaccept.c:141
 #, c-format
 msgid "%s: Error - expected reason text after \"-r\" option."
 msgstr "%s: error - s'esperava una explicació després de l'opció «-r»."
 
-#: systemv/lp.c:354
 #, c-format
 msgid "%s: Error - expected title after \"-t\" option."
 msgstr "%s: error - s'esperava un títol després de l'opció «-t»."
 
-#: berkeley/lpq.c:111 berkeley/lpr.c:84 berkeley/lprm.c:104
-#: systemv/cancel.c:94 systemv/cupsaccept.c:101 systemv/lp.c:116
-#: systemv/lpadmin.c:438 systemv/lpstat.c:137
 #, c-format
 msgid "%s: Error - expected username after \"-U\" option."
 msgstr "%s: error - s'esperava un nom d'usuari després de l'opció «-U»."
 
-#: systemv/cancel.c:145
 #, c-format
 msgid "%s: Error - expected username after \"-u\" option."
 msgstr "%s: error - s'esperava un nom d'usuari després de l'opció «-u»."
 
-#: berkeley/lpr.c:125
 #, c-format
 msgid "%s: Error - expected value after \"-%c\" option."
 msgstr "%s: error - s'esperava un valor després de l'opció «-%c»."
 
-#: systemv/lpstat.c:157 systemv/lpstat.c:171
 #, c-format
 msgid ""
 "%s: Error - need \"completed\", \"not-completed\", or \"all\" after \"-W\" "
@@ -1719,147 +1352,114 @@ msgstr ""
 "%s: error - es requereix «completed», «not-completed», o «all» després de "
 "l'opció «-W»."
 
-#: berkeley/lpq.c:241 berkeley/lpr.c:349 systemv/lp.c:589
 #, c-format
 msgid "%s: Error - no default destination available."
 msgstr "%s: error - no hi ha un destí per defecte."
 
-#: systemv/lp.c:330
 #, c-format
 msgid "%s: Error - priority must be between 1 and 100."
 msgstr "%s: error - la prioritat ha de ser entre 1 i 100."
 
-#: berkeley/lpr.c:352 systemv/lp.c:592
 #, c-format
 msgid "%s: Error - scheduler not responding."
 msgstr "%s: error - el planificador no està responent."
 
-#: berkeley/lpr.c:305 systemv/lp.c:537
 #, c-format
 msgid "%s: Error - too many files - \"%s\"."
 msgstr "%s: error - massa fitxers - «%s»."
 
-#: berkeley/lpr.c:287 systemv/lp.c:520
 #, c-format
 msgid "%s: Error - unable to access \"%s\" - %s"
 msgstr "%s: error - no es pot accedir a «%s» - %s"
 
-#: berkeley/lpr.c:395 systemv/lp.c:623
 #, c-format
 msgid "%s: Error - unable to queue from stdin - %s."
 msgstr "%s: error - no es pot posar en cua des d'stdin - %s."
 
-#: berkeley/lprm.c:87 berkeley/lprm.c:172 systemv/cancel.c:214
 #, c-format
 msgid "%s: Error - unknown destination \"%s\"."
 msgstr "%s: error - el destí «%s» és desconegut."
 
-#: berkeley/lpq.c:150
 #, c-format
 msgid "%s: Error - unknown destination \"%s/%s\"."
 msgstr "%s: error - el destí «%s/%s» és desconegut."
 
-#: berkeley/lpr.c:274 berkeley/lprm.c:139 systemv/cancel.c:156
-#: systemv/cupsaccept.c:164 systemv/lp.c:496 systemv/lpstat.c:452
 #, c-format
 msgid "%s: Error - unknown option \"%c\"."
 msgstr "%s: error - la opció «%c» és desconeguda."
 
-#: systemv/cupsaccept.c:157
 #, c-format
 msgid "%s: Error - unknown option \"%s\"."
 msgstr "%s: error - la opció «%s» és desconeguda."
 
-#: systemv/lp.c:208
 #, c-format
 msgid "%s: Expected job ID after \"-i\" option."
 msgstr "%s: s'esperava l'ID d'una tasca després de l'opció «-i»."
 
-#: systemv/lpstat.c:504 systemv/lpstat.c:543
 #, c-format
 msgid "%s: Invalid destination name in list \"%s\"."
 msgstr "%s: el nom del destí no és vàlid a la llista «%s»."
 
-#: scheduler/cupsfilter.c:567
 #, c-format
 msgid "%s: Invalid filter string \"%s\"."
 msgstr "%s: la cadena del filtre «%s» no és vàlida."
 
-#: systemv/lp.c:418
 #, c-format
 msgid "%s: Need job ID (\"-i jobid\") before \"-H restart\"."
 msgstr "%s: es necessita l'ID de la tasca («-i jobid») abans de «-H restart»."
 
-#: scheduler/cupsfilter.c:458
 #, c-format
 msgid "%s: No filter to convert from %s/%s to %s/%s."
 msgstr "%s: no hi ha cap filtre per convertir de %s/%s a %s/%s."
 
-#: systemv/cupsaccept.c:198
 #, c-format
 msgid "%s: Operation failed: %s"
 msgstr "%s: ha fallat l'operació: %s"
 
-#: berkeley/lpq.c:97 berkeley/lpr.c:70 berkeley/lprm.c:67 systemv/cancel.c:81
-#: systemv/cupsaccept.c:88 systemv/cupsaddsmb.c:86 systemv/lp.c:102
-#: systemv/lpadmin.c:239 systemv/lpinfo.c:88 systemv/lpmove.c:73
-#: systemv/lpstat.c:102 test/ipptool.c:304 test/ipptool.c:321
 #, c-format
 msgid "%s: Sorry, no encryption support."
 msgstr "%s: ho sento, no està compilada la compatibilitat pel xifrat."
 
-#: berkeley/lpq.c:295 scheduler/cupsfilter.c:1221 systemv/cancel.c:237
-#: systemv/cupsaddsmb.c:144 systemv/cupsaddsmb.c:171
 #, c-format
 msgid "%s: Unable to connect to server."
 msgstr "%s: no es pot connectar al servidor."
 
-#: systemv/cancel.c:317
 #, c-format
 msgid "%s: Unable to contact server."
 msgstr "%s: no es pot contactar amb el servidor."
 
-#: scheduler/cupsfilter.c:424
 #, c-format
 msgid "%s: Unable to determine MIME type of \"%s\"."
 msgstr "%s: no es pot determinar el tips de MIME de «%s»."
 
-#: ppdc/ppdmerge.cxx:96
 #, c-format
 msgid "%s: Unable to open %s: %s"
 msgstr "%s: no es pot obrir %s: %s"
 
-#: scheduler/cupsfilter.c:662 ppdc/ppdmerge.cxx:112
 #, c-format
 msgid "%s: Unable to open PPD file: %s on line %d."
 msgstr "%s: no es pot obrir el fitxer PPD: %s a la línia %d."
 
-#: scheduler/cupsfilter.c:392
 #, c-format
 msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"."
 msgstr "%s: no es pot llegir la base de dades MIME de «%s» o «%s»."
 
-#: berkeley/lpq.c:153 systemv/lpstat.c:558
 #, c-format
 msgid "%s: Unknown destination \"%s\"."
 msgstr "%s: el destí «%s» és desconegut."
 
-#: scheduler/cupsfilter.c:435
 #, c-format
 msgid "%s: Unknown destination MIME type %s/%s."
 msgstr "%s: es destí de tipus MIME %s/%s és desconegut."
 
-#: scheduler/cupsfilter.c:1426
 #, c-format
 msgid "%s: Unknown option \"%c\"."
 msgstr "%s: l'opció «%c» és desconeguda."
 
-#: scheduler/cupsfilter.c:416
 #, c-format
 msgid "%s: Unknown source MIME type %s/%s."
 msgstr "%s: la font del tipus de MIME %s/%s és desconeguda."
 
-#: berkeley/lpr.c:139
 #, c-format
 msgid ""
 "%s: Warning - \"%c\" format modifier not supported - output may not be "
@@ -1868,1309 +1468,983 @@ msgstr ""
 "%s: avís - no es permet l'us del modificador de format «%c» - el resultat "
 "pot no ser correcte."
 
-#: systemv/lp.c:468
 #, c-format
 msgid "%s: Warning - character set option ignored."
 msgstr "%s: avís - s'ignora l'opció del grup de caràcters."
 
-#: systemv/lp.c:487
 #, c-format
 msgid "%s: Warning - content type option ignored."
 msgstr "%s: avís - s'ignora l'opció de tipus de contingut."
 
-#: systemv/lp.c:175
 #, c-format
 msgid "%s: Warning - form option ignored."
 msgstr "%s: avís - s'ignora l'opció de formulari."
 
-#: systemv/lp.c:378
 #, c-format
 msgid "%s: Warning - mode option ignored."
 msgstr "%s: avís - s'ignora l'opció de mode."
 
-#: ppdc/sample.c:310
 msgid "-1"
 msgstr "-1"
 
-#: ppdc/sample.c:301
 msgid "-10"
 msgstr "-10"
 
-#: ppdc/sample.c:393
 msgid "-100"
 msgstr "-100"
 
-#: ppdc/sample.c:392
 msgid "-105"
 msgstr "-105"
 
-#: ppdc/sample.c:300
 msgid "-11"
 msgstr "-11"
 
-#: ppdc/sample.c:391
 msgid "-110"
 msgstr "-110"
 
-#: ppdc/sample.c:390
 msgid "-115"
 msgstr "-115"
 
-#: ppdc/sample.c:299
 msgid "-12"
 msgstr "-12"
 
-#: ppdc/sample.c:389
 msgid "-120"
 msgstr "-120"
 
-#: ppdc/sample.c:298
 msgid "-13"
 msgstr "-13"
 
-#: ppdc/sample.c:297
 msgid "-14"
 msgstr "-14"
 
-#: ppdc/sample.c:296
 msgid "-15"
 msgstr "-15"
 
-#: ppdc/sample.c:309
 msgid "-2"
 msgstr "-2"
 
-#: ppdc/sample.c:409
 msgid "-20"
 msgstr "-20"
 
-#: ppdc/sample.c:408
 msgid "-25"
 msgstr "-25"
 
-#: ppdc/sample.c:308
 msgid "-3"
 msgstr "-3"
 
-#: ppdc/sample.c:407
 msgid "-30"
 msgstr "-30"
 
-#: ppdc/sample.c:406
 msgid "-35"
 msgstr "-35"
 
-#: ppdc/sample.c:307
 msgid "-4"
 msgstr "-4"
 
-#: ppdc/sample.c:405
 msgid "-40"
 msgstr "-40"
 
-#: ppdc/sample.c:404
 msgid "-45"
 msgstr "-45"
 
-#: ppdc/sample.c:306
 msgid "-5"
 msgstr "-5"
 
-#: ppdc/sample.c:403
 msgid "-50"
 msgstr "-50"
 
-#: ppdc/sample.c:402
 msgid "-55"
 msgstr "-55"
 
-#: ppdc/sample.c:305
 msgid "-6"
 msgstr "-6"
 
-#: ppdc/sample.c:401
 msgid "-60"
 msgstr "-60"
 
-#: ppdc/sample.c:400
 msgid "-65"
 msgstr "-65"
 
-#: ppdc/sample.c:304
 msgid "-7"
 msgstr "-7"
 
-#: ppdc/sample.c:399
 msgid "-70"
 msgstr "-70"
 
-#: ppdc/sample.c:398
 msgid "-75"
 msgstr "-75"
 
-#: ppdc/sample.c:303
 msgid "-8"
 msgstr "-8"
 
-#: ppdc/sample.c:397
 msgid "-80"
 msgstr "-80"
 
-#: ppdc/sample.c:396
 msgid "-85"
 msgstr "-85"
 
-#: ppdc/sample.c:302
 msgid "-9"
 msgstr "-9"
 
-#: ppdc/sample.c:395
 msgid "-90"
 msgstr "-90"
 
-#: ppdc/sample.c:394
 msgid "-95"
 msgstr "-95"
 
-#: ppdc/sample.c:311
 msgid "0"
 msgstr "0"
 
-#: ppdc/sample.c:312
 msgid "1"
 msgstr "1"
 
-#: ppdc/sample.c:384
 msgid "1 inch/sec."
 msgstr "1 polzada/seg."
 
-#: ppdc/sample.c:172
 msgid "1.25x0.25\""
 msgstr "1.25x0.25\""
 
-#: ppdc/sample.c:173
 msgid "1.25x2.25\""
 msgstr "1.25x2.25\""
 
-#: ppdc/sample.c:432
 msgid "1.5 inch/sec."
 msgstr "1.5 polzades/seg."
 
-#: ppdc/sample.c:174
 msgid "1.50x0.25\""
 msgstr "1.50x0.25\""
 
-#: ppdc/sample.c:175
 msgid "1.50x0.50\""
 msgstr "1.50x0.50\""
 
-#: ppdc/sample.c:176
 msgid "1.50x1.00\""
 msgstr "1.50x1.00\""
 
-#: ppdc/sample.c:177
 msgid "1.50x2.00\""
 msgstr "1.50x2.00\""
 
-#: ppdc/sample.c:321
 msgid "10"
 msgstr "10"
 
-#: ppdc/sample.c:443
 msgid "10 inches/sec."
 msgstr "10 polzades/seg."
 
-#: ppdc/sample.c:6
 msgid "10 x 11"
 msgstr "10 x 11"
 
-#: ppdc/sample.c:7
 msgid "10 x 13"
 msgstr "10 x 13"
 
-#: ppdc/sample.c:8
 msgid "10 x 14"
 msgstr "10 x 14"
 
-#: ppdc/sample.c:423
 msgid "100"
 msgstr "100"
 
-#: ppdc/sample.c:334
 msgid "100 mm/sec."
 msgstr "100 mm/seg."
 
-#: ppdc/sample.c:424
 msgid "105"
 msgstr "105"
 
-#: ppdc/sample.c:322
 msgid "11"
 msgstr "11"
 
-#: ppdc/sample.c:444
 msgid "11 inches/sec."
 msgstr "11 polzades/seg."
 
-#: ppdc/sample.c:425
 msgid "110"
 msgstr "110"
 
-#: ppdc/sample.c:426
 msgid "115"
 msgstr "115"
 
-#: ppdc/sample.c:323
 msgid "12"
 msgstr "12"
 
-#: ppdc/sample.c:445
 msgid "12 inches/sec."
 msgstr "12 polzades/seg."
 
-#: ppdc/sample.c:9
 msgid "12 x 11"
 msgstr "12 x 11"
 
-#: ppdc/sample.c:427
 msgid "120"
 msgstr "120"
 
-#: ppdc/sample.c:335
 msgid "120 mm/sec."
 msgstr "120 mm/seg."
 
-#: ppdc/sample.c:243
 msgid "120x60dpi"
 msgstr "120x60ppp"
 
-#: ppdc/sample.c:249
 msgid "120x72dpi"
 msgstr "120x72ppp"
 
-#: ppdc/sample.c:324
 msgid "13"
 msgstr "13"
 
-#: ppdc/sample.c:232
 msgid "136dpi"
 msgstr "136ppp"
 
-#: ppdc/sample.c:325
 msgid "14"
 msgstr "14"
 
-#: ppdc/sample.c:326
 msgid "15"
 msgstr "15"
 
-#: ppdc/sample.c:328
 msgid "15 mm/sec."
 msgstr "15 mm/seg."
 
-#: ppdc/sample.c:10
 msgid "15 x 11"
 msgstr "15 x 11"
 
-#: ppdc/sample.c:336
 msgid "150 mm/sec."
 msgstr "150 mm/seg."
 
-#: ppdc/sample.c:283
 msgid "150dpi"
 msgstr "150ppp"
 
-#: ppdc/sample.c:368
 msgid "16"
 msgstr "16"
 
-#: ppdc/sample.c:369
 msgid "17"
 msgstr "17"
 
-#: ppdc/sample.c:370
 msgid "18"
 msgstr "18"
 
-#: ppdc/sample.c:244
 msgid "180dpi"
 msgstr "180ppp"
 
-#: ppdc/sample.c:371
 msgid "19"
 msgstr "19"
 
-#: ppdc/sample.c:313
 msgid "2"
 msgstr "2"
 
-#: ppdc/sample.c:385
 msgid "2 inches/sec."
 msgstr "2 polzades/seg."
 
-#: ppdc/sample.c:270
 msgid "2-Sided Printing"
 msgstr "Impressió a doble cara"
 
-#: ppdc/sample.c:178
 msgid "2.00x0.37\""
 msgstr "2.00x0.37\""
 
-#: ppdc/sample.c:179
 msgid "2.00x0.50\""
 msgstr "2.00x0.50\""
 
-#: ppdc/sample.c:180
 msgid "2.00x1.00\""
 msgstr "2.00x1.00\""
 
-#: ppdc/sample.c:181
 msgid "2.00x1.25\""
 msgstr "2.00x1.25\""
 
-#: ppdc/sample.c:182
 msgid "2.00x2.00\""
 msgstr "2.00x2.00\""
 
-#: ppdc/sample.c:183
 msgid "2.00x3.00\""
 msgstr "2.00x3.00\""
 
-#: ppdc/sample.c:184
 msgid "2.00x4.00\""
 msgstr "2.00x4.00\""
 
-#: ppdc/sample.c:185
 msgid "2.00x5.50\""
 msgstr "2.00x5.50\""
 
-#: ppdc/sample.c:186
 msgid "2.25x0.50\""
 msgstr "2.25x0.50\""
 
-#: ppdc/sample.c:187
 msgid "2.25x1.25\""
 msgstr "2.25x1.25\""
 
-#: ppdc/sample.c:188
 msgid "2.25x4.00\""
 msgstr "2.25x4.00\""
 
-#: ppdc/sample.c:189
 msgid "2.25x5.50\""
 msgstr "2.25x5.50\""
 
-#: ppdc/sample.c:190
 msgid "2.38x5.50\""
 msgstr "2.38x5.50\""
 
-#: ppdc/sample.c:433
 msgid "2.5 inches/sec."
 msgstr "2.5 polzades/seg."
 
-#: ppdc/sample.c:191
 msgid "2.50x1.00\""
 msgstr "2.50x1.00\""
 
-#: ppdc/sample.c:192
 msgid "2.50x2.00\""
 msgstr "2.50x2.00\""
 
-#: ppdc/sample.c:193
 msgid "2.75x1.25\""
 msgstr "2.75x1.25\""
 
-#: ppdc/sample.c:194
 msgid "2.9 x 1\""
 msgstr "2.9 x 1\""
 
-#: ppdc/sample.c:372
 msgid "20"
 msgstr "20"
 
-#: ppdc/sample.c:329
 msgid "20 mm/sec."
 msgstr "20 mm/seg."
 
-#: ppdc/sample.c:337
 msgid "200 mm/sec."
 msgstr "200 mm/seg."
 
-#: ppdc/sample.c:233
 msgid "203dpi"
 msgstr "203ppp"
 
-#: ppdc/sample.c:373
 msgid "21"
 msgstr "21"
 
-#: ppdc/sample.c:374
 msgid "22"
 msgstr "22"
 
-#: ppdc/sample.c:375
 msgid "23"
 msgstr "23"
 
-#: ppdc/sample.c:376
 msgid "24"
 msgstr "24"
 
-#: ppdc/sample.c:241
 msgid "24-Pin Series"
 msgstr "Sèrie de 24 pins"
 
-#: ppdc/sample.c:250
 msgid "240x72dpi"
 msgstr "240x72ppp"
 
-#: ppdc/sample.c:377
 msgid "25"
 msgstr "25"
 
-#: ppdc/sample.c:338
 msgid "250 mm/sec."
 msgstr "250 mm/seg."
 
-#: ppdc/sample.c:378
 msgid "26"
 msgstr "26"
 
-#: ppdc/sample.c:379
 msgid "27"
 msgstr "27"
 
-#: ppdc/sample.c:380
 msgid "28"
 msgstr "28"
 
-#: ppdc/sample.c:381
 msgid "29"
 msgstr "29"
 
-#: ppdc/sample.c:314
 msgid "3"
 msgstr "3"
 
-#: ppdc/sample.c:386
 msgid "3 inches/sec."
 msgstr "3 polzades/seg."
 
-#: ppdc/sample.c:3
 msgid "3 x 5"
 msgstr "3 x 5"
 
-#: ppdc/sample.c:195
 msgid "3.00x1.00\""
 msgstr "3.00x1.00\""
 
-#: ppdc/sample.c:196
 msgid "3.00x1.25\""
 msgstr "3.00x1.25\""
 
-#: ppdc/sample.c:197
 msgid "3.00x2.00\""
 msgstr "3.00x2.00\""
 
-#: ppdc/sample.c:198
 msgid "3.00x3.00\""
 msgstr "3.00x3.00\""
 
-#: ppdc/sample.c:199
 msgid "3.00x5.00\""
 msgstr "3.00x5.00\""
 
-#: ppdc/sample.c:200
 msgid "3.25x2.00\""
 msgstr "3.25x2.00\""
 
-#: ppdc/sample.c:201
 msgid "3.25x5.00\""
 msgstr "3.25x5.00\""
 
-#: ppdc/sample.c:202
 msgid "3.25x5.50\""
 msgstr "3.25x5.50\""
 
-#: ppdc/sample.c:203
 msgid "3.25x5.83\""
 msgstr "3.25x5.83\""
 
-#: ppdc/sample.c:204
 msgid "3.25x7.83\""
 msgstr "3.25x7.83\""
 
-#: ppdc/sample.c:4
 msgid "3.5 x 5"
 msgstr "3.5 x 5"
 
-#: ppdc/sample.c:171
 msgid "3.5\" Disk"
 msgstr "Disc de 3.5\""
 
-#: ppdc/sample.c:205
 msgid "3.50x1.00\""
 msgstr "3.5x1.00\""
 
-#: ppdc/sample.c:382
 msgid "30"
 msgstr "30"
 
-#: ppdc/sample.c:330
 msgid "30 mm/sec."
 msgstr "30 mm/seg."
 
-#: ppdc/sample.c:339
 msgid "300 mm/sec."
 msgstr "300 mm/seg."
 
-#: ppdc/sample.c:234
 msgid "300dpi"
 msgstr "300ppp"
 
-#: ppdc/sample.c:410
 msgid "35"
 msgstr "35"
 
-#: ppdc/sample.c:246
 msgid "360dpi"
 msgstr "360ppp"
 
-#: ppdc/sample.c:245
 msgid "360x180dpi"
 msgstr "360x180ppp"
 
-#: ppdc/sample.c:315
 msgid "4"
 msgstr "4"
 
-#: ppdc/sample.c:387
 msgid "4 inches/sec."
 msgstr "4 polzades/seg."
 
-#: ppdc/sample.c:206
 msgid "4.00x1.00\""
 msgstr "4.00x1.00\""
 
-#: ppdc/sample.c:214
 msgid "4.00x13.00\""
 msgstr "4.00x13.00\""
 
-#: ppdc/sample.c:207
 msgid "4.00x2.00\""
 msgstr "4.00x2.00\""
 
-#: ppdc/sample.c:208
 msgid "4.00x2.50\""
 msgstr "4.00x2.50\""
 
-#: ppdc/sample.c:209
 msgid "4.00x3.00\""
 msgstr "4.00x3.00\""
 
-#: ppdc/sample.c:210
 msgid "4.00x4.00\""
 msgstr "4.00x4.00\""
 
-#: ppdc/sample.c:211
 msgid "4.00x5.00\""
 msgstr "4.00x5.00\""
 
-#: ppdc/sample.c:212
 msgid "4.00x6.00\""
 msgstr "4.00x6.00\""
 
-#: ppdc/sample.c:213
 msgid "4.00x6.50\""
 msgstr "4.00x6.50\""
 
-#: ppdc/sample.c:411
 msgid "40"
 msgstr "40"
 
-#: ppdc/sample.c:331
 msgid "40 mm/sec."
 msgstr "40 mm/seg."
 
-#: ppdc/sample.c:412
 msgid "45"
 msgstr "45"
 
-#: ppdc/sample.c:316
 msgid "5"
 msgstr "5"
 
-#: ppdc/sample.c:437
 msgid "5 inches/sec."
 msgstr "5 polzades/seg."
 
-#: ppdc/sample.c:5
 msgid "5 x 7"
 msgstr "15 x 11"
 
-#: ppdc/sample.c:413
 msgid "50"
 msgstr "50"
 
-#: ppdc/sample.c:414
 msgid "55"
 msgstr "55"
 
-#: ppdc/sample.c:317
 msgid "6"
 msgstr "6"
 
-#: ppdc/sample.c:438
 msgid "6 inches/sec."
 msgstr "6 polzades/seg."
 
-#: ppdc/sample.c:215
 msgid "6.00x1.00\""
 msgstr "6.00x1.00\""
 
-#: ppdc/sample.c:216
 msgid "6.00x2.00\""
 msgstr "6.00x2.00\""
 
-#: ppdc/sample.c:217
 msgid "6.00x3.00\""
 msgstr "6.00x3.00\""
 
-#: ppdc/sample.c:218
 msgid "6.00x4.00\""
 msgstr "6.00x4.00\""
 
-#: ppdc/sample.c:219
 msgid "6.00x5.00\""
 msgstr "6.00x5.00\""
 
-#: ppdc/sample.c:220
 msgid "6.00x6.00\""
 msgstr "6.00x6.00\""
 
-#: ppdc/sample.c:221
 msgid "6.00x6.50\""
 msgstr "6.00x6.50\""
 
-#: ppdc/sample.c:415
 msgid "60"
 msgstr "60"
 
-#: ppdc/sample.c:332
 msgid "60 mm/sec."
 msgstr "60 mm/seg."
 
-#: ppdc/sample.c:261
 msgid "600dpi"
 msgstr "600ppp"
 
-#: ppdc/sample.c:242
 msgid "60dpi"
 msgstr "60ppp"
 
-#: ppdc/sample.c:248
 msgid "60x72dpi"
 msgstr "60x72ppp"
 
-#: ppdc/sample.c:416
 msgid "65"
 msgstr "65"
 
-#: ppdc/sample.c:318
 msgid "7"
 msgstr "7"
 
-#: ppdc/sample.c:440
 msgid "7 inches/sec."
 msgstr "7 polzades/seg."
 
-#: ppdc/sample.c:11
 msgid "7 x 9"
 msgstr "7 x 9"
 
-#: ppdc/sample.c:417
 msgid "70"
 msgstr "70"
 
-#: ppdc/sample.c:252
 msgid "720dpi"
 msgstr "720ppp"
 
-#: ppdc/sample.c:418
 msgid "75"
 msgstr "75"
 
-#: ppdc/sample.c:319
 msgid "8"
 msgstr "8"
 
-#: ppdc/sample.c:441
 msgid "8 inches/sec."
 msgstr "8 polzades/seg."
 
-#: ppdc/sample.c:12
 msgid "8 x 10"
 msgstr "8 x 10"
 
-#: ppdc/sample.c:222
 msgid "8.00x1.00\""
 msgstr "8.00x1.00\""
 
-#: ppdc/sample.c:223
 msgid "8.00x2.00\""
 msgstr "8.00x2.00\""
 
-#: ppdc/sample.c:224
 msgid "8.00x3.00\""
 msgstr "8.00x3.00\""
 
-#: ppdc/sample.c:225
 msgid "8.00x4.00\""
 msgstr "8.00x4.00\""
 
-#: ppdc/sample.c:226
 msgid "8.00x5.00\""
 msgstr "8.00x5.00\""
 
-#: ppdc/sample.c:227
 msgid "8.00x6.00\""
 msgstr "8.00x6.00\""
 
-#: ppdc/sample.c:228
 msgid "8.00x6.50\""
 msgstr "8.00x6.50\""
 
-#: ppdc/sample.c:419
 msgid "80"
 msgstr "80"
 
-#: ppdc/sample.c:333
 msgid "80 mm/sec."
 msgstr "80 mm/seg."
 
-#: ppdc/sample.c:420
 msgid "85"
 msgstr "85"
 
-#: ppdc/sample.c:320
 msgid "9"
 msgstr "9"
 
-#: ppdc/sample.c:442
 msgid "9 inches/sec."
 msgstr "9 polzades/seg."
 
-#: ppdc/sample.c:13
 msgid "9 x 11"
 msgstr "9 x 11"
 
-#: ppdc/sample.c:14
 msgid "9 x 12"
 msgstr "9 x 12"
 
-#: ppdc/sample.c:247
 msgid "9-Pin Series"
 msgstr "Sèrie de 9 pins"
 
-#: ppdc/sample.c:421
 msgid "90"
 msgstr "90"
 
-#: ppdc/sample.c:422
 msgid "95"
 msgstr "95"
 
-#: berkeley/lpc.c:213
 msgid "?Invalid help command unknown."
 msgstr "?Comanda d'ajuda no vàlida desconeguda."
 
-#: cgi-bin/admin.c:2368
 msgid "A Samba password is required to export printer drivers"
 msgstr ""
 "Necessiteu una contrasenya de Samba per exportar els controladors "
 "d'impressora"
 
-#: cgi-bin/admin.c:2364
 msgid "A Samba username is required to export printer drivers"
 msgstr ""
 "Necessiteu una nom d'usuari de Samba per exportar els controladors "
 "d'impressora"
 
-#: scheduler/ipp.c:2283
 #, c-format
 msgid "A class named \"%s\" already exists."
 msgstr "Ja existeix una classe anomenada «%s»."
 
-#: scheduler/ipp.c:1004
 #, c-format
 msgid "A printer named \"%s\" already exists."
 msgstr "Ja existeix una impressora anomenada «%s»."
 
-#: ppdc/sample.c:15
 msgid "A0"
 msgstr "A0"
 
-#: ppdc/sample.c:16
 msgid "A0 Long Edge"
 msgstr "A0 costat llarg"
 
-#: ppdc/sample.c:17
 msgid "A1"
 msgstr "A1"
 
-#: ppdc/sample.c:18
 msgid "A1 Long Edge"
 msgstr "A1 costat llarg"
 
-#: ppdc/sample.c:37
 msgid "A10"
 msgstr "A10"
 
-#: ppdc/sample.c:19
 msgid "A2"
 msgstr "A2"
 
-#: ppdc/sample.c:20
 msgid "A2 Long Edge"
 msgstr "A2 costat llarg"
 
-#: ppdc/sample.c:21
 msgid "A3"
 msgstr "A3"
 
-#: ppdc/sample.c:22
 msgid "A3 Long Edge"
 msgstr "A3 costat llarg"
 
-#: ppdc/sample.c:23
 msgid "A3 Oversize"
 msgstr "A3 estès"
 
-#: ppdc/sample.c:24
 msgid "A3 Oversize Long Edge"
 msgstr "A3 estès pel costat llarg"
 
-#: ppdc/sample.c:25
 msgid "A4"
 msgstr "A4"
 
-#: ppdc/sample.c:27
 msgid "A4 Long Edge"
 msgstr "A4 costat llarg"
 
-#: ppdc/sample.c:26
 msgid "A4 Oversize"
 msgstr "A4 estès"
 
-#: ppdc/sample.c:28
 msgid "A4 Small"
 msgstr "A4 reduït"
 
-#: ppdc/sample.c:29
 msgid "A5"
 msgstr "A5"
 
-#: ppdc/sample.c:31
 msgid "A5 Long Edge"
 msgstr "A5 costat llarg"
 
-#: ppdc/sample.c:30
 msgid "A5 Oversize"
 msgstr "A5 estès"
 
-#: ppdc/sample.c:32
 msgid "A6"
 msgstr "A6"
 
-#: ppdc/sample.c:33
 msgid "A6 Long Edge"
 msgstr "A6 costat llarg"
 
-#: ppdc/sample.c:34
 msgid "A7"
 msgstr "A7"
 
-#: ppdc/sample.c:35
 msgid "A8"
 msgstr "A8"
 
-#: ppdc/sample.c:36
 msgid "A9"
 msgstr "A9"
 
-#: ppdc/sample.c:38
 msgid "ANSI A"
 msgstr "ANSI A"
 
-#: ppdc/sample.c:39
 msgid "ANSI B"
 msgstr "ANSI B"
 
-#: ppdc/sample.c:40
 msgid "ANSI C"
 msgstr "ANSI C"
 
-#: ppdc/sample.c:41
 msgid "ANSI D"
 msgstr "ANSI D"
 
-#: ppdc/sample.c:42
 msgid "ANSI E"
 msgstr "ANSI E"
 
-#: ppdc/sample.c:47
 msgid "ARCH C"
 msgstr "ARCH C"
 
-#: ppdc/sample.c:48
 msgid "ARCH C Long Edge"
 msgstr "ARCH C costat llarg"
 
-#: ppdc/sample.c:49
 msgid "ARCH D"
 msgstr "ARCH D"
 
-#: ppdc/sample.c:50
 msgid "ARCH D Long Edge"
 msgstr "ARCH D costat llarg"
 
-#: ppdc/sample.c:51
 msgid "ARCH E"
 msgstr "ARCH E"
 
-#: ppdc/sample.c:52
 msgid "ARCH E Long Edge"
 msgstr "ARCH E costat llarg"
 
-#: cgi-bin/classes.c:169 cgi-bin/printers.c:172
 msgid "Accept Jobs"
 msgstr "Accepta tasques"
 
-#: cups/http-support.c:1284
 msgid "Accepted"
 msgstr "Acceptada"
 
-#: cgi-bin/admin.c:570
 msgid "Add Class"
 msgstr "Afegeix una classe"
 
-#: cgi-bin/admin.c:882
 msgid "Add Printer"
 msgstr "Afegeix una impressora"
 
-#: cgi-bin/admin.c:444 cgi-bin/admin.c:477 cgi-bin/admin.c:525
-#: cgi-bin/admin.c:535
 msgid "Add RSS Subscription"
 msgstr "Afegeix una subscripció RSS"
 
-#: ppdc/sample.c:163
 msgid "Address"
 msgstr "Adreça"
 
-#: cgi-bin/admin.c:210 cgi-bin/admin.c:284 cgi-bin/admin.c:2745
 msgid "Administration"
 msgstr "Administració"
 
-#: ppdc/sample.c:429
 msgid "Always"
 msgstr "Sempre"
 
-#: backend/socket.c:129
 msgid "AppSocket/HP JetDirect"
 msgstr "AppSocket/HP JetDirect"
 
-#: ppdc/sample.c:450
 msgid "Applicator"
 msgstr "Aplicador"
 
-#: scheduler/ipp.c:1079
 #, c-format
 msgid "Attempt to set %s printer-state to bad value %d."
 msgstr ""
 "S'ha intentat posar l'estat de la impressora %s a un valor incorrecte %d."
 
-#: scheduler/ipp.c:325
 #, c-format
 msgid "Attribute groups are out of order (%x < %x)."
 msgstr "Grups d'atribut desordenats (%x < %x)."
 
-#: ppdc/sample.c:126
 msgid "B0"
 msgstr "B0"
 
-#: ppdc/sample.c:127
 msgid "B1"
 msgstr "B1"
 
-#: ppdc/sample.c:137
 msgid "B10"
 msgstr "B10"
 
-#: ppdc/sample.c:128
 msgid "B2"
 msgstr "B2"
 
-#: ppdc/sample.c:129
 msgid "B3"
 msgstr "B3"
 
-#: ppdc/sample.c:130
 msgid "B4"
 msgstr "B4"
 
-#: ppdc/sample.c:131
 msgid "B5"
 msgstr "B5"
 
-#: ppdc/sample.c:132
 msgid "B5 Oversize"
 msgstr "A5 estès"
 
-#: ppdc/sample.c:133
 msgid "B6"
 msgstr "B6"
 
-#: ppdc/sample.c:134
 msgid "B7"
 msgstr "B7"
 
-#: ppdc/sample.c:135
 msgid "B8"
 msgstr "B8"
 
-#: ppdc/sample.c:136
 msgid "B9"
 msgstr "B9"
 
-#: cups/dest.c:1680
+#, c-format
+msgid "Bad 'document-format' value \"%s\"."
+msgstr ""
+
 msgid "Bad NULL dests pointer"
 msgstr "El punter de dests NULL és incorrecte"
 
-#: cups/ppd.c:345
 msgid "Bad OpenGroup"
 msgstr "La OpenGroup és incorrecta"
 
-#: cups/ppd.c:347
 msgid "Bad OpenUI/JCLOpenUI"
 msgstr "La OpenUI/JCLOpenUI és incorrecta"
 
-#: cups/ppd.c:349
 msgid "Bad OrderDependency"
 msgstr "La OrderDependency és incorrecta"
 
-#: cups/ppd-cache.c:148 cups/ppd-cache.c:195 cups/ppd-cache.c:233
-#: cups/ppd-cache.c:239 cups/ppd-cache.c:255 cups/ppd-cache.c:271
-#: cups/ppd-cache.c:280 cups/ppd-cache.c:288 cups/ppd-cache.c:305
-#: cups/ppd-cache.c:313 cups/ppd-cache.c:328 cups/ppd-cache.c:336
-#: cups/ppd-cache.c:354 cups/ppd-cache.c:366 cups/ppd-cache.c:381
-#: cups/ppd-cache.c:393 cups/ppd-cache.c:415 cups/ppd-cache.c:423
-#: cups/ppd-cache.c:441 cups/ppd-cache.c:449 cups/ppd-cache.c:464
-#: cups/ppd-cache.c:472 cups/ppd-cache.c:490 cups/ppd-cache.c:498
-#: cups/ppd-cache.c:525 cups/ppd-cache.c:571 cups/ppd-cache.c:579
-#: cups/ppd-cache.c:587
 msgid "Bad PPD cache file."
 msgstr "El fitxer PPD de memòria cau és incorrecte."
 
-#: cups/http-support.c:1299
 msgid "Bad Request"
 msgstr "La petició és incorrecta"
 
-#: cups/snmp.c:1002
 msgid "Bad SNMP version number"
 msgstr "El número de versió del SNMP és incorrecte"
 
-#: cups/ppd.c:350
 msgid "Bad UIConstraints"
 msgstr "La UIConstraints és incorrecta"
 
-#: scheduler/ipp.c:1380
 #, c-format
 msgid "Bad copies value %d."
 msgstr "El valor de copies %d és incorrecte"
 
-#: cups/ppd.c:358
 msgid "Bad custom parameter"
 msgstr "El paràmetre personalitzat és incorrecte"
 
-#: cups/http-support.c:1451 scheduler/ipp.c:2350
 #, c-format
 msgid "Bad device-uri \"%s\"."
 msgstr "La device-uri «%s» és incorrecta."
 
-#: scheduler/ipp.c:2391
 #, c-format
 msgid "Bad device-uri scheme \"%s\"."
 msgstr "L'esquema «%s» de la device-uri és incorrecte."
 
-#: scheduler/ipp.c:8224 scheduler/ipp.c:8240 scheduler/ipp.c:9454
-#: scheduler/ipp.c:10968
 #, c-format
 msgid "Bad document-format \"%s\"."
 msgstr "La document-format «%s» és incorrecta."
 
-#: scheduler/ipp.c:9470
 #, c-format
 msgid "Bad document-format-default \"%s\"."
 msgstr "La document-format-default «%s» és incorrecta."
 
-#: cups/util.c:929
 msgid "Bad filename buffer"
 msgstr "El nom del fitxer de la memòria cau és incorrecte"
 
-#: scheduler/ipp.c:10060
 msgid "Bad job-priority value."
 msgstr "El valor de la job-priority és incorrecte."
 
-#: scheduler/ipp.c:1410
 #, c-format
 msgid "Bad job-sheets value \"%s\"."
 msgstr "El valor «%s» de la job-sheets és incorrecte."
 
-#: scheduler/ipp.c:1394
 msgid "Bad job-sheets value type."
 msgstr "El tipus de valor de la job-sheets és incorrecte."
 
-#: scheduler/ipp.c:10090
 msgid "Bad job-state value."
 msgstr "El valor de la job-state és incorrecte."
 
-#: scheduler/ipp.c:2974 scheduler/ipp.c:3426 scheduler/ipp.c:6078
-#: scheduler/ipp.c:6225 scheduler/ipp.c:7658 scheduler/ipp.c:7927
-#: scheduler/ipp.c:8775 scheduler/ipp.c:9001 scheduler/ipp.c:9350
-#: scheduler/ipp.c:9953
 #, c-format
 msgid "Bad job-uri \"%s\"."
 msgstr "La job-uri «%s» és incorrecta."
 
-#: scheduler/ipp.c:2049 scheduler/ipp.c:5622
 #, c-format
 msgid "Bad notify-pull-method \"%s\"."
 msgstr "La notify-pull-method «%s» és incorrecta."
 
-#: scheduler/ipp.c:2013 scheduler/ipp.c:5586
 #, c-format
 msgid "Bad notify-recipient-uri \"%s\"."
 msgstr "La notify-recipient-uri «%s» és incorrecta."
 
-#: scheduler/ipp.c:1426
 #, c-format
 msgid "Bad number-up value %d."
 msgstr "El valor de number-up %d és incorrecte."
 
-#: cups/adminutil.c:292
 #, c-format
 msgid "Bad option + choice on line %d."
 msgstr "L'opció + elecció de la línia %d és incorrecta."
 
-#: scheduler/ipp.c:1443
 #, c-format
 msgid "Bad page-ranges values %d-%d."
 msgstr "Els valors de page-ranges %d-%d són incorrectes."
 
-#: scheduler/ipp.c:2434
 #, c-format
 msgid "Bad port-monitor \"%s\"."
 msgstr "La port-monitor «%s» és incorrecta."
 
-#: cups/dest.c:676 cups/dest.c:1333
 msgid "Bad printer URI."
 msgstr "L'URI de la impressora és incorrecte."
 
-#: scheduler/ipp.c:2495
 #, c-format
 msgid "Bad printer-state value %d."
 msgstr "El valor %d de printer-state és incorrecte."
 
-#: scheduler/ipp.c:293
 #, c-format
 msgid "Bad request ID %d."
 msgstr "L'Identificador %d de la sol·licitud és incorrecte."
 
-#: scheduler/ipp.c:278
 #, c-format
 msgid "Bad request version number %d.%d."
 msgstr "El número de versió %d.%d de la sol·licitud és incorrecte."
 
-#: cgi-bin/admin.c:1484
 msgid "Bad subscription ID"
 msgstr "L'identificador de la subscripció és incorrecte."
 
-#: cups/ppd.c:360
 msgid "Bad value string"
 msgstr "El valor de la cadena és incorrecte"
 
-#: cgi-bin/admin.c:3290 cgi-bin/admin.c:3536
 msgid "Banners"
 msgstr "Bàners"
 
-#: ppdc/sample.c:287
 msgid "Bond Paper"
 msgstr "Paper de valors"
 
-#: backend/usb-darwin.c:1846
 #, c-format
 msgid "Boolean expected for waiteof option \"%s\"."
 msgstr "S'esperava un booleà per l'opció waiteof «%s»."
 
-#: filter/pstops.c:2057
 msgid "Buffer overflow detected, aborting."
 msgstr "S'ha detectat un desbordament la memòria cau. S'interromp."
 
-#: ppdc/sample.c:254
 msgid "CMYK"
 msgstr "CMYK"
 
-#: ppdc/sample.c:363
 msgid "CPCL Label Printer"
 msgstr "Impressora d'etiquetes CPCL"
 
-#: cgi-bin/admin.c:1485 cgi-bin/admin.c:1524 cgi-bin/admin.c:1534
 msgid "Cancel RSS Subscription"
 msgstr "Cancel·la la subscripció RSS"
 
-#: backend/ipp.c:1921
 msgid "Canceling print job."
 msgstr "Es cancel·la la tasca."
 
-#: scheduler/ipp.c:2475
 msgid "Cannot share a remote Kerberized printer."
 msgstr "No es pot compartir una impressora remota sobre Kerberos."
 
-#: ppdc/sample.c:279
 msgid "Cassette"
 msgstr "Classet"
 
-#: cgi-bin/admin.c:1655 cgi-bin/admin.c:1797 cgi-bin/admin.c:1810
-#: cgi-bin/admin.c:1821
 msgid "Change Settings"
 msgstr "Canvia la configuració"
 
-#: scheduler/ipp.c:2061 scheduler/ipp.c:5634
 #, c-format
 msgid "Character set \"%s\" not supported."
 msgstr "No es permet l'ús del grup de caràcters «%s»."
 
-#: cgi-bin/classes.c:195 cgi-bin/classes.c:322
 msgid "Classes"
 msgstr "Classes"
 
-#: cgi-bin/printers.c:182
 msgid "Clean Print Heads"
 msgstr "Neteja els capçals de la impressora"
 
-#: scheduler/ipp.c:3878
 msgid "Close-Job doesn't support the job-uri attribute."
 msgstr "Close-Job no permet l'ús de l'atribut job-uri."
 
-#: ppdc/sample.c:282
 msgid "Color"
 msgstr "Color"
 
-#: ppdc/sample.c:253
 msgid "Color Mode"
 msgstr "Mode de color"
 
-#: berkeley/lpc.c:204
 msgid ""
 "Commands may be abbreviated.  Commands are:\n"
 "\n"
@@ -3180,88 +2454,67 @@ msgstr ""
 "\n"
 "exit    help    quit    status  ?"
 
-#: cups/snmp.c:1006
 msgid "Community name uses indefinite length"
 msgstr "Els noms de comunitat tenen longitud indefinida"
 
-#: backend/ipp.c:786 backend/lpd.c:871 backend/socket.c:395
 msgid "Connected to printer."
 msgstr "S'ha connectat a la impressora."
 
-#: backend/ipp.c:691 backend/lpd.c:694 backend/socket.c:314
 msgid "Connecting to printer."
 msgstr "Es connecta a la impressora."
 
-#: cups/http-support.c:1272
 msgid "Continue"
 msgstr "Continua"
 
-#: ppdc/sample.c:365
 msgid "Continuous"
 msgstr "Contínua"
 
-#: backend/lpd.c:1020 backend/lpd.c:1152
 msgid "Control file sent successfully."
 msgstr "El fitxer de control s'ha enviat correctament."
 
-#: backend/ipp.c:1233 backend/lpd.c:464
 msgid "Copying print data."
 msgstr "Es copien les dades d'impressió."
 
-#: cups/http-support.c:1281
 msgid "Created"
 msgstr "Creat"
 
-#: cups/ppd.c:1113 cups/ppd.c:1153 cups/ppd.c:1398 cups/ppd.c:1501
 msgid "Custom"
 msgstr "Personalitzat"
 
-#: ppdc/sample.c:359
 msgid "CustominCutInterval"
 msgstr "CustominCutInterval"
 
-#: ppdc/sample.c:357
 msgid "CustominTearInterval"
 msgstr "CustominTearInterval"
 
-#: ppdc/sample.c:343
 msgid "Cut"
 msgstr "Tall"
 
-#: ppdc/sample.c:451
 msgid "Cutter"
 msgstr "Ganiveta"
 
-#: ppdc/sample.c:239
 msgid "Dark"
 msgstr "Fosc"
 
-#: ppdc/sample.c:235
 msgid "Darkness"
 msgstr "Foscor"
 
-#: backend/lpd.c:1105
 msgid "Data file sent successfully."
 msgstr "El fitxer de dades s'ha enviat correctament."
 
-#: cgi-bin/admin.c:2094 cgi-bin/admin.c:2105 cgi-bin/admin.c:2150
 msgid "Delete Class"
 msgstr "Elimina la classe"
 
-#: cgi-bin/admin.c:2179 cgi-bin/admin.c:2190 cgi-bin/admin.c:2235
 msgid "Delete Printer"
 msgstr "Elimina la impressora"
 
-#: ppdc/sample.c:281
 msgid "DeskJet Series"
 msgstr "Sèrie Deskjet"
 
-#: scheduler/ipp.c:1346
 #, c-format
 msgid "Destination \"%s\" is not accepting jobs."
 msgstr "El Destí «%s» no accepta tasques."
 
-#: systemv/lpinfo.c:300
 #, c-format
 msgid ""
 "Device: uri = %s\n"
@@ -3278,92 +2531,70 @@ msgstr ""
 "            identificador = %s\n"
 "            ubicació = %s"
 
-#: ppdc/sample.c:436
 msgid "Direct Thermal Media"
 msgstr "Paper per impressió tèrmica directa"
 
-#: cups/file.c:296
 #, c-format
 msgid "Directory \"%s\" contains a relative path."
 msgstr "El directori «%s» conté un camí relatiu."
 
-#: cups/file.c:268
 #, c-format
 msgid "Directory \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
 msgstr "El directori «%s» té permisos que no són segurs (0%o/uid=%d/gid=%d)."
 
-#: cups/file.c:285
 #, c-format
 msgid "Directory \"%s\" is a file."
 msgstr "El directori «%s» és un fitxer."
 
-#: cups/file.c:256
 #, c-format
 msgid "Directory \"%s\" not available: %s"
 msgstr "El directori «%s» no està disponible: %s"
 
-#: cups/file.c:241
 #, c-format
 msgid "Directory \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
 msgstr "El directori «%s» té els permisos correctes (0%o/uid=%d/gid=%d)."
 
-#: ppdc/sample.c:345
 msgid "Disabled"
 msgstr "Desabilitat"
 
-#: scheduler/ipp.c:6127
 #, c-format
 msgid "Document #%d does not exist in job #%d."
 msgstr "No s'ha trobat el document #%d a la tasca #%d."
 
-#: ppdc/sample.c:275
 msgid "Duplexer"
 msgstr "Unitat d'impressió a dues cares"
 
-#: ppdc/sample.c:229
 msgid "Dymo"
 msgstr "Dymo"
 
-#: ppdc/sample.c:431
 msgid "EPL1 Label Printer"
 msgstr "Impressora d'etiquetes EPL1"
 
-#: ppdc/sample.c:434
 msgid "EPL2 Label Printer"
 msgstr "Impressora d'etiquetes EPL2"
 
-#: cgi-bin/admin.c:1849 cgi-bin/admin.c:1861 cgi-bin/admin.c:1915
-#: cgi-bin/admin.c:1922 cgi-bin/admin.c:1957 cgi-bin/admin.c:1970
-#: cgi-bin/admin.c:1994 cgi-bin/admin.c:2067
 msgid "Edit Configuration File"
 msgstr "Edita el fitxer de configuració"
 
-#: cups/adminutil.c:337
 msgid "Empty PPD file."
 msgstr "El fitxer PPD és buit."
 
 #. TRANSLATORS: Banner/cover sheet after the print job.
-#: cgi-bin/admin.c:3561
 msgid "Ending Banner"
 msgstr "S'està acabant el bàner"
 
-#: ppdc/sample.c:2
 msgid "English"
 msgstr "Anglès"
 
-#: systemv/lppasswd.c:193
 msgid "Enter old password:"
 msgstr "Introduïu la contrasenya antiga:"
 
-#: systemv/lppasswd.c:224
 msgid "Enter password again:"
 msgstr "Introduïu la contrasenya un altre cop:"
 
-#: systemv/lppasswd.c:212
 msgid "Enter password:"
 msgstr "Introduïu la contrasenya:"
 
-#: scheduler/client.c:2427
 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 "
@@ -3374,339 +2605,251 @@ msgstr ""
 "l'autenticació Kerberos, assegureu-vos de tenir un tiquet Kerberos que sigui "
 "vàlid."
 
-#: ppdc/sample.c:73
 msgid "Envelope #10 "
 msgstr "Sobre #10"
 
-#: ppdc/sample.c:74
 msgid "Envelope #11"
 msgstr "Sobre #11"
 
-#: ppdc/sample.c:75
 msgid "Envelope #12"
 msgstr "Sobre #12"
 
-#: ppdc/sample.c:76
 msgid "Envelope #14"
 msgstr "Sobre #14"
 
-#: ppdc/sample.c:77
 msgid "Envelope #9"
 msgstr "Sobre #9"
 
-#: ppdc/sample.c:89
 msgid "Envelope B4"
 msgstr "Sobre B4"
 
-#: ppdc/sample.c:90
 msgid "Envelope B5"
 msgstr "Sobre B5"
 
-#: ppdc/sample.c:91
 msgid "Envelope B6"
 msgstr "Sobre B6"
 
-#: ppdc/sample.c:78
 msgid "Envelope C0"
 msgstr "Sobre C0"
 
-#: ppdc/sample.c:79
 msgid "Envelope C1"
 msgstr "Sobre C1"
 
-#: ppdc/sample.c:80
 msgid "Envelope C2"
 msgstr "Sobre C2"
 
-#: ppdc/sample.c:81
 msgid "Envelope C3"
 msgstr "Sobre C3"
 
-#: ppdc/sample.c:67
 msgid "Envelope C4"
 msgstr "Sobre C4"
 
-#: ppdc/sample.c:68
 msgid "Envelope C5"
 msgstr "Sobre C5"
 
-#: ppdc/sample.c:69
 msgid "Envelope C6"
 msgstr "Sobre C6"
 
-#: ppdc/sample.c:82
 msgid "Envelope C65"
 msgstr "Sobre C65"
 
-#: ppdc/sample.c:83
 msgid "Envelope C7"
 msgstr "Sobre C7"
 
-#: ppdc/sample.c:84
 msgid "Envelope Choukei 3"
 msgstr "Sobre Choukei 3"
 
-#: ppdc/sample.c:85
 msgid "Envelope Choukei 3 Long Edge"
 msgstr "Sobre Choukei 3 costat llarg"
 
-#: ppdc/sample.c:86
 msgid "Envelope Choukei 4"
 msgstr "Sobre Choukei 4"
 
-#: ppdc/sample.c:87
 msgid "Envelope Choukei 4 Long Edge"
 msgstr "Sobre Choukei 4 costat llarg"
 
-#: ppdc/sample.c:70
 msgid "Envelope DL"
 msgstr "Sobre DL"
 
-#: ppdc/sample.c:269
 msgid "Envelope Feed"
 msgstr "Alimentació de sobres"
 
-#: ppdc/sample.c:88
 msgid "Envelope Invite"
 msgstr "Sobre d'invitació"
 
-#: ppdc/sample.c:92
 msgid "Envelope Italian"
 msgstr "Sobre italià"
 
-#: ppdc/sample.c:93
 msgid "Envelope Kaku2"
 msgstr "Sobre Kaku2"
 
-#: ppdc/sample.c:94
 msgid "Envelope Kaku2 Long Edge"
 msgstr "Sobre Kaku2 costat llarg"
 
-#: ppdc/sample.c:95
 msgid "Envelope Kaku3"
 msgstr "Sobre Kaku3"
 
-#: ppdc/sample.c:96
 msgid "Envelope Kaku3 Long Edge"
 msgstr "Sobre Kaku3 costat llarg"
 
-#: ppdc/sample.c:97
 msgid "Envelope Monarch"
 msgstr "Sobre monarch"
 
-#: ppdc/sample.c:99
 msgid "Envelope PRC1 "
 msgstr "Sobre PRC1"
 
-#: ppdc/sample.c:100
 msgid "Envelope PRC1 Long Edge"
 msgstr "Sobre PRC1 costat llarg"
 
-#: ppdc/sample.c:117
 msgid "Envelope PRC10"
 msgstr "Sobre PRC10"
 
-#: ppdc/sample.c:118
 msgid "Envelope PRC10 Long Edge"
 msgstr "Sobre PRC10 costat llarg"
 
-#: ppdc/sample.c:101
 msgid "Envelope PRC2"
 msgstr "Sobre PRC2"
 
-#: ppdc/sample.c:102
 msgid "Envelope PRC2 Long Edge"
 msgstr "Sobre PRC2 costat llarg"
 
-#: ppdc/sample.c:103
 msgid "Envelope PRC3"
 msgstr "Sobre PRC3"
 
-#: ppdc/sample.c:104
 msgid "Envelope PRC3 Long Edge"
 msgstr "Sobre PRC3 costat llarg"
 
-#: ppdc/sample.c:105
 msgid "Envelope PRC4"
 msgstr "Sobre PRC4"
 
-#: ppdc/sample.c:106
 msgid "Envelope PRC4 Long Edge"
 msgstr "Sobre PRC4 costat llarg"
 
-#: ppdc/sample.c:108
 msgid "Envelope PRC5 Long Edge"
 msgstr "Sobre PRC5 costat llarg"
 
-#: ppdc/sample.c:107
 msgid "Envelope PRC5PRC5"
 msgstr "Sobre PRC5"
 
-#: ppdc/sample.c:109
 msgid "Envelope PRC6"
 msgstr "Sobre PRC6"
 
-#: ppdc/sample.c:110
 msgid "Envelope PRC6 Long Edge"
 msgstr "Sobre PRC6 costat llarg"
 
-#: ppdc/sample.c:111
 msgid "Envelope PRC7"
 msgstr "Sobre PRC7"
 
-#: ppdc/sample.c:112
 msgid "Envelope PRC7 Long Edge"
 msgstr "Sobre PRC7 costat llarg"
 
-#: ppdc/sample.c:113
 msgid "Envelope PRC8"
 msgstr "Sobre PRC8"
 
-#: ppdc/sample.c:114
 msgid "Envelope PRC8 Long Edge"
 msgstr "Sobre PRC8 costat llarg"
 
-#: ppdc/sample.c:115
 msgid "Envelope PRC9"
 msgstr "Sobre PRC9"
 
-#: ppdc/sample.c:116
 msgid "Envelope PRC9 Long Edge"
 msgstr "Sobre PRC9 costat llarg"
 
-#: ppdc/sample.c:98
 msgid "Envelope Personal"
 msgstr "Sobre personalitzat"
 
-#: ppdc/sample.c:119
 msgid "Envelope You4"
 msgstr "Sobre You4"
 
-#: ppdc/sample.c:120
 msgid "Envelope You4 Long Edge"
 msgstr "Sobre You4 costat llarg"
 
-#: ppdc/sample.c:240
 msgid "Epson"
 msgstr "Epson"
 
-#: cgi-bin/admin.c:3604
 msgid "Error Policy"
 msgstr "Normes d'error"
 
-#: filter/rastertopwg.c:403 filter/rastertopwg.c:418 filter/rastertopwg.c:429
-#: filter/rastertopwg.c:440
 msgid "Error sending raster data."
 msgstr "S'ha produït un error quan s'enviaven les dades de la trama."
 
-#: systemv/lpinfo.c:103 systemv/lpmove.c:88
 msgid "Error: need hostname after \"-h\" option."
 msgstr "ERROR: es necessita un nom d'amfitrió després de l'opció «-h»."
 
-#: ppdc/sample.c:355
 msgid "Every 10 Labels"
 msgstr "Cada 10 etiquetes"
 
-#: ppdc/sample.c:347
 msgid "Every 2 Labels"
 msgstr "Cada 2 etiquetes"
 
-#: ppdc/sample.c:348
 msgid "Every 3 Labels"
 msgstr "Cada 3 etiquetes"
 
-#: ppdc/sample.c:349
 msgid "Every 4 Labels"
 msgstr "Cada 4 etiquetes"
 
-#: ppdc/sample.c:350
 msgid "Every 5 Labels"
 msgstr "Cada 5 etiquetes"
 
-#: ppdc/sample.c:351
 msgid "Every 6 Labels"
 msgstr "Cada 6 etiquetes"
 
-#: ppdc/sample.c:352
 msgid "Every 7 Labels"
 msgstr "Cada 7 etiquetes"
 
-#: ppdc/sample.c:353
 msgid "Every 8 Labels"
 msgstr "Cada 8 etiquetes"
 
-#: ppdc/sample.c:354
 msgid "Every 9 Labels"
 msgstr "Cada 9 etiquetes"
 
-#: ppdc/sample.c:346
 msgid "Every Label"
 msgstr "Cada etiqueta"
 
-#: ppdc/sample.c:121
 msgid "Executive"
 msgstr "Executiu"
 
-#: cups/http-support.c:1327
 msgid "Expectation Failed"
 msgstr "Ha fallat la condició del valor que s'esperava"
 
-#: cgi-bin/admin.c:2356 cgi-bin/admin.c:2375
 msgid "Export Printers to Samba"
 msgstr "Exportar les impressores al Samba"
 
-#: systemv/cupstestdsc.c:172 systemv/cupstestdsc.c:189
-#: systemv/cupstestdsc.c:214 systemv/cupstestdsc.c:231
-#: systemv/cupstestdsc.c:255 systemv/cupstestdsc.c:273
-#: systemv/cupstestdsc.c:302 systemv/cupstestdsc.c:339
-#: systemv/cupstestdsc.c:349 systemv/cupstestdsc.c:359
-#: systemv/cupstestdsc.c:369 systemv/cupstestdsc.c:379
-#: systemv/cupstestdsc.c:387
 msgid "FAIL"
 msgstr "ERROR"
 
-#: ppdc/sample.c:122
 msgid "FanFold German"
 msgstr "Paper continu alemany"
 
-#: ppdc/sample.c:123
 msgid "FanFold Legal German"
 msgstr "Paper continu legal alemany"
 
-#: ppdc/sample.c:124
 msgid "Fanfold US"
 msgstr "Paper continu americà"
 
-#: cups/file.c:300
 #, c-format
 msgid "File \"%s\" contains a relative path."
 msgstr "El fitxer «%s» conté un camí relatiu."
 
-#: cups/file.c:275
 #, c-format
 msgid "File \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
 msgstr "El fitxer «%s» té permisos que no són segurs (0%o/uid=%d/gid=%d)."
 
-#: cups/file.c:289
 #, c-format
 msgid "File \"%s\" is a directory."
 msgstr "El fitxer «%s» és un directori."
 
-#: cups/file.c:261
 #, c-format
 msgid "File \"%s\" not available: %s"
 msgstr "El fitxer «%s» no està disponible: %s"
 
-#: cups/file.c:247
 #, c-format
 msgid "File \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
 msgstr "El fitxer «%s» té els permisos correctes (0%o/uid=%d/gid=%d)."
 
-#: ppdc/sample.c:169
 msgid "File Folder "
 msgstr "Carpeta d'arxivador "
 
-#: scheduler/ipp.c:2370
 #, c-format
 msgid ""
 "File device URIs have been disabled. To enable, see the FileDevice directive "
@@ -3715,511 +2858,401 @@ msgstr ""
 "S'han deshabilitat els URIs dels dispositius de fitxers. Per habilitar-los, "
 "vegeu la directriu FileDevice a «%s/cupsd.conf»."
 
-#: filter/rastertoepson.c:1117 filter/rastertohp.c:845
-#: filter/rastertolabel.c:1273
 #, c-format
 msgid "Finished page %d."
 msgstr "S'ha acabat la pàgina %d."
 
-#: ppdc/sample.c:125
 msgid "Folio"
 msgstr "Foli"
 
-#: cups/http-support.c:1306
 msgid "Forbidden"
 msgstr "Prohibit"
 
-#: cups/ppd.c:742 cups/ppd.c:1302
 msgid "General"
 msgstr "General"
 
-#: ppdc/sample.c:259
 msgid "Generic"
 msgstr "Genèric"
 
-#: cups/snmp.c:1016
 msgid "Get-Response-PDU uses indefinite length"
 msgstr "La Get-Response-PDU fa servir una longitud indefinida"
 
-#: ppdc/sample.c:290
 msgid "Glossy Paper"
 msgstr "Paper fotogràfic"
 
-#: scheduler/ipp.c:2952 scheduler/ipp.c:3352 scheduler/ipp.c:3890
-#: scheduler/ipp.c:6056 scheduler/ipp.c:6203 scheduler/ipp.c:7635
-#: scheduler/ipp.c:8753 scheduler/ipp.c:8979 scheduler/ipp.c:9328
-#: scheduler/ipp.c:9931
 msgid "Got a printer-uri attribute but no job-id."
 msgstr "S'ha obtingut l'atribut printer-uri però no el job-id."
 
-#: ppdc/sample.c:255
 msgid "Grayscale"
 msgstr "Escala de grisos"
 
-#: ppdc/sample.c:280
 msgid "HP"
 msgstr "HP"
 
-#: ppdc/sample.c:170
 msgid "Hanging Folder"
 msgstr "Carpeta per penjar"
 
-#: cgi-bin/help.c:143
 msgid "Help file not in index."
 msgstr "El fitxer d'ajuda no és a l'índex."
 
-#: cups/ipp.c:2687 cups/ipp.c:2714 cups/ipp.c:2737
 msgid "IPP 1setOf attribute with incompatible value tags."
 msgstr ""
 "L'atribut 1setOf del IPP té etiquetes amb valors que no són compatibles."
 
-#: cups/ipp.c:2650
 msgid "IPP attribute has no name."
 msgstr "L'atribut del IPP no té nom."
 
-#: cups/ipp.c:5487
 msgid "IPP attribute is not a member of the message."
 msgstr "L'atribut del IPP no és membre del missatge."
 
-#: cups/ipp.c:3083
 msgid "IPP begCollection value not 0 bytes."
 msgstr "El valor de begColletion del IPP no té 0 bytes."
 
-#: cups/ipp.c:2873
 msgid "IPP boolean value not 1 byte."
 msgstr "El valor booleà del IPP no té 1 byte."
 
-#: cups/ipp.c:2934
 msgid "IPP date value not 11 bytes."
 msgstr "El valor de date del IPP no té 11 bytes."
 
-#: cups/ipp.c:3104
 msgid "IPP endCollection value not 0 bytes."
 msgstr "El valor de endColletion del IPP no té 0 bytes."
 
-#: cups/ipp.c:2848
 msgid "IPP enum value not 4 bytes."
 msgstr "El valor de enum del IPP no té 4 bytes."
 
-#: cups/ipp.c:2579
 msgid "IPP extension tag larger than 0x7FFFFFFF."
 msgstr "La etiqueta d'extension del IPP és més llarga de 0x7FFFFFFF."
 
-#: cups/ipp.c:2845
 msgid "IPP integer value not 4 bytes."
 msgstr "El valor enter de IPP no té 4 bytes."
 
-#: cups/ipp.c:3045
 msgid "IPP language length overflows value."
 msgstr "El valor de la longitud del llenguatge del IPP desborda."
 
-#: cups/ipp.c:2764
+msgid "IPP language length too large."
+msgstr ""
+
 msgid "IPP member name is not empty."
 msgstr "El nom del membre del IPP no està buit."
 
-#: cups/ipp.c:3122
 msgid "IPP memberName value is empty."
 msgstr "El valor de memberName de l'IPP està buit."
 
-#: cups/ipp.c:2633
+msgid "IPP memberName with no attribute."
+msgstr ""
+
 msgid "IPP name larger than 32767 bytes."
 msgstr "EL nom del IPP és més llarg de 32767 bytes."
 
-#: cups/ipp.c:3011
 msgid "IPP nameWithLanguage value less than minimum 4 bytes."
 msgstr ""
 "El valor de nameWithLanguage del IPP és més petit que el mínim, 4 bytes."
 
-#: cups/ipp.c:2979
+msgid "IPP nameWithLanguage value more than maximum 1090 bytes."
+msgstr ""
+
+msgid "IPP octetString length too large."
+msgstr ""
+
 msgid "IPP rangeOfInteger value not 8 bytes."
 msgstr "El valor de rangeOfInteger del IPP no té 8 bytes."
 
-#: cups/ipp.c:2952
 msgid "IPP resolution value not 9 bytes."
 msgstr "El valor de resolution del IPP no té 9 bytes."
 
-#: cups/ipp.c:3063
 msgid "IPP string length overflows value."
 msgstr "El valor de la longitud de la cadena del IPP desborda."
 
-#: cups/ipp.c:3007
+msgid "IPP string value too large."
+msgstr ""
+
+msgid "IPP text length too large."
+msgstr ""
+
 msgid "IPP textWithLanguage value less than minimum 4 bytes."
 msgstr ""
 "EL valor de textWithLanguage del IPP és més petit que el mínim, 4 bytes."
 
-#: cups/ipp.c:2831
+msgid "IPP textWithLanguage value more than maximum 1090 bytes."
+msgstr ""
+
 msgid "IPP value larger than 32767 bytes."
 msgstr "El valor del IPP és més llarg de 32767 bytes."
 
-#: ppdc/sample.c:1
 msgid "ISOLatin1"
 msgstr "ISOLatin1"
 
-#: cups/ppd.c:353
 msgid "Illegal control character"
 msgstr "Caràcter de control no permès"
 
-#: cups/ppd.c:354
 msgid "Illegal main keyword string"
 msgstr "Cadena de paraula clau principal no permesa"
 
-#: cups/ppd.c:355
 msgid "Illegal option keyword string"
 msgstr "Cadena de paraula clau d'opció no permesa"
 
-#: cups/ppd.c:356
 msgid "Illegal translation string"
 msgstr "Cadena de traducció no permesa"
 
-#: cups/ppd.c:357
 msgid "Illegal whitespace character"
 msgstr "Caràcter d'espai en blanc no permés"
 
-#: ppdc/sample.c:274
 msgid "Installable Options"
 msgstr "Opcions instal·lables"
 
-#: ppdc/sample.c:277
 msgid "Installed"
 msgstr "Instal·lat"
 
-#: ppdc/sample.c:293
 msgid "IntelliBar Label Printer"
 msgstr "Impressora d'etiquetes IntelliBar"
 
-#: ppdc/sample.c:292
 msgid "Intellitech"
 msgstr "Intellitech"
 
-#: cups/http-support.c:1333
 msgid "Internal Server Error"
 msgstr "Error intern del servidor"
 
-#: cups/ppd.c:344
 msgid "Internal error"
 msgstr "Error intern"
 
-#: ppdc/sample.c:167
 msgid "Internet Postage 2-Part"
 msgstr "Franqueig per Internet en 2 parts"
 
-#: ppdc/sample.c:168
 msgid "Internet Postage 3-Part"
 msgstr "Franqueig per Internet en 3 parts"
 
-#: backend/ipp.c:307
 msgid "Internet Printing Protocol"
 msgstr "Protocol d'impressió per Internet"
 
-#: cups/dest-options.c:839
 msgid "Invalid media size."
 msgstr "Mida del suport no vàlida."
 
-#: filter/commandtops.c:125
 #, c-format
 msgid "Invalid printer command \"%s\"."
 msgstr "La comanda de la impressora «%s» no és vàlida."
 
-#: cups/ppd.c:1420
 msgid "JCL"
 msgstr "Llenguatge de control de tasques (JCL)"
 
-#: ppdc/sample.c:53
 msgid "JIS B0"
 msgstr "JIS B0"
 
-#: ppdc/sample.c:55
 msgid "JIS B1"
 msgstr "JIS B1"
 
-#: ppdc/sample.c:54
 msgid "JIS B10"
 msgstr "JIS B10"
 
-#: ppdc/sample.c:56
 msgid "JIS B2"
 msgstr "JIS B2"
 
-#: ppdc/sample.c:57
 msgid "JIS B3"
 msgstr "JIS B3"
 
-#: ppdc/sample.c:58
 msgid "JIS B4"
 msgstr "JIS B4"
 
-#: ppdc/sample.c:59
 msgid "JIS B4 Long Edge"
 msgstr "JIS B4 costat llarg"
 
-#: ppdc/sample.c:60
 msgid "JIS B5"
 msgstr "JIS B5"
 
-#: ppdc/sample.c:61
 msgid "JIS B5 Long Edge"
 msgstr "JIS B5 costat llarg"
 
-#: ppdc/sample.c:62
 msgid "JIS B6"
 msgstr "JIS B6"
 
-#: ppdc/sample.c:63
 msgid "JIS B6 Long Edge"
 msgstr "JIS B6 costat llarg"
 
-#: ppdc/sample.c:64
 msgid "JIS B7"
 msgstr "JIS B7"
 
-#: ppdc/sample.c:65
 msgid "JIS B8"
 msgstr "JIS B8"
 
-#: ppdc/sample.c:66
 msgid "JIS B9"
 msgstr "JIS B9"
 
-#: scheduler/ipp.c:9051
 #, c-format
 msgid "Job #%d cannot be restarted - no files."
 msgstr "La tasca #%d no es pot tornar a iniciar - no hi ha fitxers."
 
-#: scheduler/ipp.c:2992 scheduler/ipp.c:3222 scheduler/ipp.c:3277
-#: scheduler/ipp.c:3454 scheduler/ipp.c:3900 scheduler/ipp.c:5720
-#: scheduler/ipp.c:6096 scheduler/ipp.c:6243 scheduler/ipp.c:6543
-#: scheduler/ipp.c:7482 scheduler/ipp.c:7504 scheduler/ipp.c:7676
-#: scheduler/ipp.c:7901 scheduler/ipp.c:7944 scheduler/ipp.c:8793
-#: scheduler/ipp.c:9019 scheduler/ipp.c:9368 scheduler/ipp.c:9971
 #, c-format
 msgid "Job #%d does not exist."
 msgstr "La tasca #%d no existeix."
 
-#: scheduler/ipp.c:3486
 #, c-format
 msgid "Job #%d is already aborted - can't cancel."
 msgstr "La tasca #%d ja s'ha interromput: no es pot cancel·lar."
 
-#: scheduler/ipp.c:3480
 #, c-format
 msgid "Job #%d is already canceled - can't cancel."
 msgstr "La tasca #%d ja està cancel·lada: no es pot cancel·lar."
 
-#: scheduler/ipp.c:3492
 #, c-format
 msgid "Job #%d is already completed - can't cancel."
 msgstr "La tasca #%d ja s'ha acabat: no es pot cancel·lar."
 
-#: scheduler/ipp.c:7702 scheduler/ipp.c:7986 scheduler/ipp.c:9986
 #, c-format
 msgid "Job #%d is finished and cannot be altered."
 msgstr "La tasca #%d s'ha acabat i no es pot canviar."
 
-#: scheduler/ipp.c:9033
 #, c-format
 msgid "Job #%d is not complete."
 msgstr "La tasca #%d no s'ha acabat."
 
-#: scheduler/ipp.c:3007
 #, c-format
 msgid "Job #%d is not held for authentication."
 msgstr "La tasca #%d no està aturada per ser autenticada."
 
-#: scheduler/ipp.c:8807
 #, c-format
 msgid "Job #%d is not held."
 msgstr "La tasca #%d no està aturada."
 
-#: cgi-bin/ipp-var.c:1055
 msgid "Job Completed"
 msgstr "S'ha acabat la tasca"
 
-#: cgi-bin/ipp-var.c:1053
 msgid "Job Created"
 msgstr "S'ha creat la tasca"
 
-#: cgi-bin/ipp-var.c:1059
 msgid "Job Options Changed"
 msgstr "S'han canviat les opcions de la tasca"
 
-#: cgi-bin/ipp-var.c:1057
 msgid "Job Stopped"
 msgstr "S'ha aturat la tasca"
 
-#: scheduler/ipp.c:10068
 msgid "Job is completed and cannot be changed."
 msgstr "La tasca s'ha finalitzat i no es pot canviar."
 
-#: cgi-bin/jobs.c:198
 msgid "Job operation failed"
 msgstr "Ha fallat l'operació de la tasca"
 
-#: scheduler/ipp.c:10104 scheduler/ipp.c:10123 scheduler/ipp.c:10134
 msgid "Job state cannot be changed."
 msgstr "L'estat de la tasca no es pot canviar."
 
-#: scheduler/ipp.c:8899
 msgid "Job subscriptions cannot be renewed."
 msgstr "Les subscripcions a les tasca no es poden renovar."
 
-#: cgi-bin/jobs.c:103 cgi-bin/jobs.c:114 cgi-bin/jobs.c:195
 msgid "Jobs"
 msgstr "Tasques"
 
-#: backend/lpd.c:185
 msgid "LPD/LPR Host or Printer"
 msgstr "Amfitrió o impressora LPD/LPR"
 
-#: ppdc/sample.c:230
 msgid "Label Printer"
 msgstr "Impressora d'etiquetes"
 
-#: ppdc/sample.c:446
 msgid "Label Top"
 msgstr "Capçalera de l'etiqueta"
 
-#: scheduler/ipp.c:2070 scheduler/ipp.c:5643
 #, c-format
 msgid "Language \"%s\" not supported."
 msgstr "No s'admet l'idioma «%s»."
 
-#: ppdc/sample.c:164
 msgid "Large Address"
 msgstr "Adreça gran"
 
-#: ppdc/sample.c:291
 msgid "LaserJet Series PCL 4/5"
 msgstr "Sèrie Laser Jet PCL 4/5"
 
-#: ppdc/sample.c:43
 msgid "Letter Oversize"
 msgstr "Carta gran"
 
-#: ppdc/sample.c:44
 msgid "Letter Oversize Long Edge"
 msgstr "Carta americà gran costat llarg"
 
-#: ppdc/sample.c:236
 msgid "Light"
 msgstr "Lluminós"
 
-#: cups/ppd.c:352
 msgid "Line longer than the maximum allowed (255 characters)"
 msgstr "La línia la longitud màxima permesa (255 caràcters)"
 
-#: cgi-bin/admin.c:2393
 msgid "List Available Printers"
 msgstr "Llista les impressores disponibles"
 
-#: ppdc/sample.c:272
 msgid "Long-Edge (Portrait)"
 msgstr "Costat-llarg (vertical)"
 
-#: cups/http-support.c:1558
 msgid "Looking for printer."
 msgstr "S'està buscant la impressora."
 
-#: ppdc/sample.c:268
 msgid "Manual Feed"
 msgstr "Alimentació manual"
 
-#: cups/ppd.c:789 cups/ppd.c:1357
 msgid "Media Size"
 msgstr "Mida del paper"
 
-#: cups/ppd.c:793 cups/ppd.c:1361 ppdc/sample.c:262
 msgid "Media Source"
 msgstr "Font del paper"
 
-#: ppdc/sample.c:364
 msgid "Media Tracking"
 msgstr "Seguiment del paper"
 
-#: cups/ppd.c:791 cups/ppd.c:1359 ppdc/sample.c:285
 msgid "Media Type"
 msgstr "Tipus de paper"
 
-#: ppdc/sample.c:237
 msgid "Medium"
 msgstr "Mitjà"
 
-#: cups/ppd.c:341
 msgid "Memory allocation error"
 msgstr "S'ha produït un error d'ubicació de memòria"
 
-#: cups/ppd.c:361
 msgid "Missing CloseGroup"
 msgstr "Falta el CloseGroup"
 
-#: cups/ppd.c:342
 msgid "Missing PPD-Adobe-4.x header"
 msgstr "Falta la capçalera PPD-ADOBE-4.x"
 
-#: cups/ppd.c:351
 msgid "Missing asterisk in column 1"
 msgstr "Falta un asterisc a la columna 1"
 
-#: scheduler/ipp.c:6119
 msgid "Missing document-number attribute."
 msgstr "Falta l'atribut document-number."
 
-#: cups/adminutil.c:273
 #, c-format
 msgid "Missing double quote on line %d."
 msgstr "Falta una cometa doble a la línia %d."
 
-#: cgi-bin/admin.c:736 cgi-bin/admin.c:2106 cgi-bin/admin.c:2191
-#: cgi-bin/admin.c:2785 cgi-bin/admin.c:3039 cgi-bin/admin.c:3150
-#: cgi-bin/admin.c:3860
 msgid "Missing form variable"
 msgstr "Falta una variable del formulari"
 
-#: scheduler/ipp.c:9422
 msgid "Missing last-document attribute in request."
 msgstr "Falta l'atribut last-document-number a la petició."
 
-#: cups/pwg-media.c:535
 msgid "Missing media or media-col."
 msgstr "Falta el media o el media-col."
 
-#: cups/pwg-media.c:454
 msgid "Missing media-size in media-col."
 msgstr "Falta el media-size al media-col."
 
-#: scheduler/ipp.c:6673
 msgid "Missing notify-subscription-ids attribute."
 msgstr "Falta l'atribut notify-subscription-ids."
 
-#: cups/ppd.c:359
 msgid "Missing option keyword"
 msgstr "Falta l'opció keyword"
 
-#: scheduler/ipp.c:3133 scheduler/ipp.c:3158
 msgid "Missing requesting-user-name attribute."
 msgstr "Falta l'atribut requesting-user-name."
 
-#: scheduler/ipp.c:461
 msgid "Missing required attributes."
 msgstr "Falten alguns atributs necessaris."
 
-#: cups/adminutil.c:254
 #, c-format
 msgid "Missing value on line %d."
 msgstr "Falta un valor a la línia %d."
 
-#: cups/ppd.c:343
 msgid "Missing value string"
 msgstr "Falta la cadena de valor"
 
-#: cups/pwg-media.c:442
 msgid "Missing x-dimension in media-size."
 msgstr "Falta la mida x a la mida del suport."
 
-#: cups/pwg-media.c:448
 msgid "Missing y-dimension in media-size."
 msgstr "Falta la mida y a la mida del suport."
 
-#: systemv/lpinfo.c:470
 #, c-format
 msgid ""
 "Model:  name = %s\n"
@@ -4232,734 +3265,558 @@ msgstr ""
 "        fabricant i model = %s\n"
 "        id del dispositiu = %s"
 
-#: cgi-bin/admin.c:570
 msgid "Modify Class"
 msgstr "Modifica la classe"
 
-#: cgi-bin/admin.c:882
 msgid "Modify Printer"
 msgstr "Modifica la impressora"
 
-#: cgi-bin/ipp-var.c:425 cgi-bin/ipp-var.c:516
 msgid "Move All Jobs"
 msgstr "Mou totes les tasques"
 
-#: cgi-bin/ipp-var.c:364 cgi-bin/ipp-var.c:423 cgi-bin/ipp-var.c:514
 msgid "Move Job"
 msgstr "Mou la tasca"
 
-#: cups/http-support.c:1290
 msgid "Moved Permanently"
 msgstr "S'ha mogut de manera permanent"
 
-#: cups/ppd.c:340
 msgid "NULL PPD file pointer"
 msgstr "Punter del fitxer PPD NUL"
 
-#: cups/snmp.c:1053
 msgid "Name OID uses indefinite length"
 msgstr "El nom de l'OID fa servir una longitud indefinida"
 
-#: scheduler/ipp.c:1142
 msgid "Nested classes are not allowed."
 msgstr "No es permeten les classes imbricades."
 
-#: ppdc/sample.c:430
 msgid "Never"
 msgstr "Mai"
 
-#: ppdc/sample.c:256
 msgid "New Stylus Color Series"
 msgstr "Sèrie New Stylus Color"
 
-#: ppdc/sample.c:258
 msgid "New Stylus Photo Series"
 msgstr "Sèrie New Stylus Photo"
 
-#: cups/ppd.c:1949
 msgid "No"
 msgstr "No"
 
-#: cups/http-support.c:1287
 msgid "No Content"
 msgstr "No hi ha contingut"
 
-#: cups/util.c:1298
 msgid "No PPD name"
 msgstr "El PPD no té nom"
 
-#: cups/snmp.c:1047
 msgid "No VarBind SEQUENCE"
 msgstr "No hi ha cap SEQUENCE VarBind"
 
-#: cups/adminutil.c:788
 msgid "No Windows printer drivers are installed."
 msgstr "No hi ha cap controlador d'impressores de Windows instal·lat."
 
-#: cups/request.c:566 cups/request.c:908
 msgid "No active connection"
 msgstr "No hi ha cap connexió activa"
 
-#: scheduler/ipp.c:3403
 #, c-format
 msgid "No active jobs on %s."
 msgstr "No hi ha cap tasca activa a %s."
 
-#: scheduler/ipp.c:302
 msgid "No attributes in request."
 msgstr "No hi ha atributs en demanda."
 
-#: scheduler/ipp.c:3034
 msgid "No authentication information provided."
 msgstr "No s'ha donat cap informació d'autenticació."
 
-#: cups/snmp.c:1004
 msgid "No community name"
 msgstr "Ho hi na cap nom de comunitat"
 
-#: scheduler/ipp.c:5919
 msgid "No default printer."
 msgstr "No hi ha cap impressora per defecte."
 
-#: cgi-bin/ipp-var.c:436 scheduler/ipp.c:7248
 msgid "No destinations added."
 msgstr "No s'ha afegit cap destí."
 
-#: backend/usb.c:200
 msgid "No device URI found in argv[0] or in DEVICE_URI environment variable."
 msgstr ""
 "No s'ha trobat cap URI de dispositiu a argv[0] o a la variable d'entorn "
 "DEVICE_URI."
 
-#: cups/snmp.c:1034
 msgid "No error-index"
 msgstr "No hi ca cap error-index"
 
-#: cups/snmp.c:1026
 msgid "No error-status"
 msgstr "No hi ha cap status-error"
 
-#: scheduler/ipp.c:8190 scheduler/ipp.c:9436
 msgid "No file in print request."
 msgstr "No hi ha cap printer-uri a la sol·licitud."
 
-#: cups/util.c:923
 msgid "No modification time"
 msgstr "No hi ha hora de modificació"
 
-#: cups/snmp.c:1051
 msgid "No name OID"
 msgstr "No hi ha cap nom d'OID"
 
-#: filter/rastertoepson.c:1147 filter/rastertohp.c:876
-#: filter/rastertolabel.c:1302
 msgid "No pages were found."
 msgstr "No s'ha trobat cap pàgina."
 
-#: cups/util.c:917
 msgid "No printer name"
 msgstr "No hi ha cap nom d'impressora"
 
-#: cups/util.c:1801
 msgid "No printer-uri found"
 msgstr "No s'ha trobat cap printer-uri"
 
-#: cups/util.c:1786
 msgid "No printer-uri found for class"
 msgstr "No s'ha trobat cap printer-uri per la classe"
 
-#: scheduler/ipp.c:6322
 msgid "No printer-uri in request."
 msgstr "No hi ha cap printer-uri a la sol·licitud."
 
-#: cups/snmp.c:1018
 msgid "No request-id"
 msgstr "No hi ha cap request-id"
 
-#: scheduler/ipp.c:5528
 msgid "No subscription attributes in request."
 msgstr "No hi ha cap atribut de la subscripció a la sol·licitud."
 
-#: scheduler/ipp.c:7575
 msgid "No subscriptions found."
 msgstr "No s'ha trobat cap sol·licitud."
 
-#: cups/snmp.c:1042
 msgid "No variable-bindings SEQUENCE"
 msgstr "No hi ha cap SEQUENCE variable-bindings"
 
-#: cups/snmp.c:997
 msgid "No version number"
 msgstr "No hi ha cap número de versió"
 
-#: ppdc/sample.c:367
 msgid "Non-continuous (Mark sensing)"
 msgstr "Discontinu (sensible a les marques)"
 
-#: ppdc/sample.c:366
 msgid "Non-continuous (Web sensing)"
 msgstr "Discontinu (Sensible al web)"
 
-#: ppdc/sample.c:238
 msgid "Normal"
 msgstr "Normal"
 
-#: cups/http-support.c:1309
 msgid "Not Found"
 msgstr "No s'ha trobat"
 
-#: cups/http-support.c:1321
 msgid "Not Implemented"
 msgstr "No implementat"
 
-#: ppdc/sample.c:276
 msgid "Not Installed"
 msgstr "No està instal·lat"
 
-#: cups/http-support.c:1296
 msgid "Not Modified"
 msgstr "No està modificat"
 
-#: cups/http-support.c:1324
 msgid "Not Supported"
 msgstr "No és compatible"
 
-#: scheduler/ipp.c:1518 scheduler/ipp.c:10666
 msgid "Not allowed to print."
 msgstr "No teniu permís per imprimir."
 
-#: ppdc/sample.c:146
 msgid "Note"
 msgstr "Nota"
 
-#: systemv/cupstestdsc.c:433
 msgid ""
 "Note: this program only validates the DSC comments, not the PostScript "
 "itself."
 msgstr ""
 "Nota: aquest programa només valida els comentaris DSC, no el PostScript."
 
-#: cups/http-support.c:1278 cups/ppd.c:338
 msgid "OK"
 msgstr "D'acord"
 
-#: ppdc/sample.c:271
 msgid "Off (1-Sided)"
 msgstr "Inactiu (Una cara)"
 
-#: ppdc/sample.c:361
 msgid "Oki"
 msgstr "Oki"
 
-#: cgi-bin/help.c:91 cgi-bin/help.c:132 cgi-bin/help.c:142 cgi-bin/help.c:172
 msgid "Online Help"
 msgstr "Ajuda en línia"
 
-#: cups/adminutil.c:955
 #, c-format
 msgid "Open of %s failed: %s"
 msgstr "No s'ha pogut obrir %s: %s"
 
-#: cups/ppd.c:346
 msgid "OpenGroup without a CloseGroup first"
 msgstr "OpenGroup sense un CloseGroup abans"
 
-#: cups/ppd.c:348
 msgid "OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first"
 msgstr "OpenUI/JCLOpenUI sense un CloseUI/JCLCloseUI abans"
 
-#: cgi-bin/admin.c:3631
 msgid "Operation Policy"
 msgstr "Política d'operacions"
 
-#: filter/pstops.c:2205
 #, c-format
 msgid "Option \"%s\" cannot be included via %%%%IncludeFeature."
 msgstr "L'opció «%s» no es pot incloure a través de %%%%IncludeFeature."
 
-#: cgi-bin/admin.c:3281 cgi-bin/admin.c:3365
 msgid "Options Installed"
 msgstr "Opcions instal·lades"
 
-#: scheduler/cupsfilter.c:1430 scheduler/main.c:2018 systemv/cupsaddsmb.c:284
-#: systemv/cupsctl.c:203 systemv/cupstestdsc.c:429 systemv/cupstestppd.c:3797
-#: test/ipptool.c:4403 ppdc/ppdc.cxx:437 ppdc/ppdhtml.cxx:174
-#: ppdc/ppdi.cxx:130 ppdc/ppdmerge.cxx:369 ppdc/ppdpo.cxx:254
 msgid "Options:"
 msgstr "Opcions:"
 
-#: cups/ppd-cache.c:156
 msgid "Out of date PPD cache file."
 msgstr "El fitxer de memòria cau del PPD no està actualitzat."
 
-#: cups/ppd-cache.c:1381
 msgid "Out of memory."
 msgstr "Sense memòria."
 
-#: cups/ppd.c:795 cups/ppd.c:1363
 msgid "Output Mode"
 msgstr "Mode de sortida"
 
-#: systemv/lpstat.c:1191 systemv/lpstat.c:1195
 #, c-format
 msgid "Output for printer %s is sent to %s"
 msgstr "La sortida de la impressora %s s'envia a %s"
 
-#: systemv/lpstat.c:1185
 #, c-format
 msgid "Output for printer %s is sent to remote printer %s on %s"
 msgstr "La sortida de la impressora %s s'envia a la impressora remota %s a %s"
 
-#: systemv/lpstat.c:1209 systemv/lpstat.c:1213
 #, c-format
 msgid "Output for printer %s/%s is sent to %s"
 msgstr "La sortida per la impressora %s/%s s'envia a la impressora %s"
 
-#: systemv/lpstat.c:1203
 #, c-format
 msgid "Output for printer %s/%s is sent to remote printer %s on %s"
 msgstr ""
 "La sortida per la impressora %s/%s s'envia a la impressora remota %s a %s"
 
-#: systemv/cupstestdsc.c:399
 msgid "PASS"
 msgstr "VÀLID"
 
-#: ppdc/sample.c:260
 msgid "PCL Laser Printer"
 msgstr "Impressora làser PCL"
 
-#: ppdc/sample.c:149
 msgid "PRC16K"
 msgstr "PRC16K"
 
-#: ppdc/sample.c:150
 msgid "PRC16K Long Edge"
 msgstr "PRC16K costat llarg"
 
-#: ppdc/sample.c:151
 msgid "PRC32K"
 msgstr "PRC32K"
 
-#: ppdc/sample.c:154
 msgid "PRC32K Long Edge"
 msgstr "PRC32K costat llarg"
 
-#: ppdc/sample.c:152
 msgid "PRC32K Oversize"
 msgstr "PRC32K gran"
 
-#: ppdc/sample.c:153
 msgid "PRC32K Oversize Long Edge"
 msgstr "PRC32K gran costat llarg"
 
-#: cups/snmp.c:1014
 msgid "Packet does not contain a Get-Response-PDU"
 msgstr "El paquet no conté cap Get-Response-PDU"
 
-#: cups/snmp.c:993
 msgid "Packet does not start with SEQUENCE"
 msgstr "El paquet no comença amb SEQUENCE"
 
-#: ppdc/sample.c:360
 msgid "ParamCustominCutInterval"
 msgstr "ParamCustominCutInterval"
 
-#: ppdc/sample.c:358
 msgid "ParamCustominTearInterval"
 msgstr "ParamCustominTearInterval"
 
-#: cups/auth.c:199 cups/auth.c:367
 #, c-format
 msgid "Password for %s on %s? "
 msgstr "Contrasenya per %s a %s? "
 
-#: systemv/cupsaddsmb.c:252
 #, c-format
 msgid "Password for %s required to access %s via SAMBA: "
 msgstr "Es necessita la contrasenya de %s per accedir a %s a través de SAMBA: "
 
-#: cgi-bin/classes.c:167
 msgid "Pause Class"
 msgstr "Posa la classe en pausa"
 
-#: cgi-bin/printers.c:170
 msgid "Pause Printer"
 msgstr "Posa la impressora en pausa"
 
-#: ppdc/sample.c:448
 msgid "Peel-Off"
 msgstr "Desenganxar"
 
-#: ppdc/sample.c:160
 msgid "Photo"
 msgstr "Fotografia"
 
-#: ppdc/sample.c:161
 msgid "Photo Labels"
 msgstr "Etiquetes de fotografia"
 
-#: ppdc/sample.c:286
 msgid "Plain Paper"
 msgstr "Paper normal"
 
-#: cgi-bin/admin.c:3299 cgi-bin/admin.c:3580
 msgid "Policies"
 msgstr "Polítiques"
 
-#: cgi-bin/admin.c:3306 cgi-bin/admin.c:3649 cgi-bin/admin.c:3662
 msgid "Port Monitor"
 msgstr "Seguiment del port"
 
-#: ppdc/sample.c:278
 msgid "PostScript Printer"
 msgstr "Impressora PostScript"
 
-#: ppdc/sample.c:147
 msgid "Postcard"
 msgstr "Postal"
 
-#: ppdc/sample.c:71
 msgid "Postcard Double "
 msgstr "Postal doble"
 
-#: ppdc/sample.c:72
 msgid "Postcard Double Long Edge"
 msgstr "Postal doble costat llarg"
 
-#: ppdc/sample.c:148
 msgid "Postcard Long Edge"
 msgstr "Postal costat llarg"
 
-#: ppdc/sample.c:295
+msgid "Preparing to print."
+msgstr ""
+
 msgid "Print Density"
 msgstr "Densitat de la impressió"
 
-#: cups/notify.c:82
 msgid "Print Job:"
 msgstr "Tasca d'impressió:"
 
-#: ppdc/sample.c:340
 msgid "Print Mode"
 msgstr "Mode d'impressió"
 
-#: ppdc/sample.c:383
 msgid "Print Rate"
 msgstr "Ritme d'impressió"
 
-#: cgi-bin/printers.c:179
 msgid "Print Self-Test Page"
 msgstr "Imprimeix la pàgina de prova pròpia"
 
-#: ppdc/sample.c:327
 msgid "Print Speed"
 msgstr "Velocitat d'impressió"
 
-#: cgi-bin/ipp-var.c:792
 msgid "Print Test Page"
 msgstr "Imprimeix una pàgina de prova"
 
-#: ppdc/sample.c:356
 msgid "Print and Cut"
 msgstr "Imprimeix i talla"
 
-#: ppdc/sample.c:344
 msgid "Print and Tear"
 msgstr "Imprimeix i estripa"
 
-#: backend/ipp.c:1537
-#, c-format
-msgid "Print file accepted - job ID %d."
-msgstr "S'ha acceptat el fitxer d'impressió - ID de la tasca %d."
-
-#: backend/ipp.c:1527
-msgid "Print file accepted - job ID unknown."
-msgstr "S'ha acceptat el fitxer d'impressió - l'ID de la tasca és desconegut."
-
-#: backend/socket.c:424 backend/usb-unix.c:191
 msgid "Print file sent."
 msgstr "S'ha enviat el fitxer d'impressió."
 
-#: backend/ipp.c:1488
-msgid "Print file was not accepted."
-msgstr "No s'ha acceptat el fitxer d'impressió."
-
-#: backend/ipp.c:1895
 msgid "Print job canceled at printer."
 msgstr "S'ha cancel·lat la tasca a la impressora."
 
-#: backend/ipp.c:1890
 msgid "Print job too large."
 msgstr "La tasca d'impressió és massa llarga."
 
-#: cgi-bin/ipp-var.c:1047
+msgid "Print job was not accepted."
+msgstr ""
+
 msgid "Printer Added"
 msgstr "S'ha afegit una impressora"
 
-#: ppdc/sample.c:263
 msgid "Printer Default"
 msgstr "Impressora per defecte"
 
-#: cgi-bin/ipp-var.c:1051
 msgid "Printer Deleted"
 msgstr "S'ha eliminat la impressora"
 
-#: cgi-bin/ipp-var.c:1049
 msgid "Printer Modified"
 msgstr "S'ha modificat la impressora"
 
-#: cgi-bin/ipp-var.c:1045
 msgid "Printer Paused"
 msgstr "S'ha posat la impressora en pausa"
 
-#: ppdc/sample.c:294
 msgid "Printer Settings"
 msgstr "Configuració de la impressora"
 
-#: backend/ipp.c:1893
 msgid "Printer cannot print supplied content."
 msgstr "La impressora no pot imprimir el contingut subministrat."
 
-#: cups/notify.c:126
 msgid "Printer:"
 msgstr "Impressora:"
 
-#: cgi-bin/printers.c:204 cgi-bin/printers.c:332
 msgid "Printers"
 msgstr "Impressores"
 
-#: filter/rastertoepson.c:1093 filter/rastertohp.c:817
-#: filter/rastertolabel.c:1249
 #, c-format
 msgid "Printing page %d, %d%% complete."
 msgstr "S'està imprimint la pàgina %d. S'ha completat el %d%%."
 
-#: cgi-bin/classes.c:173 cgi-bin/printers.c:176
 msgid "Purge Jobs"
 msgstr "Purga les tasques"
 
-#: ppdc/sample.c:155
 msgid "Quarto"
 msgstr "Quart"
 
-#: scheduler/ipp.c:1513 scheduler/ipp.c:10661
 msgid "Quota limit reached."
 msgstr "S'ha assolit el límit de la quota."
 
-#: berkeley/lpq.c:515
 msgid "Rank    Owner   Job     File(s)                         Total Size"
 msgstr ""
 "Rang    Propietari   Tasca     Fitxer(s)                         Mida total"
 
 #. TRANSLATORS: Pri is job priority.
-#: berkeley/lpq.c:511
 msgid ""
 "Rank   Owner      Pri  Job        Files                       Total Size"
 msgstr ""
 "Rang   Propietari      Pri  Tasca        Fitxers                       Mida "
 "total"
 
-#: cgi-bin/classes.c:171 cgi-bin/printers.c:174
 msgid "Reject Jobs"
 msgstr "Rebutja tasques"
 
-#: backend/lpd.c:1016 backend/lpd.c:1148
 #, c-format
 msgid "Remote host did not accept control file (%d)."
 msgstr "L'amfitrió remot no accepta el fitxer de control (%d)."
 
-#: backend/lpd.c:1101
 #, c-format
 msgid "Remote host did not accept data file (%d)."
 msgstr "L'amfitrió remot no accepta el fitxer de dades (%d)."
 
-#: ppdc/sample.c:428
 msgid "Reprint After Error"
 msgstr "Torna a imprimir després d'un error"
 
-#: cups/http-support.c:1312
 msgid "Request Entity Too Large"
 msgstr "Entitat de petició massa gran"
 
-#: cups/ppd.c:797 cups/ppd.c:1365 ppdc/sample.c:231
 msgid "Resolution"
 msgstr "Resolució"
 
-#: cgi-bin/classes.c:165
 msgid "Resume Class"
 msgstr "Reprèn la classe"
 
-#: cgi-bin/printers.c:167
 msgid "Resume Printer"
 msgstr "Reprèn la impressora"
 
-#: ppdc/sample.c:165
 msgid "Return Address"
 msgstr "Remitent"
 
-#: ppdc/sample.c:449
 msgid "Rewind"
 msgstr "Rebobina"
 
-#: cups/adminutil.c:2052
 #, c-format
 msgid "Running command: %s %s -N -A %s -c '%s'"
 msgstr "S'està executant l'ordre: %s %s -N -A %s -c «%s»"
 
-#: cups/snmp.c:995
 msgid "SEQUENCE uses indefinite length"
 msgstr "SEQUENCE té una longitud indefinida"
 
-#: cups/http-support.c:1336
 msgid "SSL/TLS Negotiation Error"
 msgstr "S'ha produït un error mentre es negociava el SSL/TLS"
 
-#: cups/http-support.c:1293
 msgid "See Other"
 msgstr "Vegeu altres"
 
-#: backend/usb-darwin.c:543 backend/usb-libusb.c:273
 msgid "Sending data to printer."
 msgstr "S'envien les dades a la impressora."
 
-#: cgi-bin/ipp-var.c:1061
 msgid "Server Restarted"
 msgstr "S'ha reiniciat el servidor"
 
-#: cgi-bin/ipp-var.c:1067
 msgid "Server Security Auditing"
 msgstr "S'està auditant la seguretat del servidor"
 
-#: cgi-bin/ipp-var.c:1063
 msgid "Server Started"
 msgstr "S'ha iniciat el servidor"
 
-#: cgi-bin/ipp-var.c:1065
 msgid "Server Stopped"
 msgstr "S'ha aturat el servidor"
 
-#: cups/http-support.c:1330
 msgid "Service Unavailable"
 msgstr "El servei no està disponible"
 
-#: cgi-bin/admin.c:2786 cgi-bin/admin.c:2832 cgi-bin/admin.c:2989
-#: cgi-bin/admin.c:3008
 msgid "Set Allowed Users"
 msgstr "Definir els permisos dels usuaris"
 
-#: cgi-bin/admin.c:3035
 msgid "Set As Server Default"
 msgstr "Establir com a servidor per defecte"
 
-#: cgi-bin/admin.c:3135
 msgid "Set Class Options"
 msgstr "Definir les opcions de la classe"
 
-#: cgi-bin/admin.c:3135 cgi-bin/admin.c:3309 cgi-bin/admin.c:3691
 msgid "Set Printer Options"
 msgstr "Definir les opcions de la impressora"
 
-#: cgi-bin/admin.c:3861 cgi-bin/admin.c:3905 cgi-bin/admin.c:3923
 msgid "Set Publishing"
 msgstr "Establir com a pública"
 
-#: ppdc/sample.c:166
 msgid "Shipping Address"
 msgstr "Adreça de lliurament"
 
-#: ppdc/sample.c:273
 msgid "Short-Edge (Landscape)"
 msgstr "Costat curt (horitzontal)"
 
-#: ppdc/sample.c:288
 msgid "Special Paper"
 msgstr "Paper especial"
 
-#: backend/lpd.c:1057
 #, c-format
 msgid "Spooling job, %.0f%% complete."
 msgstr "S'està posant a la cua la tasca. S'ha completat el %.0f%%."
 
-#: ppdc/sample.c:341
 msgid "Standard"
 msgstr "Estàndard"
 
 #. TRANSLATORS: Banner/cover sheet before the print job.
-#: cgi-bin/admin.c:3552
 msgid "Starting Banner"
 msgstr "Bàner inicial"
 
-#: filter/rastertoepson.c:1069 filter/rastertohp.c:793
-#: filter/rastertolabel.c:1225
 #, c-format
 msgid "Starting page %d."
 msgstr "S'està començant la pàgina %d."
 
-#: ppdc/sample.c:156
 msgid "Statement"
 msgstr "Declaració"
 
-#: ppdc/sample.c:251
 msgid "Stylus Color Series"
 msgstr "Sèrie Stylus Color"
 
-#: ppdc/sample.c:257
 msgid "Stylus Photo Series"
 msgstr "Sèrie Stylus Photo"
 
-#: scheduler/ipp.c:3549 scheduler/ipp.c:6689 scheduler/ipp.c:7388
-#: scheduler/ipp.c:8887
 #, c-format
 msgid "Subscription #%d does not exist."
 msgstr "La subscripció #%d no existeix."
 
-#: ppdc/sample.c:157
 msgid "Super A"
 msgstr "Super A"
 
-#: ppdc/sample.c:158
 msgid "Super B"
 msgstr "Super B"
 
-#: ppdc/sample.c:162
 msgid "Super B/A3"
 msgstr "Super B/A3"
 
-#: cups/http-support.c:1275
 msgid "Switching Protocols"
 msgstr "Intercanviar els protocols"
 
-#: ppdc/sample.c:159
 msgid "Tabloid"
 msgstr "Tabloide"
 
-#: ppdc/sample.c:45
 msgid "Tabloid Oversize"
 msgstr "Tabloide gran"
 
-#: ppdc/sample.c:46
 msgid "Tabloid Oversize Long Edge"
 msgstr "Tabloide gran costat llarg"
 
-#: ppdc/sample.c:342
 msgid "Tear"
 msgstr "Estripar"
 
-#: ppdc/sample.c:447
 msgid "Tear-Off"
 msgstr "Estripar"
 
-#: ppdc/sample.c:388
 msgid "Tear-Off Adjust Position"
 msgstr "Posició d'ajust d'estripat"
 
-#: scheduler/ipp.c:6393 scheduler/ipp.c:6471 scheduler/ipp.c:6487
-#: scheduler/ipp.c:6505
+#, 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 "No es pot fer servir l'atribut %s amb les job-ids."
 
-#: scheduler/ipp.c:5118
+#, 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."
@@ -4967,22 +3824,17 @@ msgstr ""
 "L'atribut d'operació «%s» no es pot subministrar en una petició de Create-"
 "Job."
 
-#: scheduler/ipp.c:6919
 #, c-format
 msgid "The PPD file \"%s\" could not be found."
 msgstr "No s'ha pogut trobar el fitxer PPD «%s»."
 
-#: scheduler/ipp.c:6906
 #, c-format
 msgid "The PPD file \"%s\" could not be opened: %s"
 msgstr "No s'ha pogut obrir el fitxer PPD «%s»: %s"
 
-#: filter/rastertoepson.c:1038 filter/rastertohp.c:764
-#: filter/rastertolabel.c:1189
 msgid "The PPD file could not be opened."
 msgstr "No s'ha pogut obrir el fitxer PPD."
 
-#: cgi-bin/admin.c:749
 msgid ""
 "The class name may only contain up to 127 printable characters and may not "
 "contain spaces, slashes (/), or the pound sign (#)."
@@ -4990,137 +3842,99 @@ msgstr ""
 "El nom de la classe només pot tenir fins a 127 caràcters imprimibles i no "
 "pot contenir espais, barres (/) o el símbol coixinet (#)."
 
-#: cups/localize.c:353
 msgid "The developer unit needs to be replaced."
 msgstr "S'ha de canviar la unitat de desenvolupament."
 
-#: cups/localize.c:351
 msgid "The developer unit will need to be replaced soon."
 msgstr "La unitat de desenvolupament s'haurà de canviar aviat."
 
-#: cups/localize.c:343
 msgid "The fuser's temperature is high."
 msgstr "La temperatura del fusor és alta."
 
-#: cups/localize.c:345
 msgid "The fuser's temperature is low."
 msgstr "La temperatura del fusor és baixa."
 
-#: scheduler/ipp.c:2097
 msgid ""
 "The notify-lease-duration attribute cannot be used with job subscriptions."
 msgstr ""
 "No es pot fer servir l'atribut notify-lease-duration amb les subscripcions a "
 "tasques."
 
-#: scheduler/ipp.c:2080 scheduler/ipp.c:5653
 #, c-format
 msgid "The notify-user-data value is too large (%d > 63 octets)."
 msgstr "El valor de notify-user-data és massa llarg (%d > 63 octets)."
 
-#: cups/localize.c:349
 msgid "The optical photoconductor needs to be replaced."
 msgstr "S'ha de canviar el fotoconductor òptic."
 
-#: cups/localize.c:347
 msgid "The optical photoconductor will need to be replaced soon."
 msgstr "El fotoconductor òptic s'haurà de canviar aviat."
 
-#: cups/localize.c:331
 msgid "The output bin is almost full."
 msgstr "La safata de sortida és gairebé plena."
 
-#: cups/localize.c:333
 msgid "The output bin is full."
 msgstr "La safata de sortida és plena."
 
-#: cups/localize.c:329
 msgid "The output bin is missing."
 msgstr "Falta la safata de sortida."
 
-#: cups/localize.c:325
 msgid "The paper tray is almost empty."
 msgstr "La safata de paper és gairebé buida."
 
-#: cups/localize.c:327
 msgid "The paper tray is empty."
 msgstr "La safata de paper és buida."
 
-#: cups/localize.c:323
 msgid "The paper tray is missing."
 msgstr "Falta la safata de paper."
 
-#: cups/localize.c:306
 msgid "The paper tray needs to be filled."
 msgstr "S'ha d'omplir la safata de paper."
 
-#: backend/ipp.c:909
-msgid "The printer URI is incorrect or no longer exists."
-msgstr "L'URI de la impressora no és correcte o ja no existeix."
+msgid "The printer configuration is incorrect or the printer no longer exists."
+msgstr ""
 
-#: backend/lpd.c:619 backend/lpd.c:1009 backend/lpd.c:1091 backend/lpd.c:1141
 msgid "The printer did not respond."
 msgstr "La impressora no ha respost."
 
-#: backend/ipp.c:892 backend/ipp.c:899
-#, c-format
-msgid "The printer does not support IPP/%d.%d, trying IPP/%s."
-msgstr "La impressora no admet el IPP/%d.%d, s'està intentant el IPP/%s."
-
-#: backend/ipp.c:757 backend/ipp.c:874 backend/ipp.c:980 backend/ipp.c:1313
-#: backend/ipp.c:1464 backend/lpd.c:828 backend/socket.c:374
-#: backend/usb-unix.c:131 backend/usb-unix.c:424 backend/usb-unix.c:507
 msgid "The printer is in use."
 msgstr "La impressora està ocupada."
 
-#: backend/runloop.c:254 backend/runloop.c:374 cups/localize.c:311
 msgid "The printer is not connected."
 msgstr "La impressora no està connectada."
 
-#: backend/ipp.c:735 backend/ipp.c:768 backend/ipp.c:870 backend/lpd.c:807
-#: backend/lpd.c:848 backend/socket.c:353 backend/socket.c:386
 msgid "The printer is not responding."
 msgstr "La impressora no respòn."
 
-#: backend/runloop.c:396
 msgid "The printer is now connected."
 msgstr "Ara la impressora està connectada."
 
-#: backend/usb-darwin.c:1286
 msgid "The printer is now online."
 msgstr "Ara la impressora està en línia."
 
-#: backend/usb-darwin.c:1307
 msgid "The printer is offline."
 msgstr "La impressora està fora de línia."
 
-#: cups/localize.c:335
 msgid "The printer is running low on ink."
 msgstr "S'està acabant la tinta de la impressora."
 
-#: cups/localize.c:313
 msgid "The printer is running low on toner."
 msgstr "S'està acabant el tòner de la impressora."
 
-#: backend/ipp.c:750 backend/lpd.c:821 backend/socket.c:367
 msgid "The printer is unreachable at this time."
 msgstr "Ara mateix no es pot accedir a la impressora."
 
-#: cups/localize.c:337
 msgid "The printer may be out of ink."
 msgstr "Es deu haver acabat la tinta de la impressora."
 
-#: cups/localize.c:315
 msgid "The printer may be out of toner."
 msgstr "Es deu haver acabat el tòner de la impressora."
 
-#: backend/ipp.c:744 backend/lpd.c:815 backend/socket.c:361
 msgid "The printer may not exist or is unavailable at this time."
 msgstr ""
 "Pot ser que la impressora no existeixi o que ara mateix no estigui "
 "accessible."
 
-#: cgi-bin/admin.c:931
 msgid ""
 "The printer name may only contain up to 127 printable characters and may not "
 "contain spaces, slashes (/), or the pound sign (#)."
@@ -5128,64 +3942,45 @@ msgstr ""
 "El nom de la impressora només pot tenir fins a 127 caràcters imprimibles i "
 "no pot contenir espais, barres (/) o el símbol coixinet (#)."
 
-#: scheduler/ipp.c:876 scheduler/ipp.c:1136 scheduler/ipp.c:3198
-#: scheduler/ipp.c:3369 scheduler/ipp.c:5101 scheduler/ipp.c:5487
-#: scheduler/ipp.c:5801 scheduler/ipp.c:6359 scheduler/ipp.c:7124
-#: scheduler/ipp.c:7180 scheduler/ipp.c:7494 scheduler/ipp.c:7760
-#: scheduler/ipp.c:7849 scheduler/ipp.c:7882 scheduler/ipp.c:8205
-#: scheduler/ipp.c:8598 scheduler/ipp.c:8679 scheduler/ipp.c:9840
-#: scheduler/ipp.c:10294 scheduler/ipp.c:10624 scheduler/ipp.c:10706
-#: scheduler/ipp.c:10998
 msgid "The printer or class does not exist."
 msgstr "La impressora o la classe no existeix."
 
-#: scheduler/ipp.c:1304
 msgid "The printer or class is not shared."
 msgstr "La impressora o la classe no estan compartides."
 
-#: cups/localize.c:317
 msgid "The printer's cover is open."
 msgstr "La tapa de la impressora està oberta."
 
-#: cups/localize.c:321
 msgid "The printer's door is open."
 msgstr "La porta de la impressora està oberta."
 
-#: cups/localize.c:319
 msgid "The printer's interlock is open."
 msgstr "L'enclavament de seguretat de la impressora està obert."
 
-#: cups/localize.c:339
 msgid "The printer's waste bin is almost full."
 msgstr "El dipòsit de residus és gairebé ple."
 
-#: cups/localize.c:341
 msgid "The printer's waste bin is full."
 msgstr "El dipòsit de residus és ple."
 
-#: scheduler/ipp.c:982 scheduler/ipp.c:2261
 #, c-format
 msgid "The printer-uri \"%s\" contains invalid characters."
 msgstr "El printer-uri «%s» conté caràcters no vàlids."
 
-#: scheduler/ipp.c:3175
 msgid "The printer-uri attribute is required."
 msgstr "L'atribut printer-uri és obligatori."
 
-#: scheduler/ipp.c:966
 msgid ""
 "The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
 msgstr ""
 "El printer-uri ha de tenir la forma «ipp://NOMAMFITRIÓ/classes/NOMCLASSE»."
 
-#: scheduler/ipp.c:2245
 msgid ""
 "The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
 msgstr ""
 "El printer-uri ha de tenir la forma «ipp://NOMAMFITRIÓ/printers/"
 "NOMIMPRESSORA»."
 
-#: cgi-bin/admin.c:474
 msgid ""
 "The subscription name may not contain spaces, slashes (/), question marks "
 "(?), or the pound sign (#)."
@@ -5193,7 +3988,6 @@ msgstr ""
 "La subscripció no pot contenir espais, barres (/), interrogacions (?), o el "
 "símbol coixinet (#)."
 
-#: scheduler/client.c:2450
 msgid ""
 "The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to "
 "enable it."
@@ -5201,279 +3995,216 @@ msgstr ""
 "La interfície web està deshabilitada. Executeu «cupsctl WebInterface=yes» "
 "per habilitar-la."
 
-#: scheduler/ipp.c:6454
 #, c-format
 msgid "The which-jobs value \"%s\" is not supported."
 msgstr "El valor «%s» de which-jobs no està implementat."
 
-#: scheduler/ipp.c:5731
 msgid "There are too many subscriptions."
 msgstr "Hi ha massa subscripcions."
 
-#: cups/localize.c:308
 msgid "There is a paper jam."
 msgstr "S'ha encallat el paper."
 
-#: backend/usb-darwin.c:379 backend/usb-darwin.c:438 backend/usb-darwin.c:505
-#: backend/usb-darwin.c:526 backend/usb-libusb.c:235 backend/usb-libusb.c:256
 msgid "There was an unrecoverable USB error."
 msgstr "Hi ha un error de l'USB irrecuperable."
 
-#: ppdc/sample.c:435
 msgid "Thermal Transfer Media"
 msgstr "Mitjà de transferència tèrmica"
 
-#: scheduler/ipp.c:1507
 msgid "Too many active jobs."
 msgstr "Hi ha massa tasques actives."
 
-#: scheduler/ipp.c:1401
 #, c-format
 msgid "Too many job-sheets values (%d > 2)."
 msgstr "Hi ha massa valors de job-sheets (%d > 2)."
 
-#: scheduler/ipp.c:2529
 #, c-format
 msgid "Too many printer-state-reasons values (%d > %d)."
 msgstr "Hi ha massa valors de printer-state-reasons (%d > %d)."
 
-#: ppdc/sample.c:289
 msgid "Transparency"
 msgstr "Transparència"
 
-#: ppdc/sample.c:284
 msgid "Tray"
 msgstr "Safata"
 
-#: ppdc/sample.c:264
 msgid "Tray 1"
 msgstr "Safata 1"
 
-#: ppdc/sample.c:265
 msgid "Tray 2"
 msgstr "Safata 2"
 
-#: ppdc/sample.c:266
 msgid "Tray 3"
 msgstr "Safata 3"
 
-#: ppdc/sample.c:267
 msgid "Tray 4"
 msgstr "Safata 4"
 
-#: cups/http-support.c:1315
 msgid "URI Too Long"
 msgstr "L'URI és massa llarg"
 
-#: ppdc/sample.c:138
 msgid "US Ledger"
 msgstr "Llibre major americà"
 
-#: ppdc/sample.c:139
 msgid "US Legal"
 msgstr "Legal americà"
 
-#: ppdc/sample.c:140
 msgid "US Legal Oversize"
 msgstr "Legal americà gran"
 
-#: ppdc/sample.c:141
 msgid "US Letter"
 msgstr "Carta americà"
 
-#: ppdc/sample.c:142
 msgid "US Letter Long Edge"
 msgstr "Carta americà costat llarg"
 
-#: ppdc/sample.c:143
 msgid "US Letter Oversize"
 msgstr "Carta americà gran"
 
-#: ppdc/sample.c:144
 msgid "US Letter Oversize Long Edge"
 msgstr "Carta americà gran costat llarg"
 
-#: ppdc/sample.c:145
 msgid "US Letter Small"
 msgstr "Carta americà petit"
 
-#: cgi-bin/admin.c:1959 cgi-bin/admin.c:1972 cgi-bin/admin.c:1996
 msgid "Unable to access cupsd.conf file"
 msgstr "No es pot accedir al fitxer cups.conf"
 
-#: cgi-bin/help.c:133
 msgid "Unable to access help file."
 msgstr "No es pot accedir al fitxer d'ajuda."
 
-#: cgi-bin/admin.c:526
 msgid "Unable to add RSS subscription"
 msgstr "No es pot afegir la subscripció RSS"
 
-#: cgi-bin/admin.c:814
 msgid "Unable to add class"
 msgstr "No es pot afegir la classe"
 
-#: backend/ipp.c:1635
 msgid "Unable to add document to print job."
 msgstr "No es pot obrir el documenta la tasca."
 
-#: scheduler/ipp.c:1548
 #, c-format
 msgid "Unable to add job for destination \"%s\"."
 msgstr "No es pot afegir la tasca al destí «%s»."
 
-#: cgi-bin/admin.c:1059 cgi-bin/admin.c:1419
 msgid "Unable to add printer"
 msgstr "No es pot afegir la impressora"
 
-#: scheduler/ipp.c:1246
 msgid "Unable to allocate memory for file types."
 msgstr "No es pot assignar la memòria pels tipus de fitxers."
 
-#: filter/pstops.c:451
 msgid "Unable to allocate memory for page info"
 msgstr "No s'ha pogut assignar memòria per la pàgina d'informació"
 
-#: filter/pstops.c:445
 msgid "Unable to allocate memory for pages array"
 msgstr "No s'ha pogut assignar memòria per la matriu de pàgines"
 
-#: cgi-bin/admin.c:1525
 msgid "Unable to cancel RSS subscription"
 msgstr "No es pot cancel·lar la subscripció RSS"
 
-#: backend/ipp.c:1942
 msgid "Unable to cancel print job."
 msgstr "No es pot cancel·lar la tasca d'impressió."
 
-#: cgi-bin/admin.c:2990
 msgid "Unable to change printer"
 msgstr "No es pot canviar la impressora"
 
-#: cgi-bin/admin.c:3906
 msgid "Unable to change printer-is-shared attribute"
 msgstr "No es pot canviar l'atribut printer-is-shared"
 
-#: cgi-bin/admin.c:1657 cgi-bin/admin.c:1799
 msgid "Unable to change server settings"
 msgstr "No es pot canviar la configuració del servidor"
 
-#: filter/commandtops.c:420
 msgid "Unable to configure printer options."
 msgstr "No es poden configurar les opcions de la impressora."
 
-#: cups/adminutil.c:911 cups/request.c:1016
 msgid "Unable to connect to host."
 msgstr "No es pot connectar a l'ordinador central."
 
-#: backend/ipp.c:713 backend/ipp.c:1138 backend/lpd.c:787 backend/socket.c:333
-#: backend/usb-unix.c:117
 msgid "Unable to contact printer, queuing on next printer in class."
 msgstr ""
 "No es pot contactar amb la impressora. Es posa a la cua de la següent "
 "impressora de la classe."
 
-#: cups/adminutil.c:726
 #, c-format
 msgid "Unable to copy 64-bit CUPS printer driver files (%d)."
 msgstr ""
 "No es poden copiar els fitxers del controlador d'impressora CUPS de 64 bits "
 "(%d)."
 
-#: cups/adminutil.c:691
 #, c-format
 msgid "Unable to copy 64-bit Windows printer driver files (%d)."
 msgstr ""
 "No es poden copiar els fitxers del controlador d'impressora Windows de 64 "
 "bits (%d)."
 
-#: cups/adminutil.c:522
 #, c-format
 msgid "Unable to copy CUPS printer driver files (%d)."
 msgstr "No es poden copiar els fitxers del controlador d'impressora CUPS (%d)."
 
-#: scheduler/ipp.c:2649
 #, c-format
 msgid "Unable to copy PPD file - %s"
 msgstr "No es pot copiar el fitxer PPD - %s"
 
-#: scheduler/ipp.c:2704
 msgid "Unable to copy PPD file."
 msgstr "No es pot copiar el fitxer PPD."
 
-#: cups/adminutil.c:487
 #, c-format
 msgid "Unable to copy Windows 2000 printer driver files (%d)."
 msgstr ""
 "No es poden copiar els fitxers del controlador d'impressora Windows 2000 "
 "(%d)."
 
-#: cups/adminutil.c:610
 #, c-format
 msgid "Unable to copy Windows 9x printer driver files (%d)."
 msgstr ""
 "No es poden copiar els fitxers del controlador d'impressora Windows 9x (%d)."
 
-#: scheduler/ipp.c:2626
 #, c-format
 msgid "Unable to copy interface script - %s"
 msgstr "No es pot copiar l'script de la interfície - %s"
 
-#: backend/ipp.c:2034
 msgid "Unable to create compressed print file"
 msgstr "No es pot crear el fitxer d'impressió comprimit"
 
-#: cups/util.c:602 cups/util.c:1656
 msgid "Unable to create printer-uri"
 msgstr "No es pot crear el printer-uri"
 
-#: cgi-bin/admin.c:1850 cgi-bin/admin.c:1862 scheduler/cupsfilter.c:1236
 msgid "Unable to create temporary file"
 msgstr "No es pot crear el fitxer temporal"
 
-#: cgi-bin/admin.c:2153
 msgid "Unable to delete class"
 msgstr "No es pot esborrar la classe"
 
-#: cgi-bin/admin.c:2238
 msgid "Unable to delete printer"
 msgstr "No es pot esborrar la impressora"
 
-#: cgi-bin/classes.c:260 cgi-bin/printers.c:269
 msgid "Unable to do maintenance command"
 msgstr "No es pot executar la comanda de manteniment"
 
-#: cgi-bin/admin.c:1974
 msgid "Unable to edit cupsd.conf files larger than 1MB"
 msgstr "No es poden editar fitxers cupsd.conf més grans d'1MB"
 
-#: cups/http.c:4272
 msgid ""
 "Unable to establish a secure connection to host (certificate chain invalid)."
 msgstr ""
 "No s'ha pogut establir una connexió segura amb l'amfitrió (la cadena del "
 "certificat no és vàlida)."
 
-#: cups/http.c:4262
 msgid ""
 "Unable to establish a secure connection to host (certificate not yet valid)."
 msgstr ""
 "No s'ha pogut establir una connexió segura amb l'amfitrió (el certificat "
 "encara no és vàlid)."
 
-#: cups/http.c:4257
 msgid "Unable to establish a secure connection to host (expired certificate)."
 msgstr ""
 "No s'ha pogut establir una connexió segura amb l'amfitrió (ha expirat el "
 "certificat)."
 
-#: cups/http.c:4267
 msgid "Unable to establish a secure connection to host (host name mismatch)."
 msgstr ""
 "No s'ha pogut establir una connexió segura amb l'amfitrió (hi ha un error en "
 "el nom de l'amfitrió)."
 
-#: cups/http.c:4277
 msgid ""
 "Unable to establish a secure connection to host (peer dropped connection "
 "before responding)."
@@ -5481,345 +4212,276 @@ msgstr ""
 "No s'ha pogut establir una connexió segura amb l'amfitrió (s'ha tallat la "
 "connexió abans de respondre)."
 
-#: cups/http.c:4252
 msgid ""
 "Unable to establish a secure connection to host (self-signed certificate)."
 msgstr ""
 "No s'ha pogut establir una connexió segura amb l'amfitrió (el certificat és "
 "autosignat)."
 
-#: cups/http.c:4247
 msgid ""
 "Unable to establish a secure connection to host (untrusted certificate)."
 msgstr ""
 "No s'ha pogut establir una connexió segura amb l'amfitrió (el certificat no "
 "és de confiança)."
 
-#: cups/http.c:4008 cups/http.c:4304 cups/http.c:4337 cups/http.c:4354
 msgid "Unable to establish a secure connection to host."
 msgstr "No es pot establir una connexió segura amb l'ordinador central."
 
-#: cgi-bin/ipp-var.c:365
 msgid "Unable to find destination for job"
 msgstr "No es pot trobar el destí de la tasca"
 
-#: cups/http-support.c:1748
 msgid "Unable to find printer."
 msgstr "No es pot trobar la impressora."
 
-#: backend/ipp.c:2056
 msgid "Unable to generate compressed print file"
 msgstr "No es pot generar el fitxer d'impressió comprimit"
 
-#: backend/ipp.c:3009
 msgid "Unable to get backend exit status."
 msgstr "No es pot obtenir el motiu de la sortida en segon pla"
 
-#: cgi-bin/classes.c:450
 msgid "Unable to get class list"
 msgstr "No es pot obtenir la llista de classes"
 
-#: cgi-bin/classes.c:549
 msgid "Unable to get class status"
 msgstr "No es pot obtenir l'estat de la classe"
 
-#: cgi-bin/admin.c:1320
 msgid "Unable to get list of printer drivers"
 msgstr "No es pot obtenir la llista dels controladors d'impressora"
 
-#: cgi-bin/admin.c:2840
 msgid "Unable to get printer attributes"
 msgstr "No es poden obtenir els atributs de la impressora"
 
-#: cgi-bin/printers.c:467
 msgid "Unable to get printer list"
 msgstr "No es pot obtenir la llista d'impressores"
 
-#: cgi-bin/printers.c:569
 msgid "Unable to get printer status"
 msgstr "No es pot obtenir l'estat de la impressora"
 
-#: backend/ipp.c:933
 msgid "Unable to get printer status."
 msgstr "No es pot obtenir l'estat de la impressora."
 
-#: cups/adminutil.c:565 cups/adminutil.c:769
 #, c-format
 msgid "Unable to install Windows 2000 printer driver files (%d)."
 msgstr ""
 "No es poden instal·lar els fitxers del controlador d'impressores per Windows "
 "2000 (%d)."
 
-#: cups/adminutil.c:639
 #, c-format
 msgid "Unable to install Windows 9x printer driver files (%d)."
 msgstr ""
 "No es poden instal·lar els fitxers del controlador d'impressores per Windows "
 "9x (%d)."
 
-#: cgi-bin/help.c:92
 msgid "Unable to load help index."
 msgstr "No es pot carregar l'índex de l'ajuda."
 
-#: backend/ipp.c:642 backend/lpd.c:421 backend/socket.c:275
 #, c-format
 msgid "Unable to locate printer \"%s\"."
 msgstr "No es pot ubicar la impressora «%s»."
 
-#: backend/dnssd.c:781 backend/ipp.c:324 backend/lpd.c:204
-#: backend/socket.c:171
 msgid "Unable to locate printer."
 msgstr "No es pot ubicar la impressora."
 
-#: cgi-bin/admin.c:813
 msgid "Unable to modify class"
 msgstr "No es pot modificar la classe"
 
-#: cgi-bin/admin.c:1058 cgi-bin/admin.c:1418
 msgid "Unable to modify printer"
 msgstr "No es pot modificar la impressora"
 
-#: cgi-bin/ipp-var.c:432 cgi-bin/ipp-var.c:521
 msgid "Unable to move job"
 msgstr "No es pot moure la tasca"
 
-#: cgi-bin/ipp-var.c:434 cgi-bin/ipp-var.c:523
 msgid "Unable to move jobs"
 msgstr "No es poden moure les tasques"
 
-#: cgi-bin/admin.c:3186 cups/ppd.c:339
 msgid "Unable to open PPD file"
 msgstr "No es pot obrir el fitxer PPD"
 
-#: backend/ipp.c:2040
 msgid "Unable to open compressed print file"
 msgstr "No es pot obrir el fitxer d'impressió comprimit"
 
-#: cgi-bin/admin.c:2608
 msgid "Unable to open cupsd.conf file:"
 msgstr "No es pot obrir el fitxer cups.conf"
 
-#: backend/usb-unix.c:141
 msgid "Unable to open device file"
 msgstr "No es pot obrir el fitxer de dispositiu"
 
-#: scheduler/ipp.c:6140
 #, c-format
 msgid "Unable to open document #%d in job #%d."
 msgstr "No es pot obrir el document #%d a la tasca #%d."
 
-#: cgi-bin/help.c:364
 msgid "Unable to open help file."
 msgstr "No es pot obrir el fitxer d'impressió."
 
-#: backend/ipp.c:365 backend/ipp.c:1398 backend/ipp.c:1594 backend/ipp.c:2046
-#: backend/lpd.c:488 backend/socket.c:158 backend/usb.c:237
-#: filter/gziptoany.c:71 filter/pstops.c:300
 msgid "Unable to open print file"
 msgstr "No es pot obrir el fitxer d'impressió"
 
-#: filter/rastertoepson.c:998 filter/rastertohp.c:724
-#: filter/rastertolabel.c:1147
 msgid "Unable to open raster file"
 msgstr "No es pot obrir el fitxer de trama"
 
-#: cgi-bin/ipp-var.c:795
 msgid "Unable to print test page"
 msgstr "No es pot imprimir la pàgina de prova"
 
-#: backend/runloop.c:96 backend/runloop.c:325 backend/usb-darwin.c:613
-#: backend/usb-darwin.c:657 backend/usb-libusb.c:343 backend/usb-libusb.c:378
 msgid "Unable to read print data."
 msgstr "No es poden llegir les dades d'impressió."
 
-#: cups/dest.c:3402
 msgid "Unable to resolve printer URI."
 msgstr "No es pot resoldre l'URI de la impressora."
 
-#: cups/adminutil.c:2088
 #, c-format
 msgid "Unable to run \"%s\": %s"
 msgstr "No es pot executar «%s»: %s"
 
-#: filter/pstops.c:563
 msgid "Unable to see in file"
 msgstr "No es pot veure al fitxer"
 
-#: cgi-bin/ipp-var.c:598 cgi-bin/ipp-var.c:618
 msgid "Unable to send command to printer driver"
 msgstr "No es pot enviar la comanda al controlador de la impressora"
 
-#: backend/usb-darwin.c:735 backend/usb-libusb.c:454
 msgid "Unable to send data to printer."
 msgstr "No es poden enviar dades a la impressora."
 
-#: cups/adminutil.c:821
 #, c-format
 msgid "Unable to set Windows printer driver (%d)."
 msgstr "No es pot configurar el controlador d'impressores per Windows (%d)"
 
-#: cgi-bin/admin.c:3807
 msgid "Unable to set options"
 msgstr "No es poden configurar les opcions"
 
-#: cgi-bin/admin.c:3077
 msgid "Unable to set server default"
 msgstr "No es pot posar la configuració per defecte al servidor"
 
-#: backend/ipp.c:2868 backend/ipp.c:2945 backend/ipp.c:2953
 msgid "Unable to start backend process."
 msgstr "No es pot iniciar el procés en segon pla."
 
-#: cgi-bin/admin.c:1912
 msgid "Unable to upload cupsd.conf file"
 msgstr "No es pot penjar el fitxer cups.conf"
 
-#: backend/usb-darwin.c:1985 backend/usb-darwin.c:2009
 msgid "Unable to use legacy USB class driver."
 msgstr "No es pot fer servir el controlador de la classe USB antic."
 
-#: backend/runloop.c:125 backend/runloop.c:380
 msgid "Unable to write print data"
 msgstr "No es poden escriure les dades d'impressió"
 
-#: filter/gziptoany.c:90
 #, c-format
 msgid "Unable to write uncompressed print data: %s"
 msgstr "No es poden escriure les dades sense comprimir: %s"
 
-#: cups/http-support.c:1303
 msgid "Unauthorized"
 msgstr "No autoritzat"
 
-#: cgi-bin/admin.c:3503
 msgid "Units"
 msgstr "Unitats"
 
-#: cups/http-support.c:1343 cups/ppd.c:366
 msgid "Unknown"
 msgstr "Desconegut"
 
-#: filter/pstops.c:2213
 #, c-format
 msgid "Unknown choice \"%s\" for option \"%s\"."
 msgstr "La tria de «%s» per l'opció «%s» és desconeguda."
 
-#: backend/ipp.c:507
 #, c-format
 msgid "Unknown encryption option value: \"%s\"."
 msgstr "El valor de l'opció de xifrat «%s» és desconegut."
 
-#: backend/lpd.c:350
 #, c-format
 msgid "Unknown file order: \"%s\"."
 msgstr "Ordre desconegut del fitxer: «%s»."
 
-#: backend/lpd.c:321
 #, c-format
 msgid "Unknown format character: \"%c\"."
 msgstr "Format del caràcter desconegut: «%c»."
 
-#: cups/dest-options.c:770
 msgid "Unknown media size name."
 msgstr "El nom de la mida del suport no és conegut."
 
-#: backend/ipp.c:554
 #, c-format
 msgid "Unknown option \"%s\" with value \"%s\"."
 msgstr "L'opció «%s» amb valor «%s» és desconeguda."
 
-#: filter/pstops.c:2196
 #, c-format
 msgid "Unknown option \"%s\"."
 msgstr "L'opció «%s» és desconeguda."
 
-#: backend/lpd.c:336
 #, c-format
 msgid "Unknown print mode: \"%s\"."
 msgstr "El mode d'impressió «%s» és desconegut."
 
-#: scheduler/ipp.c:10496
 #, c-format
 msgid "Unknown printer-error-policy \"%s\"."
 msgstr "El paràmetre printer-error-policy «%s» és desconegut."
 
-#: scheduler/ipp.c:10479
 #, c-format
 msgid "Unknown printer-op-policy \"%s\"."
 msgstr "El paràmetre printer-op-policy «%s» és desconegut."
 
-#: cups/http-addrlist.c:710
 msgid "Unknown service name."
 msgstr "El nom del servei és desconegut."
 
-#: backend/ipp.c:526
 #, c-format
 msgid "Unknown version option value: \"%s\"."
 msgstr "El valor de l'opció de la versió és desconegut: «%s»."
 
-#: scheduler/ipp.c:402
+#, 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 "No s'admet el grup de caràcters «%s»."
 
-#: scheduler/ipp.c:8171 scheduler/ipp.c:9401 scheduler/ipp.c:10950
 #, c-format
 msgid "Unsupported compression \"%s\"."
 msgstr "No s'admet la compressió «%s»."
 
-#: scheduler/ipp.c:8305 scheduler/ipp.c:9551 scheduler/ipp.c:10979
 #, c-format
 msgid "Unsupported document-format \"%s\"."
 msgstr "No s'admet el document-format «%s»."
 
-#: scheduler/ipp.c:9534
 #, c-format
 msgid "Unsupported document-format \"%s/%s\"."
 msgstr "No s'admet el document-format «%s/%s»."
 
-#: scheduler/ipp.c:1367
 #, c-format
 msgid "Unsupported format \"%s\"."
 msgstr "No s'admet el format «%s»."
 
-#: scheduler/ipp.c:1465
 msgid "Unsupported margins."
 msgstr "No s'admeten els marges."
 
-#: cups/pwg-media.c:529
 msgid "Unsupported media value."
 msgstr "No s'admet el valor del suport."
 
-#: filter/pstops.c:2478
 #, c-format
 msgid "Unsupported number-up value %d, using number-up=1."
 msgstr "No s'admet el valor %d a number-up. Es fa servir number-up=1."
 
-#: filter/pstops.c:2512
 #, c-format
 msgid "Unsupported number-up-layout value %s, using number-up-layout=lrtb."
 msgstr ""
 "No s'admet el valor %s a number-up-layout. Es fa servir number-up-"
 "layout=lrtb."
 
-#: filter/pstops.c:2563
 #, c-format
 msgid "Unsupported page-border value %s, using page-border=none."
 msgstr "No s'admet el valor %s a page-border. Es fa servir page-border=none."
 
-#: filter/rastertopwg.c:147 filter/rastertopwg.c:155 filter/rastertopwg.c:164
 msgid "Unsupported raster data."
 msgstr "No s'admet les dades en trama."
 
-#: cups/snmp.c:1112
 msgid "Unsupported value type"
 msgstr "El tipus de valor no és compatible"
 
-#: cups/http-support.c:1318
 msgid "Upgrade Required"
 msgstr "S'ha d'actualitzar"
 
-#: systemv/lpadmin.c:668
 msgid ""
 "Usage:\n"
 "\n"
@@ -5840,49 +4502,36 @@ msgstr ""
 "                       [-P fitxer-ppd] [-o nom=valor]\n"
 "                       [-u allow:usuari,usuari] [-u deny:usuari,usuari]"
 
-#: backend/dnssd.c:241 backend/ipp.c:313 backend/lpd.c:191
-#: backend/socket.c:135 backend/usb.c:183 filter/commandtops.c:74
-#: filter/gziptoany.c:50 filter/pstops.c:264 monitor/bcp.c:62
-#: monitor/tbcp.c:61
 #, c-format
 msgid "Usage: %s job-id user title copies options [file]"
 msgstr "Sintaxi: %s id-tasca usuari títol còpies opcions [fitxer]"
 
-#: systemv/cupsaddsmb.c:281
 msgid "Usage: cupsaddsmb [options] printer1 ... printerN"
 msgstr "Sintaxi: cupsaddsmb [opcions] impressora1 ... impressoraN"
 
-#: systemv/cupsctl.c:200
 msgid "Usage: cupsctl [options] [param=value ... paramN=valueN]"
 msgstr "Sintaxi: cupsctl [opcions] [param=valor ... paramN=valorN]"
 
-#: scheduler/main.c:2017
 msgid "Usage: cupsd [options]"
 msgstr "Sintaxi: cupsd [opcions]"
 
-#: scheduler/cupsfilter.c:1429
 msgid "Usage: cupsfilter [ options ] filename"
 msgstr "Sintaxi: cupsfilter [ opcions ] nomfitxer"
 
-#: systemv/cupstestdsc.c:425
 msgid "Usage: cupstestdsc [options] filename.ps [... filename.ps]"
 msgstr "Sintaxi: cupstestdsc [opcions] nomfitxer.ps [...nomfitxer.ps]"
 
-#: systemv/cupstestppd.c:3793
 msgid ""
 "Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]"
 msgstr ""
 "Sintaxi: cupstestppd [opcions] nomfitxer1.ppd[.gz] [... nomfitxerN.ppd[.gz]]"
 
-#: test/ipptool.c:4401
 msgid "Usage: ipptool [options] URI filename [ ... filenameN ]"
 msgstr "Sintaxi: ipptool [opcions] URI nomfitxer[ ... nomfitxerN]"
 
-#: systemv/lpmove.c:125
 msgid "Usage: lpmove job/src dest"
 msgstr "Sintaxi: lpmove tasca/font destí"
 
-#: systemv/lpoptions.c:553
 msgid ""
 "Usage: lpoptions [-h server] [-E] -d printer\n"
 "       lpoptions [-h server] [-E] [-p printer] -l\n"
@@ -5894,11 +4543,9 @@ msgstr ""
 "         lpoptions [-h servidor] [-E] -p impressora -o opció[=valor] ...\n"
 "         lpoptions [-h servidor] [-E] -x impressora"
 
-#: systemv/lppasswd.c:476
 msgid "Usage: lppasswd [-g groupname]"
 msgstr "Sintaxi: lppasswd [-g nomgrup]"
 
-#: systemv/lppasswd.c:479
 msgid ""
 "Usage: lppasswd [-g groupname] [username]\n"
 "       lppasswd [-g groupname] -a [username]\n"
@@ -5908,76 +4555,59 @@ msgstr ""
 "         lppasswd [-g nomgrup] -a [nomusuari]\n"
 "         lppasswd [-g nomgrup] -x [nomusuari]"
 
-#: berkeley/lpq.c:670
 msgid ""
 "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
 msgstr ""
 "Sintaxi: lpq [-P destí] [-U nomusuari] [-h nomamfitrió[:port]] [-l] "
 "[+interval]"
 
-#: ppdc/ppdc.cxx:435
 msgid "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]"
 msgstr "Sintaxi: ppdc [opcions] nomfitxer.rv [ ... nomfitxerN.drv ]"
 
-#: ppdc/ppdhtml.cxx:172
 msgid "Usage: ppdhtml [options] filename.drv >filename.html"
 msgstr "Sintaxi: ppdhtml [opcions] nomfitxer.drv >nomfitxer.html"
 
-#: ppdc/ppdi.cxx:128
 msgid "Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]"
 msgstr "Sintaxi: ppdi [opcions] nomfitxer.ppd [ ... nomfitxerN.ppd ]"
 
-#: ppdc/ppdmerge.cxx:367
 msgid "Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]"
 msgstr "Sintaxi: ppdmerge [opcions] nomfitxer.ppd [ ... nomfitxerN.ppd ]"
 
-#: ppdc/ppdpo.cxx:252
 msgid ""
 "Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]"
 msgstr ""
 "Sintaxi: ppdpo [opcions] -o nomfitxer.po nomfitxer.drv [ ... nomfitxerN.drv]"
 
-#: backend/snmp.c:218
 msgid "Usage: snmp [host-or-ip-address]"
 msgstr "Sintaxi: snmp [adreça-amfitrió-o-ip]"
 
-#: cups/snmp.c:1064
 msgid "Value uses indefinite length"
 msgstr "El valor té una longitud indefinida"
 
-#: cups/snmp.c:1049
 msgid "VarBind uses indefinite length"
 msgstr "VarBind té una longitud indefinida"
 
-#: cups/snmp.c:999
 msgid "Version uses indefinite length"
 msgstr "Version té una longitud indefinida"
 
-#: backend/ipp.c:1675
 msgid "Waiting for job to complete."
 msgstr "S'està esperant que acabi la tasca."
 
-#: backend/usb-darwin.c:457 backend/usb-libusb.c:193
 msgid "Waiting for printer to become available."
 msgstr "S'està esperant que la impressora estigui disponible."
 
-#: backend/socket.c:444
 msgid "Waiting for printer to finish."
 msgstr "S'està esperant que la impressora acabi."
 
-#: cups/adminutil.c:793
 msgid "Warning, no Windows 2000 printer drivers are installed."
 msgstr "AVÍS. No hi ha cap controlador per Windows 2000 instal·lat."
 
-#: cups/http-support.c:1339
 msgid "Web Interface is Disabled"
 msgstr "La interfície web està deshabilitada"
 
-#: cups/ppd.c:1947
 msgid "Yes"
 msgstr "Sí"
 
-#: scheduler/client.c:2437
 #, c-format
 msgid ""
 "You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://"
@@ -5986,7 +4616,6 @@ msgstr ""
 "Heu d'accedir a aquesta pagina a través de la URL <A HREF=\"https://%s:%d%s"
 "\">https://%s:%d%s</A>."
 
-#: systemv/lppasswd.c:254
 msgid ""
 "Your password must be at least 6 characters long, cannot contain your "
 "username, and must contain at least one letter and number."
@@ -5994,288 +4623,222 @@ msgstr ""
 "La contrasenya ha de tenir com a mínim 6 caràcters, no pot contenir el nom "
 "d'usuari, i ha de tenir com a mínim una lletra i un número."
 
-#: ppdc/sample.c:439
 msgid "ZPL Label Printer"
 msgstr "Impressora d'etiquetes ZPL"
 
-#: ppdc/sample.c:362
 msgid "Zebra"
 msgstr "Zebra"
 
-#: cups/notify.c:102
 msgid "aborted"
 msgstr "interromput"
 
-#: cups/notify.c:99
 msgid "canceled"
 msgstr "cancel·lat"
 
-#: cups/notify.c:105
 msgid "completed"
 msgstr "completat"
 
-#: scheduler/ipp.c:6012
 msgid "cups-deviced failed to execute."
 msgstr "no s'ha pogut executar correctament la cups-deviced."
 
-#: scheduler/ipp.c:6842 scheduler/ipp.c:7091
 msgid "cups-driverd failed to execute."
 msgstr "no s'ha pogut executar correctament la cups-driverd"
 
-#: systemv/cupsaddsmb.c:233
 #, c-format
 msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s"
 msgstr "cupsaddsmb: falta el fitxer PPD per la impressora «%s» - %s"
 
-#: systemv/cupsctl.c:141
 msgid "cupsctl: Cannot set Listen or Port directly."
 msgstr "cupsctl: no es pot establir Listen o Port directament."
 
-#: systemv/cupsctl.c:152
 #, c-format
 msgid "cupsctl: Unable to connect to server: %s"
 msgstr "cupsctl: no es pot connectar al servidor: %s"
 
-#: systemv/cupsctl.c:195
 #, c-format
 msgid "cupsctl: Unknown option \"%s\""
 msgstr "cupsctl: l'opció «%s» és desconeguda"
 
-#: systemv/cupsctl.c:197
 #, c-format
 msgid "cupsctl: Unknown option \"-%c\""
 msgstr "cupsctl: l'opció «-%c» és desconeguda"
 
-#: scheduler/main.c:189
 msgid "cupsd: Expected config filename after \"-c\" option."
 msgstr ""
 "cupsd: s'esperava un nom de fitxer de configuració després de l'opció «-c»."
 
-#: scheduler/main.c:221 scheduler/main.c:228
 msgid "cupsd: Unable to get current directory."
 msgstr "cupsd: No es pot obtenir el directori actual."
 
-#: scheduler/main.c:295
 #, c-format
 msgid "cupsd: Unknown argument \"%s\" - aborting."
 msgstr "cupsd: l'argument «%s» és desconegut - s'interromp."
 
-#: scheduler/main.c:288
 #, c-format
 msgid "cupsd: Unknown option \"%c\" - aborting."
 msgstr "cupsd: l'opció «%c» és desconeguda - s'interromp."
 
-#: scheduler/main.c:255
 msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
 msgstr ""
 "cupsd: no s'ha compilat amb compatibilitat per launchd(8). S'executa en mode "
 "normal."
 
-#: scheduler/cupsfilter.c:1209
 #, c-format
 msgid "cupsfilter: Invalid document number %d."
 msgstr "cupsfilter: el document número %d no és vàlid."
 
-#: scheduler/cupsfilter.c:1203
 #, c-format
 msgid "cupsfilter: Invalid job ID %d."
 msgstr "cupsfilter: la tasca %d no és vàlida."
 
-#: scheduler/cupsfilter.c:358
 msgid "cupsfilter: Only one filename can be specified."
 msgstr "cupsfilter: només es pot especificar un nom de fitxer."
 
-#: scheduler/cupsfilter.c:1251
 #, c-format
 msgid "cupsfilter: Unable to get job file - %s"
 msgstr "cupsfilter: no es pot obtenir el fitxer de la tasca - %s"
 
-#: systemv/cupstestppd.c:261
 msgid "cupstestppd: The -q option is incompatible with the -v option."
 msgstr "cupstestppd: l'opció -q no és compatible amb la opció -v."
 
-#: systemv/cupstestppd.c:277
 msgid "cupstestppd: The -v option is incompatible with the -q option."
 msgstr "cupstestppd: la opció -v no és compatible amb la opció -q."
 
-#: systemv/lpstat.c:1231 systemv/lpstat.c:1234 systemv/lpstat.c:1237
 #, c-format
 msgid "device for %s/%s: %s"
 msgstr "dispositiu per %s/%s: %s"
 
-#: systemv/lpstat.c:1218 systemv/lpstat.c:1221 systemv/lpstat.c:1224
 #, c-format
 msgid "device for %s: %s"
 msgstr "dispositiu per %s: %s"
 
-#: cups/snmp.c:1036
 msgid "error-index uses indefinite length"
 msgstr "error-index fa servir una longitud indefinida"
 
-#: cups/snmp.c:1028
 msgid "error-status uses indefinite length"
 msgstr "error-status fa servir una longitud indefinida"
 
-#: cups/notify.c:90
 msgid "held"
 msgstr "En pausa"
 
-#: berkeley/lpc.c:209
 msgid "help\t\tGet help on commands."
 msgstr "help\t\tproporciona ajuda sobre les comandes."
 
-#: cups/notify.c:131
 msgid "idle"
 msgstr "inactiva"
 
-#: test/ipptool.c:373 test/ipptool.c:515 test/ipptool.c:539
 msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
 msgstr "ipptool: «-i» i «-n» no són compatibles amb «-X»."
 
-#: test/ipptool.c:597
 #, c-format
 msgid "ipptool: Bad URI - %s."
 msgstr "ipptool: l'URI no es correcte - %s."
 
-#: test/ipptool.c:362
 #, c-format
 msgid "ipptool: Bad version %s for \"-V\"."
 msgstr "ipptool: la versió %s de «-V» no és correcta."
 
-#: test/ipptool.c:508
 msgid "ipptool: Invalid seconds for \"-i\"."
 msgstr "ipptool: els segons de «-i» no són correctes."
 
-#: test/ipptool.c:578
 msgid "ipptool: May only specify a single URI."
 msgstr "ipptool: heu d'especificar només un URI."
 
-#: test/ipptool.c:531
 msgid "ipptool: Missing count for \"-n\"."
 msgstr "ipptool: falta el comptador de «-n»."
 
-#: test/ipptool.c:408
 msgid "ipptool: Missing filename for \"-f\"."
 msgstr "ipptool: falta el nom del fitxer a «-f»."
 
-#: test/ipptool.c:389
 msgid "ipptool: Missing name=value for \"-d\"."
 msgstr "ipptool: falta nom=valor a «-d»."
 
-#: test/ipptool.c:498
 msgid "ipptool: Missing seconds for \"-i\"."
 msgstr "ipptool: falten els segons a «-i»."
 
-#: test/ipptool.c:332
 msgid "ipptool: Missing timeout for \"-T\"."
 msgstr "ipptool: falta el temps màxim d'espera a «-T»."
 
-#: test/ipptool.c:345
 msgid "ipptool: Missing version for \"-V\"."
 msgstr "ipptool: falta la versió a «-V»."
 
-#: test/ipptool.c:624
 msgid "ipptool: URI required before test file."
 msgstr "ipptool: falta l'URI abans del fitxer de prova."
 
-#: test/ipptool.c:558
 #, c-format
 msgid "ipptool: Unknown option \"-%c\"."
 msgstr "ipptool: l'opció «-%c» és desconeguda."
 
-#: scheduler/ipp.c:7838
 msgid "job-printer-uri attribute missing."
 msgstr "Falta l'atribut de job-printer-uri."
 
-#: systemv/lpadmin.c:131 systemv/lpadmin.c:375
 msgid "lpadmin: Class name can only contain printable characters."
 msgstr "lpadmin: el nom de la classe només pot tenir caràcters imprimibles."
 
-#: systemv/lpadmin.c:614
 msgid "lpadmin: Expected PPD after \"-P\" option."
 msgstr "lpadmin: s'esperava un PPD després de la opció «-P»."
 
-#: systemv/lpadmin.c:457
 msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
 msgstr "lpadmin: s'esperava allow/deny:llistausuaris després de la opció «-u»."
 
-#: systemv/lpadmin.c:364
 msgid "lpadmin: Expected class after \"-r\" option."
 msgstr "lpadmin: s'esperava una classe després de la opció «-r»."
 
-#: systemv/lpadmin.c:120
 msgid "lpadmin: Expected class name after \"-c\" option."
 msgstr "lpadmin: s'esperava un nom de classe després de la opció «-c»."
 
-#: systemv/lpadmin.c:558
 msgid "lpadmin: Expected description after \"-D\" option."
 msgstr "lpadmin: s'esperava una descripció després de la opció «-D»."
 
-#: systemv/lpadmin.c:491
 msgid "lpadmin: Expected device URI after \"-v\" option."
 msgstr "lpadmin: s'esperava un URI de dispositiu després de la opció «-v»."
 
-#: systemv/lpadmin.c:574
 msgid "lpadmin: Expected file type(s) after \"-I\" option."
 msgstr "lpadmin: s'esperava un(s) tipus de fitxer(s) després de la opció «-I»."
 
-#: systemv/lpadmin.c:202
 msgid "lpadmin: Expected hostname after \"-h\" option."
 msgstr ""
 "lpadmin: s'esperava un nom d'ordinador central després de la opció «-h»."
 
-#: systemv/lpadmin.c:221
 msgid "lpadmin: Expected interface after \"-i\" option."
 msgstr "lpadmin: s'esperava una interfície després de la opció «-i»."
 
-#: systemv/lpadmin.c:594
 msgid "lpadmin: Expected location after \"-L\" option."
 msgstr "lpadmin: s'esperava una ubicació després de la opció «-L»."
 
-#: systemv/lpadmin.c:274
 msgid "lpadmin: Expected model after \"-m\" option."
 msgstr "lpadmin: s'esperava un model després de la opció «-m»."
 
-#: systemv/lpadmin.c:417
 msgid "lpadmin: Expected name after \"-R\" option."
 msgstr "lpadmin: s'esperava un nom després de la opció «-R»."
 
-#: systemv/lpadmin.c:294
 msgid "lpadmin: Expected name=value after \"-o\" option."
 msgstr "lpadmin: s'esperava nom=valor després de la opció «-o»."
 
-#: systemv/lpadmin.c:313
 msgid "lpadmin: Expected printer after \"-p\" option."
 msgstr "lpadmin: s'esperava una impressora després de la opció «-p»."
 
-#: systemv/lpadmin.c:164
 msgid "lpadmin: Expected printer name after \"-d\" option."
 msgstr "lpadmin: s'esperava un nom d'impressora després de la opció «-d»."
 
-#: systemv/lpadmin.c:525
 msgid "lpadmin: Expected printer or class after \"-x\" option."
 msgstr "lpadmin: s'esperava un impressora o classe després de la opció «-x»."
 
-#: systemv/lpadmin.c:975
 msgid "lpadmin: No member names were seen."
 msgstr "lpadmin: no s'ha trobat cap nom de membre."
 
-#: systemv/lpadmin.c:762
 #, c-format
 msgid "lpadmin: Printer %s is already a member of class %s."
 msgstr "lpadmin: la impressora %s ja és membre de la classe %s."
 
-#: systemv/lpadmin.c:989
 #, c-format
 msgid "lpadmin: Printer %s is not a member of class %s."
 msgstr "lpadmin: la impressora %s no és membre de la classe %s."
 
-#: systemv/lpadmin.c:175 systemv/lpadmin.c:324 systemv/lpadmin.c:536
 msgid "lpadmin: Printer name can only contain printable characters."
 msgstr ""
 "lpadmin: el nom de la impressora només pot contenir caràcters imprimibles."
 
-#: systemv/lpadmin.c:105
 msgid ""
 "lpadmin: Unable to add a printer to the class:\n"
 "         You must specify a printer name first."
@@ -6283,18 +4846,13 @@ msgstr ""
 "lpadmin: no s'ha pogut afegir una impressora a la classe:\n"
 "         Heu d'especificar primer un nom d'impressora."
 
-#: systemv/lpadmin.c:96 systemv/lpadmin.c:149 systemv/lpadmin.c:253
-#: systemv/lpadmin.c:339 systemv/lpadmin.c:393 systemv/lpadmin.c:510
-#: systemv/lpadmin.c:647
 #, c-format
 msgid "lpadmin: Unable to connect to server: %s"
 msgstr "lpadmin: no s'ha pogut connectar al servidor: %s"
 
-#: systemv/lpadmin.c:1329
 msgid "lpadmin: Unable to create temporary file"
 msgstr "lpadmin: no s'ha pogut crear el fitxer temporal"
 
-#: systemv/lpadmin.c:402
 msgid ""
 "lpadmin: Unable to delete option:\n"
 "         You must specify a printer name first."
@@ -6302,12 +4860,10 @@ msgstr ""
 "lpadmin: no s'ha pogut esborrar la opció:\n"
 "         Heu d'especificar primer un nom d'impressora."
 
-#: systemv/lpadmin.c:1339
 #, c-format
 msgid "lpadmin: Unable to open PPD file \"%s\" - %s"
 msgstr "lpadmin: no s'ha pogut obrir el fitxer PPD «%s» - %s"
 
-#: systemv/lpadmin.c:348
 msgid ""
 "lpadmin: Unable to remove a printer from the class:\n"
 "         You must specify a printer name first."
@@ -6315,7 +4871,6 @@ msgstr ""
 "lpadmin: no es pot esborrar una impressora de la classe:\n"
 "         Heu d'especificar primer un nom d'impressora."
 
-#: systemv/lpadmin.c:656
 msgid ""
 "lpadmin: Unable to set the printer options:\n"
 "         You must specify a printer name first."
@@ -6323,174 +4878,138 @@ msgstr ""
 "lpadmin: no es pot establir les opcions de la impressora:\n"
 "         Heu d'especificar primer un nom d'impressora."
 
-#: systemv/lpadmin.c:474
 #, c-format
 msgid "lpadmin: Unknown allow/deny option \"%s\"."
 msgstr "lpadmin: l'opció allow/deny «%s» és desconeguda."
 
-#: systemv/lpadmin.c:629
 #, c-format
 msgid "lpadmin: Unknown argument \"%s\"."
 msgstr "lpadmin: l'argument «%s» és desconegut."
 
-#: systemv/lpadmin.c:624
 #, c-format
 msgid "lpadmin: Unknown option \"%c\"."
 msgstr "lpadmin: l'opció «%c» és desconeguda."
 
-#: systemv/lpadmin.c:580
 msgid "lpadmin: Warning - content type list ignored."
 msgstr "lpadmin: avís - s'ignora el contingut de la llista de tipus."
 
-#: berkeley/lpc.c:76 berkeley/lpc.c:104 berkeley/lpc.c:140
 msgid "lpc> "
 msgstr "lpc> "
 
-#: systemv/lpinfo.c:137
 msgid "lpinfo: Expected 1284 device ID string after \"--device-id\"."
 msgstr ""
 "lpinfo: s'esperava una cadena d'ID de dispositiu 1284 després de «--device-"
 "id»."
 
-#: systemv/lpinfo.c:190
 msgid "lpinfo: Expected language after \"--language\"."
 msgstr "lpinfo: s'esperava un idioma després de «--language»."
 
-#: systemv/lpinfo.c:207
 msgid "lpinfo: Expected make and model after \"--make-and-model\"."
 msgstr "lpinfo: s'esperava una marca i model després de «--make-and-model»."
 
-#: systemv/lpinfo.c:224
 msgid "lpinfo: Expected product string after \"--product\"."
 msgstr "lpinfo: s'esperava una cadena de producte després de «--product!»."
 
-#: systemv/lpinfo.c:155
 msgid "lpinfo: Expected scheme list after \"--exclude-schemes\"."
 msgstr ""
 "lpinfo: s'esperava una llista d'esquemes després de la opció «--exclude-"
 "schemes»."
 
-#: systemv/lpinfo.c:173
 msgid "lpinfo: Expected scheme list after \"--include-schemes\"."
 msgstr ""
 "lpinfo: s'esperava una llista d'esquemes després de la opció «--include-"
 "schemes»."
 
-#: systemv/lpinfo.c:241
 msgid "lpinfo: Expected timeout after \"--timeout\"."
 msgstr "lpinfo: s'esperava un temps d'espera després de «--timeout»."
 
-#: systemv/lpinfo.c:265
 #, c-format
 msgid "lpinfo: Unknown argument \"%s\"."
 msgstr "lpinfo: l'argument «%s» és desconegut."
 
-#: systemv/lpinfo.c:259
 #, c-format
 msgid "lpinfo: Unknown option \"%c\"."
 msgstr "lpinfo: l'opció «%c» és desconeguda."
 
-#: systemv/lpinfo.c:252
 #, c-format
 msgid "lpinfo: Unknown option \"%s\"."
 msgstr "lpinfo: l'opció «%s» és desconeguda."
 
-#: systemv/lpmove.c:133
 #, c-format
 msgid "lpmove: Unable to connect to server: %s"
 msgstr "lpmove: no s'ha pogut connectar al servidor: %s"
 
-#: systemv/lpmove.c:119
 #, c-format
 msgid "lpmove: Unknown argument \"%s\"."
 msgstr "lpmove: l'argument «%s» és desconegut."
 
-#: systemv/lpmove.c:97
 #, c-format
 msgid "lpmove: Unknown option \"%c\"."
 msgstr "lpmove: l'opció «%c» és desconeguda."
 
-#: systemv/lpoptions.c:150 systemv/lpoptions.c:168 systemv/lpoptions.c:244
 msgid "lpoptions: No printers."
 msgstr "lpoptions: no hi ha cap impressora."
 
-#: systemv/lpoptions.c:219
 #, c-format
 msgid "lpoptions: Unable to add printer or instance: %s"
 msgstr "lpoptions: no s'ha pogut afegir la impressora o la instància: %s"
 
-#: systemv/lpoptions.c:521
 #, c-format
 msgid "lpoptions: Unable to get PPD file for %s: %s"
 msgstr "lpoptions: no s'ha pogut obtenir el fitxer PPD de %s: %s"
 
-#: systemv/lpoptions.c:529
 #, c-format
 msgid "lpoptions: Unable to open PPD file for %s."
 msgstr "lpoptions: no s'ha pogut obrir el fitxer PPD per %s."
 
-#: systemv/lpoptions.c:99
 msgid "lpoptions: Unknown printer or class."
 msgstr "lpoptions: la impressora o la classe són desconegudes."
 
-#: systemv/lppasswd.c:173
 msgid "lppasswd: Only root can add or delete passwords."
 msgstr ""
 "lppasswd: només l'usuari primari (root) pot afegir o esborrar contrasenyes."
 
-#: systemv/lppasswd.c:302
 msgid "lppasswd: Password file busy."
 msgstr "lppaswd: el fitxer de contrasenyes està ocupat."
 
-#: systemv/lppasswd.c:431
 msgid "lppasswd: Password file not updated."
 msgstr "lppaswd: el fitxer de contrasenyes no està actualitzat."
 
-#: systemv/lppasswd.c:398
 msgid "lppasswd: Sorry, password doesn't match."
 msgstr "lppaswwd: la contrasenya no coincideix."
 
-#: systemv/lppasswd.c:253
 msgid "lppasswd: Sorry, password rejected."
 msgstr "lppaswwd: s'ha refusat la contrasenya."
 
-#: systemv/lppasswd.c:230
 msgid "lppasswd: Sorry, passwords don't match."
 msgstr "lppaswwd: les contrasenyes no coincideixen."
 
-#: systemv/lppasswd.c:199 systemv/lppasswd.c:218
 #, c-format
 msgid "lppasswd: Unable to copy password string: %s"
 msgstr "lppasswd: no s'ha pogut copiar la cadena de contrasenya: %s"
 
-#: systemv/lppasswd.c:304 systemv/lppasswd.c:312 systemv/lppasswd.c:329
 #, c-format
 msgid "lppasswd: Unable to open password file: %s"
 msgstr "lppasswd: no s'ha pogut obrir el fitxer de contrasenyes: %s"
 
-#: systemv/lppasswd.c:364 systemv/lppasswd.c:377 systemv/lppasswd.c:408
 #, c-format
 msgid "lppasswd: Unable to write to password file: %s"
 msgstr "lppasswd: no s'ha pogut escriure al fitxer de contrasenyes: %s"
 
-#: systemv/lppasswd.c:446
 #, c-format
 msgid "lppasswd: failed to backup old password file: %s"
 msgstr ""
 "lppasswd: no s'ha pogut fer la còpia de seguretat del fitxer de contrasenyes "
 "antic: %s"
 
-#: systemv/lppasswd.c:458
 #, c-format
 msgid "lppasswd: failed to rename password file: %s"
 msgstr "lppasswd: no s'ha pogut canviar el nom del fitxer de contrasenyes: %s"
 
-#: systemv/lppasswd.c:389
 #, c-format
 msgid "lppasswd: user \"%s\" and group \"%s\" do not exist."
 msgstr "lppaswd: l'usuari «%s» i el grup «%s» no existeixen."
 
-#: systemv/lpstat.c:1039
 #, c-format
 msgid ""
 "lpstat: error - %s environment variable names non-existent destination \"%s"
@@ -6499,139 +5018,112 @@ msgstr ""
 "lpstat: error - la variable d'entorn %s esmenta el destí «%s» que no "
 "existeix."
 
-#: systemv/lpstat.c:970
 #, c-format
 msgid "members of class %s:"
 msgstr "membres de la classe %s:"
 
-#: berkeley/lpq.c:582
 msgid "no entries"
 msgstr "no hi ha cap entrada"
 
-#: systemv/lpstat.c:1043
 msgid "no system default destination"
 msgstr "no hi ha cap destí per defecte"
 
-#: scheduler/ipp.c:5702
 msgid "notify-events not specified."
 msgstr "no s'ha especificat cap notify-events."
 
-#: scheduler/ipp.c:2034 scheduler/ipp.c:5607
 #, c-format
 msgid "notify-recipient-uri URI \"%s\" is already used."
 msgstr "L'URI de notify-recipient-uri «%s» ja s'ha fet servir."
 
-#: scheduler/ipp.c:2024 scheduler/ipp.c:5597
 #, c-format
 msgid "notify-recipient-uri URI \"%s\" uses unknown scheme."
 msgstr "L'URI de notify-recipient-uri «%s» fa servir un esquema desconegut."
 
-#: cups/notify.c:87
 msgid "pending"
 msgstr "pendent"
 
-#: ppdc/ppdc.cxx:113 ppdc/ppdpo.cxx:93
 #, c-format
 msgid "ppdc: Adding include directory \"%s\"."
 msgstr "ppdc: s'afegeix el directori inclòs «%s»."
 
-#: ppdc/ppdpo.cxx:134
 #, c-format
 msgid "ppdc: Adding/updating UI text from %s."
 msgstr "ppdc: s'afegeix/actualitza el text de l'UI des de %s."
 
-#: ppdc/ppdc-source.cxx:410
 #, c-format
 msgid "ppdc: Bad boolean value (%s) on line %d of %s."
 msgstr "ppdc: valor booleà incorrecte (%s) a la línia %d de %s."
 
-#: ppdc/ppdc-import.cxx:264
 #, c-format
 msgid "ppdc: Bad font attribute: %s"
 msgstr "ppdc: l'atribut del tipus de lletra és incorrecte: %s"
 
-#: ppdc/ppdc-source.cxx:1796
 #, c-format
 msgid "ppdc: Bad resolution name \"%s\" on line %d of %s."
 msgstr "ppdc: el nom de resolució «%s» de la línia %d de %s és incorrecte."
 
-#: ppdc/ppdc-source.cxx:1113
 #, c-format
 msgid "ppdc: Bad status keyword %s on line %d of %s."
 msgstr "ppdc: la paraula clau d'estat %s de la línia %d de %s és incorrecta."
 
-#: ppdc/ppdc-source.cxx:2033
 #, c-format
 msgid "ppdc: Bad variable substitution ($%c) on line %d of %s."
 msgstr ""
 "ppdc: la variable de substitució ($%c) de la línia %d de %s és incorrecta."
 
-#: ppdc/ppdc-source.cxx:2719
 #, c-format
 msgid "ppdc: Choice found on line %d of %s with no Option."
 msgstr "ppdc: s'ha trobat una elecció a la línia %d de %s sense cap opció."
 
-#: ppdc/ppdc-source.cxx:1698
 #, c-format
 msgid "ppdc: Duplicate #po for locale %s on line %d of %s."
 msgstr "ppdc: #po duplicat per l'idioma %s a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:932
 #, c-format
 msgid "ppdc: Expected a filter definition on line %d of %s."
 msgstr "ppdc: s'esperava una definició de filtre a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:955
 #, c-format
 msgid "ppdc: Expected a program name on line %d of %s."
 msgstr "ppdc: s'esperava un nom de programa a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:394
 #, c-format
 msgid "ppdc: Expected boolean value on line %d of %s."
 msgstr "ppdc: s'esperava un valor booleà a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:1093
 #, c-format
 msgid "ppdc: Expected charset after Font on line %d of %s."
 msgstr ""
 "ppdc: s'esperava un joc de caràcters després de Font a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:447
 #, c-format
 msgid "ppdc: Expected choice code on line %d of %s."
 msgstr "ppdc: s'esperava un codi d'elecció a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:435
 #, c-format
 msgid "ppdc: Expected choice name/text on line %d of %s."
 msgstr "ppdc: s'esperava un nom/text d'elecció a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:503
 #, c-format
 msgid "ppdc: Expected color order for ColorModel on line %d of %s."
 msgstr ""
 "ppdc: s'esperava un ordre de colors per ColorModel a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:492
 #, c-format
 msgid "ppdc: Expected colorspace for ColorModel on line %d of %s."
 msgstr ""
 "ppdc: s'esperava un espai de colors per ColorModel a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:514
 #, c-format
 msgid "ppdc: Expected compression for ColorModel on line %d of %s."
 msgstr "ppdc: s'esperava una compressió per ColorModel a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:695
 #, c-format
 msgid "ppdc: Expected constraints string for UIConstraints on line %d of %s."
 msgstr ""
 "ppdc: s'esperava una cadena de restriccions per UIConstraints a la línia %d "
 "de %s."
 
-#: ppdc/ppdc-source.cxx:2905
 #, c-format
 msgid ""
 "ppdc: Expected driver type keyword following DriverType on line %d of %s."
@@ -6639,135 +5131,110 @@ msgstr ""
 "ppdc: s'esperava una paraula clau de tipus de controlador després de "
 "DriverType a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:826
 #, c-format
 msgid "ppdc: Expected duplex type after Duplex on line %d of %s."
 msgstr ""
 "ppdc: s'esperava un tipus de dúplex després de Duplex a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:1077
 #, c-format
 msgid "ppdc: Expected encoding after Font on line %d of %s."
 msgstr "ppdc: s'esperava una codificació després de Font a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:1689
 #, c-format
 msgid "ppdc: Expected filename after #po %s on line %d of %s."
 msgstr ""
 "ppdc: s'esperava un nom de fitxer després de #po %s a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:1205
 #, c-format
 msgid "ppdc: Expected group name/text on line %d of %s."
 msgstr "ppdc: s'esperava un nom/text de grup a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:2619
 #, c-format
 msgid "ppdc: Expected include filename on line %d of %s."
 msgstr "ppdc: s'esperava un nom de fitxer d'inclusió a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:1502
 #, c-format
 msgid "ppdc: Expected integer on line %d of %s."
 msgstr "ppdc: s'esperava un enter a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:1681
 #, c-format
 msgid "ppdc: Expected locale after #po on line %d of %s."
 msgstr "ppdc: s'esperava un idioma després de #po a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:353
 #, c-format
 msgid "ppdc: Expected name after %s on line %d of %s."
 msgstr "ppdc: s'esperava un nom després de %s a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:3277
 #, c-format
 msgid "ppdc: Expected name after FileName on line %d of %s."
 msgstr "ppdc: s'esperava un nom després de FileName a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:1058
 #, c-format
 msgid "ppdc: Expected name after Font on line %d of %s."
 msgstr "ppdc: s'esperava un nom després de Font a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:3108
 #, c-format
 msgid "ppdc: Expected name after Manufacturer on line %d of %s."
 msgstr "ppdc: s'esperava un nom després de Manufacturer a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:3141
 #, c-format
 msgid "ppdc: Expected name after MediaSize on line %d of %s."
 msgstr "ppdc: s'esperava un nom després de MediaSize a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:3231
 #, c-format
 msgid "ppdc: Expected name after ModelName on line %d of %s."
 msgstr "ppdc: s'esperava un nom després de ModelName a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:3294
 #, c-format
 msgid "ppdc: Expected name after PCFileName on line %d of %s."
 msgstr "ppdc: s'esperava un nom després de PCFileName a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:1156
 #, c-format
 msgid "ppdc: Expected name/text after %s on line %d of %s."
 msgstr "ppdc: s'esperava un nom/text després de %s a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:1245
 #, c-format
 msgid "ppdc: Expected name/text after Installable on line %d of %s."
 msgstr ""
 "ppdc: s'esperava un nom/text després d'Installable a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:1782
 #, c-format
 msgid "ppdc: Expected name/text after Resolution on line %d of %s."
 msgstr ""
 "ppdc: s'esperava un nom/text després de Resolution a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:479
 #, c-format
 msgid "ppdc: Expected name/text combination for ColorModel on line %d of %s."
 msgstr ""
 "ppdc: s'esperava una combinació de nom/text per ColorModel a la línia %d de "
 "%s."
 
-#: ppdc/ppdc-source.cxx:1574
 #, c-format
 msgid "ppdc: Expected option name/text on line %d of %s."
 msgstr "ppdc: s'esperava un nom/text d'opció a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:1608
 #, c-format
 msgid "ppdc: Expected option section on line %d of %s."
 msgstr "ppdc: s'esperava una secció d'opció a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:1586
 #, c-format
 msgid "ppdc: Expected option type on line %d of %s."
 msgstr "ppdc: s'esperava un tipus d'opció a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:1765
 #, c-format
 msgid "ppdc: Expected override field after Resolution on line %d of %s."
 msgstr ""
 "ppdc: s'esperava un camp de substitució després de Resolution a la línia %d "
 "de %s."
 
-#: ppdc/ppdc-catalog.cxx:341 ppdc/ppdc-catalog.cxx:353
 #, c-format
 msgid "ppdc: Expected quoted string on line %d of %s."
 msgstr "ppdc: s'esperava una cadena entre cometes a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:1004
 #, c-format
 msgid "ppdc: Expected real number on line %d of %s."
 msgstr "ppdc: s'esperava un número real a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:572
 #, c-format
 msgid ""
 "ppdc: Expected resolution/mediatype following ColorProfile on line %d of %s."
@@ -6775,7 +5242,6 @@ msgstr ""
 "ppdc: s'esperava una resolució/tipus de mitjà després de ColorProfile a la "
 "línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:1863
 #, c-format
 msgid ""
 "ppdc: Expected resolution/mediatype following SimpleColorProfile on line %d "
@@ -6784,99 +5250,79 @@ msgstr ""
 "ppdc: s'esperava una resolució/tipus de mitjà després de SimpleColorProfile "
 "a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:361
 #, c-format
 msgid "ppdc: Expected selector after %s on line %d of %s."
 msgstr "ppdc: s'esperava un selector després de %s a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:1101
 #, c-format
 msgid "ppdc: Expected status after Font on line %d of %s."
 msgstr "ppdc: s'esperava un estat després de Font a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:2794
 #, c-format
 msgid "ppdc: Expected string after Copyright on line %d of %s."
 msgstr "ppdc: s'esperava una cadena després de Copyright a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:3397
 #, c-format
 msgid "ppdc: Expected string after Version on line %d of %s."
 msgstr "ppdc: s'esperava una cadena després de Version a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:728
 #, c-format
 msgid "ppdc: Expected two option names on line %d of %s."
 msgstr "ppdc: s'esperava dos noms d'opció a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:372
 #, c-format
 msgid "ppdc: Expected value after %s on line %d of %s."
 msgstr "ppdc: s'esperava un valor després de %s a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:1085
 #, c-format
 msgid "ppdc: Expected version after Font on line %d of %s."
 msgstr "ppdc: s'esperava una versió després de Font a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:227
 #, c-format
 msgid "ppdc: Invalid #include/#po filename \"%s\"."
 msgstr "ppdc: el nom de fitxer #include/#po «%s» no és vàlid."
 
-#: ppdc/ppdc-source.cxx:972
 #, c-format
 msgid "ppdc: Invalid cost for filter on line %d of %s."
 msgstr "ppdc: el cost del filtre no és vàlid a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:964
 #, c-format
 msgid "ppdc: Invalid empty MIME type for filter on line %d of %s."
 msgstr "ppdc: el tipus MIME buit no és vàlid pel filtre a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:980
 #, c-format
 msgid "ppdc: Invalid empty program name for filter on line %d of %s."
 msgstr ""
 "ppdc: el nom de programa buit no és vàlid pel filtre a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:1628
 #, c-format
 msgid "ppdc: Invalid option section \"%s\" on line %d of %s."
 msgstr "ppdc: la secció d'opció «%s» no és vàlida a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:1600
 #, c-format
 msgid "ppdc: Invalid option type \"%s\" on line %d of %s."
 msgstr "ppdc: el tipus d'opció «%s» no és vàlid a la línia %d de %s."
 
-#: ppdc/ppdc.cxx:251 ppdc/ppdpo.cxx:123
 #, c-format
 msgid "ppdc: Loading driver information file \"%s\"."
 msgstr "ppdc: s'està carregant el fitxer d'informació del controlador «%s»."
 
-#: ppdc/ppdc.cxx:187
 #, c-format
 msgid "ppdc: Loading messages for locale \"%s\"."
 msgstr "ppdc: s'està carregant l'idioma «%s»."
 
-#: ppdc/ppdc.cxx:126
 #, c-format
 msgid "ppdc: Loading messages from \"%s\"."
 msgstr "ppdc: s'està carregant els missatges des de «%s»."
 
-#: ppdc/ppdc-source.cxx:2412 ppdc/ppdc-source.cxx:2644
 #, c-format
 msgid "ppdc: Missing #endif at end of \"%s\"."
 msgstr "ppdc: falta un #endif al final de «%s»."
 
-#: ppdc/ppdc-source.cxx:2513 ppdc/ppdc-source.cxx:2548
-#: ppdc/ppdc-source.cxx:2578
 #, c-format
 msgid "ppdc: Missing #if on line %d of %s."
 msgstr "ppdc: falta un #if a la línia %d de %s."
 
-#: ppdc/ppdc-catalog.cxx:418
 #, c-format
 msgid ""
 "ppdc: Need a msgid line before any translation strings on line %d of %s."
@@ -6884,117 +5330,93 @@ msgstr ""
 "oodc: es necessita un msgid abans de la cadena per traduir a la línia %d de "
 "%s."
 
-#: ppdc/ppdc-driver.cxx:730
 #, c-format
 msgid "ppdc: No message catalog provided for locale %s."
 msgstr "ppdc: no s'ha donat el catàleg de missatges per l'idioma %s."
 
-#: ppdc/ppdc-source.cxx:1651 ppdc/ppdc-source.cxx:2882
-#: ppdc/ppdc-source.cxx:2968 ppdc/ppdc-source.cxx:3061
-#: ppdc/ppdc-source.cxx:3194 ppdc/ppdc-source.cxx:3327
 #, c-format
 msgid "ppdc: Option %s defined in two different groups on line %d of %s."
 msgstr ""
 "ppdc: la opció %s està definida a dos grups diferents a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:1644
 #, c-format
 msgid "ppdc: Option %s redefined with a different type on line %d of %s."
 msgstr ""
 "ppdc: la opció %s està redefinida amb un tipus diferent a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:705
 #, c-format
 msgid "ppdc: Option constraint must *name on line %d of %s."
 msgstr "ppdc: la opció de restricció ha d'incloure *nom a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:2495
 #, c-format
 msgid "ppdc: Too many nested #if's on line %d of %s."
 msgstr "ppdc: hi ha massa #if imbricats a la línia %d de %s."
 
-#: ppdc/ppdc.cxx:374
 #, c-format
 msgid "ppdc: Unable to create PPD file \"%s\" - %s."
 msgstr "ppdc: no s'ha pogut crear el fitxer PPD «%s» - %s."
 
-#: ppdc/ppdc.cxx:266
 #, c-format
 msgid "ppdc: Unable to create output directory %s: %s"
 msgstr "ppdc: no s'ha pogut crear el directori de sortida %s: %s"
 
-#: ppdc/ppdc.cxx:287
 #, c-format
 msgid "ppdc: Unable to create output pipes: %s"
 msgstr "ppdc: no s'ha pogut crear els conductes de sortida: %s"
 
-#: ppdc/ppdc.cxx:303 ppdc/ppdc.cxx:309
 #, c-format
 msgid "ppdc: Unable to execute cupstestppd: %s"
 msgstr "ppdc: no s'ha pogut executar cupstestppd: %s"
 
-#: ppdc/ppdc-source.cxx:1730
 #, c-format
 msgid "ppdc: Unable to find #po file %s on line %d of %s."
 msgstr "ppdc: no s'ha pogut trobar el fitxer #po %s a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:2651
 #, c-format
 msgid "ppdc: Unable to find include file \"%s\" on line %d of %s."
 msgstr ""
 "ppdc: no s'ha pogut trobar el fitxer d'inclusió «%s» a la línia %d de %s."
 
-#: ppdc/ppdc.cxx:198
 #, c-format
 msgid "ppdc: Unable to find localization for \"%s\" - %s"
 msgstr "ppdc: no s'ha pogut trobar la localització de «%s» - %s"
 
-#: ppdc/ppdc.cxx:135
 #, c-format
 msgid "ppdc: Unable to load localization file \"%s\" - %s"
 msgstr "ppdc: no s'ha pogut carregar el fitxer de localització «%s» - %s"
 
-#: ppdc/ppdc-file.cxx:50
 #, c-format
 msgid "ppdc: Unable to open %s: %s"
 msgstr "ppdc: no s'ha pogut obrir %s: %s"
 
-#: ppdc/ppdc-source.cxx:2054
 #, c-format
 msgid "ppdc: Undefined variable (%s) on line %d of %s."
 msgstr "ppdc: la variable (%s) de la línia %d de %s no està definida."
 
-#: ppdc/ppdc-catalog.cxx:435
 #, c-format
 msgid "ppdc: Unexpected text on line %d of %s."
 msgstr "ppdc: hi ha un text inesperat a la línia %d de %s."
 
-#: ppdc/ppdc-source.cxx:2924
 #, c-format
 msgid "ppdc: Unknown driver type %s on line %d of %s."
 msgstr "ppdc: el tipus de controlador %s de la línia %d de %s no és conegut."
 
-#: ppdc/ppdc-source.cxx:906
 #, c-format
 msgid "ppdc: Unknown duplex type \"%s\" on line %d of %s."
 msgstr "ppdc: el tipus de dúplex «%s» de la línia %d de %s no és conegut."
 
-#: ppdc/ppdc-source.cxx:3154
 #, c-format
 msgid "ppdc: Unknown media size \"%s\" on line %d of %s."
 msgstr "ppdc: la mida del mitjà «%s» de la línia %d de %s no és coneguda."
 
-#: ppdc/ppdc-catalog.cxx:463
 #, c-format
 msgid "ppdc: Unknown message catalog format for \"%s\"."
 msgstr "ppdc: el format del catàleg de missatges de «%s» no és conegut."
 
-#: ppdc/ppdc-source.cxx:3408
 #, c-format
 msgid "ppdc: Unknown token \"%s\" seen on line %d of %s."
 msgstr "ppdc: el testimoni «%s» de la línia %d de %s no és conegut."
 
-#: ppdc/ppdc-source.cxx:1014
 #, c-format
 msgid ""
 "ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s."
@@ -7002,125 +5424,99 @@ msgstr ""
 "ppdc: els caràcters finals del número real «%s» de la línia %d de %s no són "
 "coneguts."
 
-#: ppdc/ppdc-source.cxx:2164
 #, c-format
 msgid "ppdc: Unterminated string starting with %c on line %d of %s."
 msgstr ""
 "ppdc: la cadena que comença per %c de la línia %d de %s no està acabada."
 
-#: ppdc/ppdc.cxx:365
 #, c-format
 msgid "ppdc: Warning - overlapping filename \"%s\"."
 msgstr "ppdc: avís - es superposa el nom del fitxer «%s»."
 
-#: ppdc/ppdc.cxx:380
 #, c-format
 msgid "ppdc: Writing %s."
 msgstr "ppdc: s'escriu %s."
 
-#: ppdc/ppdc.cxx:148
 #, c-format
 msgid "ppdc: Writing PPD files to directory \"%s\"."
 msgstr "ppdc: s'escriuen els fitxers PPD a la carpeta «%s»."
 
-#: ppdc/ppdmerge.cxx:136
 #, c-format
 msgid "ppdmerge: Bad LanguageVersion \"%s\" in %s."
 msgstr "ppdmerge: LanguageVersion «%s» incorrecte a %s."
 
-#: ppdc/ppdmerge.cxx:176
 #, c-format
 msgid "ppdmerge: Ignoring PPD file %s."
 msgstr "ppdmerge: el fitxer PPD %s s'ignora."
 
-#: ppdc/ppdmerge.cxx:160
 #, c-format
 msgid "ppdmerge: Unable to backup %s to %s - %s"
 msgstr "ppdmerge: no s'ha pogut fer la còpia de seguretat %s a %s- %s"
 
-#: systemv/lpstat.c:1784
 #, c-format
 msgid "printer %s disabled since %s -"
 msgstr "la impressora %s està deshabilitada des de %s -"
 
-#: systemv/lpstat.c:1773
 #, c-format
 msgid "printer %s is idle.  enabled since %s"
 msgstr "la impressora %s està inactiva. Està activada des de %s"
 
-#: systemv/lpstat.c:1778
 #, c-format
 msgid "printer %s now printing %s-%d.  enabled since %s"
 msgstr "la impressora %s està imprimint %s-%d. Està habilitada des de %s"
 
-#: systemv/lpstat.c:1909
 #, c-format
 msgid "printer %s/%s disabled since %s -"
 msgstr "la impressora %s/%s està deshabilitada des de %s -"
 
-#: systemv/lpstat.c:1895
 #, c-format
 msgid "printer %s/%s is idle.  enabled since %s"
 msgstr "la impressora %s/%s està inactiva. Està activada des de %s"
 
-#: systemv/lpstat.c:1902
 #, c-format
 msgid "printer %s/%s now printing %s-%d.  enabled since %s"
 msgstr "la impressora %s/%s està imprimint %s-%d. Està activada des de %s"
 
-#: cups/notify.c:93 cups/notify.c:134
 msgid "processing"
 msgstr "s'està processant"
 
-#: systemv/lp.c:644
 #, c-format
 msgid "request id is %s-%d (%d file(s))"
 msgstr "l'identificador de la petició és %s-%d (%d fitxer(s))"
 
-#: cups/snmp.c:1020
 msgid "request-id uses indefinite length"
 msgstr "la request-id fa servir una longitud indefinida"
 
-#: systemv/lpstat.c:2048
 msgid "scheduler is not running"
 msgstr "el programador de tasques no s'està executant"
 
-#: systemv/lpstat.c:2044
 msgid "scheduler is running"
 msgstr "el programador de tasques s'està executant"
 
-#: cups/adminutil.c:2159
 #, c-format
 msgid "stat of %s failed: %s"
 msgstr "stat de %s ha fallat: %s"
 
-#: berkeley/lpc.c:211
 msgid "status\t\tShow status of daemon and queue."
 msgstr "status\t\tmostra l'estat del dimoni i la cua."
 
-#: cups/notify.c:96 cups/notify.c:137
 msgid "stopped"
 msgstr "aturat"
 
-#: systemv/lpstat.c:1017
 #, c-format
 msgid "system default destination: %s"
 msgstr "destí per defecte del sistema: %s"
 
-#: systemv/lpstat.c:1014
 #, c-format
 msgid "system default destination: %s/%s"
 msgstr "destí per defecte del sistema: %s/%s"
 
-#: cups/notify.c:108 cups/notify.c:140
 msgid "unknown"
 msgstr "desconegut"
 
-#: cups/notify.c:117
 msgid "untitled"
 msgstr "sense títol"
 
-#: cups/snmp.c:1045
 msgid "variable-bindings uses indefinite length"
 msgstr "La variable-bindings fa servir una longitud indefinida"
 
@@ -7200,6 +5596,9 @@ msgstr "La variable-bindings fa servir una longitud indefinida"
 #~ msgstr ""
 #~ "  -v                      Mostra tots els atributs enviats i rebuts."
 
+#~ msgid "%s: Error - expected destination after \"-b\" option."
+#~ msgstr "%s: error - s'esperava un destí després de l'opció «-b»."
+
 #~ msgid "3.5\" Disk - 2 1/8 x 2 3/4\""
 #~ msgstr "Disc de 3.5 - 2 1/8 x 2 3/4\""
 
@@ -7221,6 +5620,16 @@ msgstr "La variable-bindings fa servir una longitud indefinida"
 #~ msgid "Large Address - 1 4/10 x 3 1/2\""
 #~ msgstr "Adreça gran - 1 4/10 x 3 1/2\""
 
+#~ msgid "Print file accepted - job ID %d."
+#~ msgstr "S'ha acceptat el fitxer d'impressió - ID de la tasca %d."
+
+#~ msgid "Print file accepted - job ID unknown."
+#~ msgstr ""
+#~ "S'ha acceptat el fitxer d'impressió - l'ID de la tasca és desconegut."
+
+#~ msgid "Print file was not accepted."
+#~ msgstr "No s'ha acceptat el fitxer d'impressió."
+
 #~ msgid "Printer busy, will retry in 10 seconds."
 #~ msgstr ""
 #~ "La impressora està ocupada. Es tornarà a intentar d'aquí a 10 segons."
@@ -7249,6 +5658,12 @@ msgstr "La variable-bindings fa servir una longitud indefinida"
 #~ msgid "Shipping Address - 2 5/16 x 4\""
 #~ msgstr "Adreça de lliurament - 2 5/16 x 4\""
 
+#~ msgid "The printer URI is incorrect or no longer exists."
+#~ msgstr "L'URI de la impressora no és correcte o ja no existeix."
+
+#~ msgid "The printer does not support IPP/%d.%d, trying IPP/%s."
+#~ msgstr "La impressora no admet el IPP/%d.%d, s'està intentant el IPP/%s."
+
 #~ msgid "The printer is low on toner."
 #~ msgstr "S'està acabant el tòner de la impressora."
 
index 1fe5bb9fd8759f906e380ee913a5eb0612091b1d..14887723583fa76295cb72b4ed010aef8c4a1e4e 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: 2012-05-23 16:24-0700\n"
+"POT-Creation-Date: 2012-10-22 11:09-0400\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"
@@ -25,189 +25,122 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: systemv/lpstat.c:1876
-#: systemv/lpstat.c:2001
 msgid "\t\t(all)"
 msgstr "\t\t(todos)"
 
-#: systemv/lpstat.c:1879
-#: systemv/lpstat.c:1882
-#: systemv/lpstat.c:2004
-#: systemv/lpstat.c:2007
 msgid "\t\t(none)"
 msgstr "\t\t(ninguno)"
 
-#: berkeley/lpc.c:434
 #, c-format
 msgid "\t%d entries"
 msgstr "\t%d entradas"
 
-#: systemv/lpstat.c:756
-#: systemv/lpstat.c:772
 #, c-format
 msgid "\t%s"
 msgstr "\t%s"
 
-#: systemv/lpstat.c:1857
-#: systemv/lpstat.c:1982
 msgid "\tAfter fault: continue"
 msgstr "\tTras fallo: continuar"
 
-#: systemv/lpstat.c:1481
-#: systemv/lpstat.c:1826
-#: systemv/lpstat.c:1952
 #, c-format
 msgid "\tAlerts: %s"
 msgstr "\tAlertas: %s"
 
-#: systemv/lpstat.c:1880
-#: systemv/lpstat.c:2005
 msgid "\tBanner required"
 msgstr "\tSe necesita un rótulo"
 
-#: systemv/lpstat.c:1881
-#: systemv/lpstat.c:2006
 msgid "\tCharset sets:"
 msgstr "\tAjustes del juego de caracteres:"
 
-#: systemv/lpstat.c:1845
-#: systemv/lpstat.c:1970
 msgid "\tConnection: direct"
 msgstr "\tConexión: directa"
 
-#: systemv/lpstat.c:1836
-#: systemv/lpstat.c:1962
 msgid "\tConnection: remote"
 msgstr "\tConexión: remota"
 
-#: systemv/lpstat.c:1800
-#: systemv/lpstat.c:1926
 msgid "\tContent types: any"
 msgstr "\tTipos de contenido: cualesquiera"
 
-#: systemv/lpstat.c:1884
-#: systemv/lpstat.c:2009
 msgid "\tDefault page size:"
 msgstr "\tTamaño de página predeterminado:"
 
-#: systemv/lpstat.c:1883
-#: systemv/lpstat.c:2008
 msgid "\tDefault pitch:"
 msgstr "\tPaso predeterminado:"
 
-#: systemv/lpstat.c:1885
-#: systemv/lpstat.c:2010
 msgid "\tDefault port settings:"
 msgstr "\tAjustes del puerto predeterminados:"
 
-#: systemv/lpstat.c:1806
-#: systemv/lpstat.c:1932
 #, c-format
 msgid "\tDescription: %s"
 msgstr "\tDescripción: %s"
 
-#: systemv/lpstat.c:1799
-#: systemv/lpstat.c:1925
 msgid "\tForm mounted:"
 msgstr "\tFormulario montado:"
 
-#: systemv/lpstat.c:1878
-#: systemv/lpstat.c:2003
 msgid "\tForms allowed:"
 msgstr "\tFormularios permitidos:"
 
-#: systemv/lpstat.c:1840
-#: systemv/lpstat.c:1966
 #, c-format
 msgid "\tInterface: %s.ppd"
 msgstr "\tInterfaz: %s.ppd"
 
-#: systemv/lpstat.c:1849
-#: systemv/lpstat.c:1974
 #, c-format
 msgid "\tInterface: %s/interfaces/%s"
 msgstr "\tInterfaz: %s/interfaces/%s"
 
-#: systemv/lpstat.c:1853
-#: systemv/lpstat.c:1978
 #, c-format
 msgid "\tInterface: %s/ppd/%s.ppd"
 msgstr "\tInterfaz: %s/ppd/%s.ppd"
 
-#: systemv/lpstat.c:1831
-#: systemv/lpstat.c:1957
 #, c-format
 msgid "\tLocation: %s"
 msgstr "\tUbicación: %s"
 
-#: systemv/lpstat.c:1856
-#: systemv/lpstat.c:1981
 msgid "\tOn fault: no alert"
 msgstr "\tEn fallo: no alertar"
 
-#: systemv/lpstat.c:1801
-#: systemv/lpstat.c:1927
 msgid "\tPrinter types: unknown"
 msgstr "\tTipos de impresora: desconocidos"
 
-#: systemv/lpstat.c:1462
 #, c-format
 msgid "\tStatus: %s"
 msgstr "\tEstado: %s"
 
-#: systemv/lpstat.c:1861
-#: systemv/lpstat.c:1875
-#: systemv/lpstat.c:1986
-#: systemv/lpstat.c:2000
 msgid "\tUsers allowed:"
 msgstr "\tUsuarios permitidos:"
 
-#: systemv/lpstat.c:1868
-#: systemv/lpstat.c:1993
 msgid "\tUsers denied:"
 msgstr "\tUsuarios denegados:"
 
-#: berkeley/lpc.c:436
 msgid "\tdaemon present"
 msgstr "\tdemonio presente"
 
-#: berkeley/lpc.c:432
 msgid "\tno entries"
 msgstr "\tno hay entradas"
 
-#: berkeley/lpc.c:404
-#: berkeley/lpc.c:416
 #, c-format
 msgid "\tprinter is on device '%s' speed -1"
 msgstr "\tla impresora está conectada a '%s' velocidad -1"
 
-#: berkeley/lpc.c:429
 msgid "\tprinting is disabled"
 msgstr "\tla impresión está desactivada"
 
-#: berkeley/lpc.c:427
 msgid "\tprinting is enabled"
 msgstr "\tla impresión está activada"
 
-#: systemv/lpstat.c:1484
 #, c-format
 msgid "\tqueued for %s"
 msgstr "\ten cola para %s"
 
-#: berkeley/lpc.c:424
 msgid "\tqueuing is disabled"
 msgstr "\tla cola está desactivada"
 
-#: berkeley/lpc.c:422
 msgid "\tqueuing is enabled"
 msgstr "\tla cola está activada"
 
-#: systemv/lpstat.c:1792
-#: systemv/lpstat.c:1918
 msgid "\treason unknown"
 msgstr "\trazón desconocida"
 
-#: systemv/cupstestppd.c:454
 msgid ""
 "\n"
 "    DETAILED CONFORMANCE TEST RESULTS"
@@ -215,135 +148,103 @@ msgstr ""
 "\n"
 "    RESULTADOS DETALLADOS DE LA PRUEBA DE CONFORMIDAD"
 
-#: systemv/cupstestppd.c:3800
 msgid "                          Ignore specific warnings."
 msgstr "                          Ignorar advertencias (warnings) específicas."
 
-#: systemv/cupstestppd.c:3804
 msgid "                          Issue warnings instead of errors."
-msgstr "                          Emitor advertencias (warnings) en vez de errores."
+msgstr ""
+"                          Emitor advertencias (warnings) en vez de errores."
 
-#: systemv/cupstestppd.c:410
-#: systemv/cupstestppd.c:415
 msgid "                REF: Page 15, section 3.1."
 msgstr "                REF: Página 15, sección 3.1."
 
-#: systemv/cupstestppd.c:405
 msgid "                REF: Page 15, section 3.2."
 msgstr "                REF: Página 15, sección 3.2."
 
-#: systemv/cupstestppd.c:425
 msgid "                REF: Page 19, section 3.3."
 msgstr "                REF: Página 19, sección 3.3."
 
-#: systemv/cupstestppd.c:378
 msgid "                REF: Page 20, section 3.4."
 msgstr "                REF: Página 20, sección 3.4."
 
-#: systemv/cupstestppd.c:430
 msgid "                REF: Page 27, section 3.5."
 msgstr "                REF: Página 27, sección 3.5."
 
-#: systemv/cupstestppd.c:373
 msgid "                REF: Page 42, section 5.2."
 msgstr "                REF: Página 42, sección 5.2."
 
-#: systemv/cupstestppd.c:420
 msgid "                REF: Pages 16-17, section 3.2."
 msgstr "                REF: Páginas 16-17, sección 3.2."
 
-#: systemv/cupstestppd.c:390
 msgid "                REF: Pages 42-45, section 5.2."
 msgstr "                REF: Páginas 42-45, sección 5.2."
 
-#: systemv/cupstestppd.c:384
 msgid "                REF: Pages 45-46, section 5.2."
 msgstr "                REF: Páginas 45-46, sección 5.2."
 
-#: systemv/cupstestppd.c:395
 msgid "                REF: Pages 48-49, section 5.2."
 msgstr "                REF: Páginas 48-49, sección 5.2."
 
-#: systemv/cupstestppd.c:400
 msgid "                REF: Pages 52-54, section 5.2."
 msgstr "                REF: Páginas 52-54, sección 5.2."
 
-#: berkeley/lpq.c:554
 #, c-format
 msgid "        %-39.39s %.0f bytes"
 msgstr "        %-39.39s %.0f bytes"
 
-#: systemv/cupstestppd.c:589
 #, c-format
 msgid "        PASS    Default%s"
 msgstr "        PASA    Default%s"
 
-#: systemv/cupstestppd.c:524
 msgid "        PASS    DefaultImageableArea"
 msgstr "        PASA    DefaultImageableArea"
 
-#: systemv/cupstestppd.c:558
 msgid "        PASS    DefaultPaperDimension"
 msgstr "        PASA    DefaultPaperDimension"
 
-#: systemv/cupstestppd.c:631
 msgid "        PASS    FileVersion"
 msgstr "        PASA    FileVersion"
 
-#: systemv/cupstestppd.c:675
 msgid "        PASS    FormatVersion"
 msgstr "        PASA    FormatVersion"
 
-#: systemv/cupstestppd.c:695
 msgid "        PASS    LanguageEncoding"
 msgstr "        PASA    LanguageEncoding"
 
-#: systemv/cupstestppd.c:715
 msgid "        PASS    LanguageVersion"
 msgstr "        PASA    LanguageVersion"
 
-#: systemv/cupstestppd.c:769
 msgid "        PASS    Manufacturer"
 msgstr "        PASA    Manufacturer"
 
-#: systemv/cupstestppd.c:809
 msgid "        PASS    ModelName"
 msgstr "        PASA    ModelName"
 
-#: systemv/cupstestppd.c:829
 msgid "        PASS    NickName"
 msgstr "        PASA    NickName"
 
-#: systemv/cupstestppd.c:889
 msgid "        PASS    PCFileName"
 msgstr "        PASA    PCFileName"
 
-#: systemv/cupstestppd.c:964
 msgid "        PASS    PSVersion"
 msgstr "        PASA    PSVersion"
 
-#: systemv/cupstestppd.c:869
 msgid "        PASS    PageRegion"
 msgstr "        PASA    PageRegion"
 
-#: systemv/cupstestppd.c:849
 msgid "        PASS    PageSize"
 msgstr "        PASA    PageSize"
 
-#: systemv/cupstestppd.c:924
 msgid "        PASS    Product"
 msgstr "        PASA    Product"
 
-#: systemv/cupstestppd.c:999
 msgid "        PASS    ShortNickName"
 msgstr "        PASA    ShortNickName"
 
-#: systemv/cupstestppd.c:1374
 #, c-format
 msgid "        WARN    %s has no corresponding options."
 msgstr "        ADVERTENCIA    %s tiene opciones que no corresponden."
 
-#: systemv/cupstestppd.c:1486
 #, c-format
 msgid ""
 "        WARN    %s shares a common prefix with %s\n"
@@ -352,45 +253,48 @@ msgstr ""
 "        ADVERTENCIA    %s comparte un prefijo común con %s\n"
 "                REF: Página 15, sección 3.2."
 
-#: systemv/cupstestppd.c:1345
 #, c-format
 msgid ""
-"        WARN    Duplex option keyword %s may not work as expected and should be named Duplex.\n"
+"        WARN    Duplex option keyword %s may not work as expected and should "
+"be named Duplex.\n"
 "                REF: Page 122, section 5.17"
 msgstr ""
-"        ADVERTENCIA    La clave de opción Duplex %s puede que no funcione como se espera y debería llamarse Duplex.\n"
+"        ADVERTENCIA    La clave de opción Duplex %s puede que no funcione "
+"como se espera y debería llamarse Duplex.\n"
 "                REF: Página 122, sección 5.17"
 
-#: systemv/cupstestppd.c:1744
 msgid "        WARN    File contains a mix of CR, LF, and CR LF line endings."
-msgstr "        ADVERTENCIA    El archivo contiene una mezcla de líneas acabadas en CR, LF y CR LF."
+msgstr ""
+"        ADVERTENCIA    El archivo contiene una mezcla de líneas acabadas en "
+"CR, LF y CR LF."
 
-#: systemv/cupstestppd.c:1390
 msgid ""
 "        WARN    LanguageEncoding required by PPD 4.3 spec.\n"
 "                REF: Pages 56-57, section 5.3."
 msgstr ""
-"        ADVERTENCIA    Se necesita LanguageEncoding por especificación de PPD 4.3.\n"
+"        ADVERTENCIA    Se necesita LanguageEncoding por especificación de "
+"PPD 4.3.\n"
 "                REF: Páginas 56-57, sección 5.3."
 
-#: systemv/cupstestppd.c:1726
 #, c-format
 msgid "        WARN    Line %d only contains whitespace."
 msgstr "        ADVERTENCIA    La línea %d solo contiene espacios en blanco."
 
-#: systemv/cupstestppd.c:1398
 msgid ""
 "        WARN    Manufacturer required by PPD 4.3 spec.\n"
 "                REF: Pages 58-59, section 5.3."
 msgstr ""
-"        ADVERTENCIA    Se necesita Manufacturer por especificación de PPD 4.3.\n"
+"        ADVERTENCIA    Se necesita Manufacturer por especificación de PPD "
+"4.3.\n"
 "                REF: Páginas 58-59, sección 5.3."
 
-#: systemv/cupstestppd.c:1749
-msgid "        WARN    Non-Windows PPD files should use lines ending with only LF, not CR LF."
-msgstr "        ADVERTENCIA    Los archivos PPD que no sean de Windows deben tener líneas que acaben sólo en LF, no en CR LF."
+msgid ""
+"        WARN    Non-Windows PPD files should use lines ending with only LF, "
+"not CR LF."
+msgstr ""
+"        ADVERTENCIA    Los archivos PPD que no sean de Windows deben tener "
+"líneas que acaben sólo en LF, no en CR LF."
 
-#: systemv/cupstestppd.c:1382
 #, c-format
 msgid ""
 "        WARN    Obsolete PPD version %.1f.\n"
@@ -399,15 +303,14 @@ msgstr ""
 "        ADVERTENCIA    Versión de PPD %.1f anticuada.\n"
 "                REF: Página 42, sección 5.2."
 
-#: systemv/cupstestppd.c:1413
 msgid ""
 "        WARN    PCFileName longer than 8.3 in violation of PPD spec.\n"
 "                REF: Pages 61-62, section 5.3."
 msgstr ""
-"        ADVERTENCIA    PCFileName es mas largo que 8.3 violando la especificación PPD.\n"
+"        ADVERTENCIA    PCFileName es mas largo que 8.3 violando la "
+"especificación PPD.\n"
 "                REF: Páginas 61-62, sección 5.3."
 
-#: systemv/cupstestppd.c:1421
 msgid ""
 "        WARN    PCFileName should contain a unique filename.\n"
 "                REF: Pages 61-62, section 5.3."
@@ -415,43 +318,39 @@ msgstr ""
 "        ADVERTENCIA    PCFileName debe contener un único nombre de archivo.\n"
 "                REF: Páginas 61-62, sección 5.3."
 
-#: systemv/cupstestppd.c:1456
 msgid ""
 "        WARN    Protocols contains PJL but JCL attributes are not set.\n"
 "                REF: Pages 78-79, section 5.7."
 msgstr ""
-"        ADVERTENCIA    Los protocolos contienen PJL pero no se especifican los atributos JCL.\n"
+"        ADVERTENCIA    Los protocolos contienen PJL pero no se especifican "
+"los atributos JCL.\n"
 "                REF: Páginas 78-79, sección 5.7."
 
-#: systemv/cupstestppd.c:1447
 msgid ""
 "        WARN    Protocols contains both PJL and BCP; expected TBCP.\n"
 "                REF: Pages 78-79, section 5.7."
 msgstr ""
-"        ADVERTENCIA    Los protocolos contienen a ambos, PJL y BCP; se esperaba TBCP.\n"
+"        ADVERTENCIA    Los protocolos contienen a ambos, PJL y BCP; se "
+"esperaba TBCP.\n"
 "                REF: Páginas 78-79, sección 5.7."
 
-#: systemv/cupstestppd.c:1430
 msgid ""
 "        WARN    ShortNickName required by PPD 4.3 spec.\n"
 "                REF: Pages 64-65, section 5.3."
 msgstr ""
-"        ADVERTENCIA    Se necesita ShortNickName por especificación de PPD 4.3.\n"
+"        ADVERTENCIA    Se necesita ShortNickName por especificación de PPD "
+"4.3.\n"
 "                REF: Páginas 64-65, sección 5.3."
 
-#: systemv/cupsaddsmb.c:282
 msgid "       cupsaddsmb [options] -a"
 msgstr "       cupsaddsmb [opciones] -a"
 
-#: systemv/cupstestdsc.c:427
 msgid "       cupstestdsc [options] -"
 msgstr "       cupstestdsc [opciones] -"
 
-#: systemv/cupstestppd.c:3795
 msgid "       program | cupstestppd [options] -"
 msgstr "       programa | cupstestppd [opciones] -"
 
-#: systemv/cupstestppd.c:3727
 #, c-format
 msgid ""
 "      %s  \"%s %s\" conflicts with \"%s %s\"\n"
@@ -460,17 +359,14 @@ msgstr ""
 "      %s  \"%s %s\" está en conflictocon \"%s %s\"\n"
 "                (restricción=\"%s %s %s %s\")."
 
-#: systemv/cupstestppd.c:2248
 #, c-format
 msgid "      %s  %s %s does not exist."
 msgstr "      %s  %s %s no existe."
 
-#: systemv/cupstestppd.c:3884
 #, c-format
 msgid "      %s  %s file \"%s\" has the wrong capitalization."
 msgstr "      %s  archivo %s \"%s\" tiene las mayúsculas equivocadas"
 
-#: systemv/cupstestppd.c:2318
 #, c-format
 msgid ""
 "      %s  Bad %s choice %s.\n"
@@ -479,113 +375,73 @@ msgstr ""
 "      %s  Preferencia %s incorrecta %s.\n"
 "                REF: Página 122, sección 5.17"
 
-#: systemv/cupstestppd.c:3487
-#: systemv/cupstestppd.c:3536
-#: systemv/cupstestppd.c:3575
 #, c-format
 msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s, choice %s."
-msgstr "      %s  Cadena de traducción UTF-8 \"%s\" incorrecta para opción %s, preferencia %s."
+msgstr ""
+"      %s  Cadena de traducción UTF-8 \"%s\" incorrecta para opción %s, "
+"preferencia %s."
 
-#: systemv/cupstestppd.c:3441
 #, c-format
 msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s."
 msgstr "      %s  Cadena de traducción UTF-8 \"%s\" incorrecta para opción %s."
 
-#: systemv/cupstestppd.c:2389
 #, c-format
 msgid "      %s  Bad cupsFilter value \"%s\"."
 msgstr "      %s  Valor cupsFilter \"%s\" incorrecto."
 
-#: systemv/cupstestppd.c:2475
 #, c-format
 msgid "      %s  Bad cupsFilter2 value \"%s\"."
 msgstr "      %s  Valor cupsFilter2 incorrecto \"%s\"."
 
-#: systemv/cupstestppd.c:2964
 #, c-format
 msgid "      %s  Bad cupsICCProfile %s."
 msgstr "      %s  cupsICCProfile %s incorrecto."
 
-#: systemv/cupstestppd.c:2571
 #, c-format
 msgid "      %s  Bad cupsPreFilter value \"%s\"."
 msgstr "      %s  Valor cupsPreFilter \"%s\" incorrecto."
 
-#: systemv/cupstestppd.c:1822
 #, c-format
 msgid "      %s  Bad cupsUIConstraints %s: \"%s\""
 msgstr "      %s  cupsUIConstraints %s: \"%s\" incorrecto"
 
-#: systemv/cupstestppd.c:3391
 #, c-format
 msgid "      %s  Bad language \"%s\"."
 msgstr "      %s  Idioma incorrecto \"%s\"."
 
-#: systemv/cupstestppd.c:2433
-#: systemv/cupstestppd.c:2529
-#: systemv/cupstestppd.c:2615
-#: systemv/cupstestppd.c:2673
-#: systemv/cupstestppd.c:2728
-#: systemv/cupstestppd.c:2783
-#: systemv/cupstestppd.c:2838
-#: systemv/cupstestppd.c:2891
-#: systemv/cupstestppd.c:3013
 #, c-format
 msgid "      %s  Bad permissions on %s file \"%s\"."
 msgstr "      %s  Permisos incorrectos en el archivo %s \"%s\"."
 
-#: systemv/cupstestppd.c:2373
-#: systemv/cupstestppd.c:2459
-#: systemv/cupstestppd.c:2555
-#: systemv/cupstestppd.c:2642
-#: systemv/cupstestppd.c:2697
-#: systemv/cupstestppd.c:2752
-#: systemv/cupstestppd.c:2807
-#: systemv/cupstestppd.c:2862
 #, c-format
 msgid "      %s  Bad spelling of %s - should be %s."
 msgstr "      %s  %s mal escrito - debería ser %s."
 
-#: systemv/cupstestppd.c:2907
 #, c-format
 msgid "      %s  Cannot provide both APScanAppPath and APScanAppBundleID."
 msgstr "      %s  No puede proporcionar APScanAppPath y APScanAppBundleID."
 
-#: systemv/cupstestppd.c:2205
 #, c-format
 msgid "      %s  Default choices conflicting."
 msgstr "      %s  Las preferencias predeterminadas están en conflicto."
 
-#: systemv/cupstestppd.c:1803
 #, c-format
 msgid "      %s  Empty cupsUIConstraints %s"
 msgstr "      %s  cupsUIConstraints %s vacío."
 
-#: systemv/cupstestppd.c:3519
-#: systemv/cupstestppd.c:3559
 #, c-format
 msgid "      %s  Missing \"%s\" translation string for option %s, choice %s."
-msgstr "      %s  Falta cadena de traducción \"%s\" para opción %s, preferencia %s."
+msgstr ""
+"      %s  Falta cadena de traducción \"%s\" para opción %s, preferencia %s."
 
-#: systemv/cupstestppd.c:3427
 #, c-format
 msgid "      %s  Missing \"%s\" translation string for option %s."
 msgstr "      %s  Falta cadena de traducción \"%s\" para opción %s."
 
-#: systemv/cupstestppd.c:2418
-#: systemv/cupstestppd.c:2514
-#: systemv/cupstestppd.c:2600
-#: systemv/cupstestppd.c:2658
-#: systemv/cupstestppd.c:2713
-#: systemv/cupstestppd.c:2768
-#: systemv/cupstestppd.c:2823
-#: systemv/cupstestppd.c:2875
-#: systemv/cupstestppd.c:2998
 #, c-format
 msgid "      %s  Missing %s file \"%s\"."
 msgstr "      %s  Falta archivo %s \"%s\"."
 
-#: systemv/cupstestppd.c:3121
 #, c-format
 msgid ""
 "      %s  Missing REQUIRED PageRegion option.\n"
@@ -594,7 +450,6 @@ msgstr ""
 "      %s  Falta la opción NECESARIA PageRegion.\n"
 "                REF: Página 100, sección 5.14."
 
-#: systemv/cupstestppd.c:3106
 #, c-format
 msgid ""
 "      %s  Missing REQUIRED PageSize option.\n"
@@ -603,39 +458,31 @@ msgstr ""
 "      %s  Falta la opción NECESARIA PageSize.\n"
 "                REF: Página 99, sección 5.14."
 
-#: systemv/cupstestppd.c:2013
-#: systemv/cupstestppd.c:2054
 #, c-format
 msgid "      %s  Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\"."
-msgstr "      %s  Falta la preferencia *%s %s en UIConstraint \"*%s %s *%s %s\"."
+msgstr ""
+"      %s  Falta la preferencia *%s %s en UIConstraint \"*%s %s *%s %s\"."
 
-#: systemv/cupstestppd.c:1908
 #, c-format
 msgid "      %s  Missing choice *%s %s in cupsUIConstraints %s: \"%s\""
 msgstr "      %s  Falta la preferencia *%s %s en cupsUIConstraints %s: \"%s\""
 
-#: systemv/cupstestppd.c:1840
 #, c-format
 msgid "      %s  Missing cupsUIResolver %s"
 msgstr "      %s  Falta cupsUIResolver %s"
 
-#: systemv/cupstestppd.c:1999
-#: systemv/cupstestppd.c:2040
 #, c-format
 msgid "      %s  Missing option %s in UIConstraints \"*%s %s *%s %s\"."
 msgstr "      %s  Falta la opción %s en UIConstraints \"*%s %s *%s %s\"."
 
-#: systemv/cupstestppd.c:1892
 #, c-format
 msgid "      %s  Missing option %s in cupsUIConstraints %s: \"%s\""
 msgstr "      %s  Falta la opción %s en cupsUIConstraints %s: \"%s\""
 
-#: systemv/cupstestppd.c:3613
 #, c-format
 msgid "      %s  No base translation \"%s\" is included in file."
 msgstr "      %s  No hay traducción base \"%s\" incluida en el archivo."
 
-#: systemv/cupstestppd.c:2294
 #, c-format
 msgid ""
 "      %s  REQUIRED %s does not define choice None.\n"
@@ -644,43 +491,36 @@ msgstr ""
 "      %s  NECESARIA %s no define la opción None.\n"
 "                REF: Página 122, sección 5.17"
 
-#: systemv/cupstestppd.c:3180
-#: systemv/cupstestppd.c:3194
 #, c-format
 msgid "      %s  Size \"%s\" defined for %s but not for %s."
 msgstr "      %s  Tamaño \"%s\" definido para %s pero no para %s."
 
-#: systemv/cupstestppd.c:3160
 #, c-format
 msgid "      %s  Size \"%s\" has unexpected dimensions (%gx%g)."
 msgstr "      %s  El tamaño \"%s\" tiene dimensiones inesperadas (%gx%g)."
 
-#: systemv/cupstestppd.c:3332
 #, c-format
 msgid "      %s  Size \"%s\" should be \"%s\"."
 msgstr "      %s  Tamaño \"%s\" debería ser \"%s\"."
 
-#: systemv/cupstestppd.c:3292
 #, c-format
 msgid "      %s  Size \"%s\" should be the Adobe standard name \"%s\"."
-msgstr "      %s  Tamaño \"%s\" debería ser el nombre estandar de Adobe \"%s\"."
+msgstr ""
+"      %s  Tamaño \"%s\" debería ser el nombre estandar de Adobe \"%s\"."
 
-#: systemv/cupstestppd.c:3041
 #, c-format
 msgid "      %s  cupsICCProfile %s hash value collides with %s."
 msgstr "      %s  valor hash de cupsICCProfile %s colisiona con %s."
 
-#: systemv/cupstestppd.c:1963
 #, c-format
 msgid "      %s  cupsUIResolver %s causes a loop."
 msgstr "      %s  cupsUIResolver %s genera un bucle."
 
-#: systemv/cupstestppd.c:1945
 #, c-format
-msgid "      %s  cupsUIResolver %s does not list at least two different options."
+msgid ""
+"      %s  cupsUIResolver %s does not list at least two different options."
 msgstr "      %s  cupsUIResolver %s no lista al menos dos opciones diferentes."
 
-#: systemv/cupstestppd.c:1168
 #, c-format
 msgid ""
 "      **FAIL**  %s must be 1284DeviceID\n"
@@ -689,7 +529,6 @@ msgstr ""
 "      **FALLO**  %s debe ser 1284DeviceID\n"
 "                REF: Página 72, sección 5.5"
 
-#: systemv/cupstestppd.c:580
 #, c-format
 msgid ""
 "      **FAIL**  Bad Default%s %s\n"
@@ -698,7 +537,6 @@ msgstr ""
 "      **FALLO**  Default%s %s incorrecto\n"
 "                REF: Página 40, sección 4.5."
 
-#: systemv/cupstestppd.c:514
 #, c-format
 msgid ""
 "      **FAIL**  Bad DefaultImageableArea %s\n"
@@ -707,7 +545,6 @@ msgstr ""
 "      **FALLO**  DefaultImageableArea %s incorrecto\n"
 "                REF: Página 102, sección 5.15."
 
-#: systemv/cupstestppd.c:550
 #, c-format
 msgid ""
 "      **FAIL**  Bad DefaultPaperDimension %s\n"
@@ -716,7 +553,6 @@ msgstr ""
 "      **FALLO**  DefaultPaperDimension %s incorrecto\n"
 "                REF: Página 103, sección 5.15."
 
-#: systemv/cupstestppd.c:623
 #, c-format
 msgid ""
 "      **FAIL**  Bad FileVersion \"%s\"\n"
@@ -725,7 +561,6 @@ msgstr ""
 "      **FALLO**  FileVersion \"%s\" incorrecto\n"
 "                REF: Página 56, sección 5.3."
 
-#: systemv/cupstestppd.c:667
 #, c-format
 msgid ""
 "      **FAIL**  Bad FormatVersion \"%s\"\n"
@@ -734,7 +569,6 @@ msgstr ""
 "      **FALLO**  FormatVersion \"%s\" incorrecto\n"
 "                REF: Página 56, sección 5.3."
 
-#: systemv/cupstestppd.c:1025
 msgid ""
 "      **FAIL**  Bad JobPatchFile attribute in file\n"
 "                REF: Page 24, section 3.4."
@@ -742,18 +576,16 @@ msgstr ""
 "      **FALLO**  Atributo JobPatchFile en archivo, incorrecto\n"
 "                REF: Página 24, sección 3.4."
 
-#: systemv/cupstestppd.c:1213
 #, c-format
 msgid "      **FAIL**  Bad LanguageEncoding %s - must be ISOLatin1."
-msgstr "      **FALLO**  LanguageEncoding %s incorrecto: debería ser ISOLatin1."
+msgstr ""
+"      **FALLO**  LanguageEncoding %s incorrecto: debería ser ISOLatin1."
 
-#: systemv/cupstestppd.c:1227
 #, c-format
 msgid "      **FAIL**  Bad LanguageVersion %s - must be English."
-msgstr "      **FALLO**  LanguageVersion %s incorrecto: debería ser English (Inglés)."
+msgstr ""
+"      **FALLO**  LanguageVersion %s incorrecto: debería ser English (Inglés)."
 
-#: systemv/cupstestppd.c:743
-#: systemv/cupstestppd.c:760
 #, c-format
 msgid ""
 "      **FAIL**  Bad Manufacturer (should be \"%s\")\n"
@@ -762,7 +594,6 @@ msgstr ""
 "      **FALLO**  Fabricante incorrecto (debería ser \"%s\")\n"
 "                REF: Página 211, tabla D.1."
 
-#: systemv/cupstestppd.c:800
 #, c-format
 msgid ""
 "      **FAIL**  Bad ModelName - \"%c\" not allowed in string.\n"
@@ -771,7 +602,6 @@ msgstr ""
 "      **FALLO**  ModelName incorrecto - \"%c\" no permitido en la cadena.\n"
 "                REF: Páginas 59-60, sección 5.3."
 
-#: systemv/cupstestppd.c:956
 msgid ""
 "      **FAIL**  Bad PSVersion - not \"(string) int\".\n"
 "                REF: Pages 62-64, section 5.3."
@@ -779,7 +609,6 @@ msgstr ""
 "      **FALLO**  PSVersion incorrecto - no es \"(string) int\".\n"
 "                REF: Páginas 62-64, sección 5.3."
 
-#: systemv/cupstestppd.c:917
 msgid ""
 "      **FAIL**  Bad Product - not \"(string)\".\n"
 "                REF: Page 62, section 5.3."
@@ -787,7 +616,6 @@ msgstr ""
 "      **FALLO**  Product incorrecto - no es \"(string)\".\n"
 "                REF: Página 62, sección 5.3."
 
-#: systemv/cupstestppd.c:991
 msgid ""
 "      **FAIL**  Bad ShortNickName - longer than 31 chars.\n"
 "                REF: Pages 64-65, section 5.3."
@@ -795,7 +623,6 @@ msgstr ""
 "      **FALLO**  ShortNickName incorrecto - mayor de 31 caracteres.\n"
 "                REF: Páginas 64-65, sección 5.3."
 
-#: systemv/cupstestppd.c:1149
 #, c-format
 msgid ""
 "      **FAIL**  Bad option %s choice %s\n"
@@ -804,43 +631,51 @@ msgstr ""
 "      **FALLO**  Opción %s, preferencia %s incorrecta\n"
 "                REF: Página 84, sección 5.9"
 
-#: systemv/cupstestppd.c:3754
-#: systemv/cupstestppd.c:3776
 #, c-format
 msgid "      **FAIL**  Default option code cannot be interpreted: %s"
-msgstr "      **FALLO**  El código de opción predeterminado no puede ser interpretado: %s"
+msgstr ""
+"      **FALLO**  El código de opción predeterminado no puede ser "
+"interpretado: %s"
 
-#: systemv/cupstestppd.c:1286
 #, c-format
-msgid "      **FAIL**  Default translation string for option %s choice %s contains 8-bit characters."
-msgstr "      **FALLO**  Cadena de traducción predeterminada para opción %s preferencia %s contiene caracteres de 8-bits."
+msgid ""
+"      **FAIL**  Default translation string for option %s choice %s contains "
+"8-bit characters."
+msgstr ""
+"      **FALLO**  Cadena de traducción predeterminada para opción %s "
+"preferencia %s contiene caracteres de 8-bits."
 
-#: systemv/cupstestppd.c:1259
 #, c-format
-msgid "      **FAIL**  Default translation string for option %s contains 8-bit characters."
-msgstr "      **FALLO**  Cadena de traducción predeterminada para opción %s contiene caracteres de 8-bits."
+msgid ""
+"      **FAIL**  Default translation string for option %s contains 8-bit "
+"characters."
+msgstr ""
+"      **FALLO**  Cadena de traducción predeterminada para opción %s contiene "
+"caracteres de 8-bits."
 
-#: systemv/cupstestppd.c:2101
 #, c-format
 msgid "      **FAIL**  Group names %s and %s differ only by case."
-msgstr "      **FALLO**  Nombres de grupo %s y %s se diferencian sólo en la capitalización."
+msgstr ""
+"      **FALLO**  Nombres de grupo %s y %s se diferencian sólo en la "
+"capitalización."
 
-#: systemv/cupstestppd.c:2146
 #, c-format
 msgid "      **FAIL**  Multiple occurrences of option %s choice name %s."
-msgstr "      **FALLO**  Múltiples apariciones de opción %s nombre de preferencia %s."
+msgstr ""
+"      **FALLO**  Múltiples apariciones de opción %s nombre de preferencia %s."
 
-#: systemv/cupstestppd.c:2163
 #, c-format
 msgid "      **FAIL**  Option %s choice names %s and %s differ only by case."
-msgstr "      **FALLO**  Opción %s nombres de preferencia %s y %s se diferencian sólo en la capitalización."
+msgstr ""
+"      **FALLO**  Opción %s nombres de preferencia %s y %s se diferencian "
+"sólo en la capitalización."
 
-#: systemv/cupstestppd.c:2123
 #, c-format
 msgid "      **FAIL**  Option names %s and %s differ only by case."
-msgstr "      **FALLO**  Nombres de opción %s y %s se diferencian sólo en la capitalización."
+msgstr ""
+"      **FALLO**  Nombres de opción %s y %s se diferencian sólo en la "
+"capitalización."
 
-#: systemv/cupstestppd.c:600
 #, c-format
 msgid ""
 "      **FAIL**  REQUIRED Default%s\n"
@@ -849,7 +684,6 @@ msgstr ""
 "      **FALLO**  SE NECESITA Default%s\n"
 "                REF: Página 40, sección 4.5."
 
-#: systemv/cupstestppd.c:499
 msgid ""
 "      **FAIL**  REQUIRED DefaultImageableArea\n"
 "                REF: Page 102, section 5.15."
@@ -857,7 +691,6 @@ msgstr ""
 "      **FALLO**  SE NECESITA DefaultImageableArea\n"
 "                REF: Página 102, sección 5.15."
 
-#: systemv/cupstestppd.c:535
 msgid ""
 "      **FAIL**  REQUIRED DefaultPaperDimension\n"
 "                REF: Page 103, section 5.15."
@@ -865,7 +698,6 @@ msgstr ""
 "      **FALLO**  SE NECESITA DefaultPaperDimension\n"
 "                REF: Página 103, sección 5.15."
 
-#: systemv/cupstestppd.c:641
 msgid ""
 "      **FAIL**  REQUIRED FileVersion\n"
 "                REF: Page 56, section 5.3."
@@ -873,7 +705,6 @@ msgstr ""
 "      **FALLO**  SE NECESITA FileVersion\n"
 "                REF: Página 56, sección 5.3."
 
-#: systemv/cupstestppd.c:685
 msgid ""
 "      **FAIL**  REQUIRED FormatVersion\n"
 "                REF: Page 56, section 5.3."
@@ -881,7 +712,6 @@ msgstr ""
 "      **FALLO**  SE NECESITA FormatVersion\n"
 "                REF: Página 56, sección 5.3."
 
-#: systemv/cupstestppd.c:1076
 #, c-format
 msgid ""
 "      **FAIL**  REQUIRED ImageableArea for PageSize %s\n"
@@ -892,7 +722,6 @@ msgstr ""
 "                REF: Página 41, sección 5.\n"
 "                REF: Página 102, sección 5.15."
 
-#: systemv/cupstestppd.c:705
 msgid ""
 "      **FAIL**  REQUIRED LanguageEncoding\n"
 "                REF: Pages 56-57, section 5.3."
@@ -900,7 +729,6 @@ msgstr ""
 "      **FALLO**  SE NECESITA LanguageEncoding\n"
 "                REF: Páginas 56-57, sección 5.3."
 
-#: systemv/cupstestppd.c:725
 msgid ""
 "      **FAIL**  REQUIRED LanguageVersion\n"
 "                REF: Pages 57-58, section 5.3."
@@ -908,7 +736,6 @@ msgstr ""
 "      **FALLO**  SE NECESITA LanguageVersion\n"
 "                REF: Páginas 57-58, sección 5.3."
 
-#: systemv/cupstestppd.c:779
 msgid ""
 "      **FAIL**  REQUIRED Manufacturer\n"
 "                REF: Pages 58-59, section 5.3."
@@ -916,7 +743,6 @@ msgstr ""
 "      **FALLO**  SE NECESITA Manufacturer\n"
 "                REF: Páginas 58-59, sección 5.3."
 
-#: systemv/cupstestppd.c:819
 msgid ""
 "      **FAIL**  REQUIRED ModelName\n"
 "                REF: Pages 59-60, section 5.3."
@@ -924,7 +750,6 @@ msgstr ""
 "      **FALLO**  SE NECESITA ModelName\n"
 "                REF: Páginas 59-60, sección 5.3."
 
-#: systemv/cupstestppd.c:839
 msgid ""
 "      **FAIL**  REQUIRED NickName\n"
 "                REF: Page 60, section 5.3."
@@ -932,7 +757,6 @@ msgstr ""
 "      **FALLO**  SE NECESITA NickName\n"
 "                REF: Página 60, sección 5.3."
 
-#: systemv/cupstestppd.c:899
 msgid ""
 "      **FAIL**  REQUIRED PCFileName\n"
 "                REF: Pages 61-62, section 5.3."
@@ -940,7 +764,6 @@ msgstr ""
 "      **FALLO**  SE NECESITA PCFileName\n"
 "                REF: Páginas 61-62, sección 5.3."
 
-#: systemv/cupstestppd.c:974
 msgid ""
 "      **FAIL**  REQUIRED PSVersion\n"
 "                REF: Pages 62-64, section 5.3."
@@ -948,7 +771,6 @@ msgstr ""
 "      **FALLO**  SE NECESITA PSVersion\n"
 "                REF: Páginas 62-64, sección 5.3."
 
-#: systemv/cupstestppd.c:879
 msgid ""
 "      **FAIL**  REQUIRED PageRegion\n"
 "                REF: Page 100, section 5.14."
@@ -956,7 +778,6 @@ msgstr ""
 "      **FALLO**  SE NECESITA PageRegion\n"
 "                REF: Página 100, sección 5.14."
 
-#: systemv/cupstestppd.c:1045
 msgid ""
 "      **FAIL**  REQUIRED PageSize\n"
 "                REF: Page 41, section 5.\n"
@@ -966,7 +787,6 @@ msgstr ""
 "                REF: Página 41, sección 5.\n"
 "                REF: Página 99, sección 5.14."
 
-#: systemv/cupstestppd.c:859
 msgid ""
 "      **FAIL**  REQUIRED PageSize\n"
 "                REF: Pages 99-100, section 5.14."
@@ -974,7 +794,6 @@ msgstr ""
 "      **FALLO**  SE NECESITA PageSize\n"
 "                REF: Páginas 99-100, sección 5.14."
 
-#: systemv/cupstestppd.c:1098
 #, c-format
 msgid ""
 "      **FAIL**  REQUIRED PaperDimension for PageSize %s\n"
@@ -985,7 +804,6 @@ msgstr ""
 "                REF: Página 41, sección 5.\n"
 "                REF: Página 103, sección 5.15."
 
-#: systemv/cupstestppd.c:934
 msgid ""
 "      **FAIL**  REQUIRED Product\n"
 "                REF: Page 62, section 5.3."
@@ -993,7 +811,6 @@ msgstr ""
 "      **FALLO**  SE NECESITA Product\n"
 "                REF: Página 62, sección 5.3."
 
-#: systemv/cupstestppd.c:1009
 msgid ""
 "      **FAIL**  REQUIRED ShortNickName\n"
 "                REF: Page 64-65, section 5.3."
@@ -1001,24 +818,18 @@ msgstr ""
 "      **FALLO**  SE NECESITA ShortNickName\n"
 "                REF: Página 64-65, sección 5.3."
 
-#: systemv/cupstestppd.c:334
-#: systemv/cupstestppd.c:353
-#: systemv/cupstestppd.c:365
 #, c-format
 msgid "      **FAIL**  Unable to open PPD file - %s on line %d."
-msgstr "      **FALLO**  No se ha podido abrir el archivo PPD - %s en la línea %d."
+msgstr ""
+"      **FALLO**  No se ha podido abrir el archivo PPD - %s en la línea %d."
 
-#: systemv/cupstestppd.c:1498
 #, c-format
 msgid "    %d ERRORS FOUND"
 msgstr "    %d ERRORES ENCONTRADOS"
 
-#: systemv/cupstestdsc.c:431
 msgid "    -h       Show program usage"
 msgstr "    -h       Mostrar el uso del programa"
 
-#: systemv/cupstestdsc.c:234
-#: systemv/cupstestdsc.c:276
 #, c-format
 msgid ""
 "    Bad %%%%BoundingBox: on line %d.\n"
@@ -1027,7 +838,6 @@ msgstr ""
 "    %%%%BoundingBox: incorrecto en línea %d.\n"
 "        REF: Página 39, %%%%BoundingBox:"
 
-#: systemv/cupstestdsc.c:305
 #, c-format
 msgid ""
 "    Bad %%%%Page: on line %d.\n"
@@ -1036,8 +846,6 @@ msgstr ""
 "    %%%%Page: incorrecto en línea %d.\n"
 "        REF: Página 53, %%%%Page:"
 
-#: systemv/cupstestdsc.c:218
-#: systemv/cupstestdsc.c:258
 #, c-format
 msgid ""
 "    Bad %%%%Pages: on line %d.\n"
@@ -1046,7 +854,6 @@ msgstr ""
 "    %%%%Pages: incorrecto en línea %d.\n"
 "        REF: Página 43, %%%%Pages:"
 
-#: systemv/cupstestdsc.c:176
 #, c-format
 msgid ""
 "    Line %d is longer than 255 characters (%d).\n"
@@ -1055,7 +862,6 @@ msgstr ""
 "    La línea %d es más larga de 255 caracteres (%d).\n"
 "        REF: Página 25, Longitud de Línea"
 
-#: systemv/cupstestdsc.c:192
 msgid ""
 "    Missing %!PS-Adobe-3.0 on first line.\n"
 "        REF: Page 17, 3.1 Conforming Documents"
@@ -1063,12 +869,11 @@ msgstr ""
 "    Falta %!PS-Adobe-3.0 en la primera línea.\n"
 "        REF: Página 17, 3.1 Conformidad de documentos"
 
-#: systemv/cupstestdsc.c:362
 #, c-format
 msgid "    Missing %%EndComments comment.        REF: Page 41, %%EndComments"
-msgstr "    Falta comentario %%EndComments.        REF: Página 41, %%EndComments"
+msgstr ""
+"    Falta comentario %%EndComments.        REF: Página 41, %%EndComments"
 
-#: systemv/cupstestdsc.c:342
 #, c-format
 msgid ""
 "    Missing or bad %%BoundingBox: comment.\n"
@@ -1077,7 +882,6 @@ msgstr ""
 "    Falta comentario %%BoundingBox: o incorrecto.\n"
 "        REF: Página 39, %%BoundingBox:"
 
-#: systemv/cupstestdsc.c:372
 #, c-format
 msgid ""
 "    Missing or bad %%Page: comments.\n"
@@ -1086,7 +890,6 @@ msgstr ""
 "    Falta comentario %%Page: o incorrecto.\n"
 "        REF: Página 53, %%Page:"
 
-#: systemv/cupstestdsc.c:352
 #, c-format
 msgid ""
 "    Missing or bad %%Pages: comment.\n"
@@ -1095,2177 +898,1540 @@ msgstr ""
 "    Falta comentario %%Pages: o incorrecto.\n"
 "        REF: Página 43, %%Pages:"
 
-#: systemv/cupstestppd.c:1500
 msgid "    NO ERRORS FOUND"
 msgstr "    NO SE HAN ENCONTRADO ERRORES"
 
-#: systemv/cupstestdsc.c:395
 #, c-format
 msgid "    Saw %d lines that exceeded 255 characters."
 msgstr "    Se han visto %d líneas que exceden de 255 caracteres."
 
-#: systemv/cupstestdsc.c:390
 #, c-format
 msgid "    Too many %%BeginDocument comments."
 msgstr "    Demasiados comentarios %%BeginDocument."
 
-#: systemv/cupstestdsc.c:382
 #, c-format
 msgid "    Too many %%EndDocument comments."
 msgstr "    Demasiados comentarios %%EndDocument."
 
-#: systemv/cupstestdsc.c:402
 msgid "    Warning: file contains binary data."
 msgstr "    Advertencia: el archivo contiene datos binarios."
 
-#: systemv/cupstestdsc.c:410
 #, c-format
 msgid "    Warning: no %%EndComments comment in file."
 msgstr "    Advertencia: no hay comentario %%EndComments en el archivo."
 
-#: systemv/cupstestdsc.c:406
 #, c-format
 msgid "    Warning: obsolete DSC version %.1f in file."
 msgstr "    Advertencia: versión DSC %.1f obsoleta en el archivo."
 
-#: systemv/cupsctl.c:210
 msgid "  --[no-]debug-logging    Turn debug logging on/off."
 msgstr "  --[no-]debug-logging    Activar/desactivar registro de depuración."
 
-#: systemv/cupsctl.c:212
 msgid "  --[no-]remote-admin     Turn remote administration on/off."
 msgstr "  --[no-]remote-admin     Activar/desactivar administración remota."
 
-#: systemv/cupsctl.c:214
 msgid "  --[no-]remote-any       Allow/prevent access from the Internet."
 msgstr "  --[no-]remote-any       Permitir/evitar acceso desde Internet."
 
-#: systemv/cupsctl.c:216
 msgid "  --[no-]share-printers   Turn printer sharing on/off."
-msgstr "  --[no-]share-printers   Activar/desactivar compartición de impresoras."
+msgstr ""
+"  --[no-]share-printers   Activar/desactivar compartición de impresoras."
 
-#: systemv/cupsctl.c:218
 msgid "  --[no-]user-cancel-any  Allow/prevent users to cancel any job."
-msgstr "  --[no-]user-cancel-any  Permitir/evitar a usuarios que cancelen cualquier trabajo."
+msgstr ""
+"  --[no-]user-cancel-any  Permitir/evitar a usuarios que cancelen cualquier "
+"trabajo."
 
-#: ppdc/ppdc.cxx:455
 msgid "  --cr                    End lines with CR (Mac OS 9)."
 msgstr "  --cr                    Finalizar líneas con CR (Mac OS 9)."
 
-#: ppdc/ppdc.cxx:457
 msgid "  --crlf                  End lines with CR + LF (Windows)."
 msgstr "  --crlf                  Finalizar líneas con CR + LF (Windows)."
 
-#: ppdc/ppdc.cxx:459
 msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
 msgstr "  --lf                    Finalizar líneas con LF (UNIX/Linux/OS X)."
 
-#: test/ipptool.c:4404
 msgid "  -4                      Connect using IPv4."
 msgstr "  -4                      Conectar usando IPv4."
 
-#: test/ipptool.c:4405
 msgid "  -6                      Connect using IPv6."
 msgstr "  -6                      Conectar usando IPv6."
 
-#: test/ipptool.c:4406
 msgid "  -C                      Send requests using chunking (default)."
-msgstr "  -C                      Enviar peticiones usando fragmentación (predeterminado)."
+msgstr ""
+"  -C                      Enviar peticiones usando fragmentación "
+"(predeterminado)."
 
-#: scheduler/cupsfilter.c:1431
 msgid "  -D                      Remove the input file when finished."
 msgstr "  -D                      Eliminar el archivo de entrada al terminar."
 
-#: ppdc/ppdc.cxx:438
-#: ppdc/ppdhtml.cxx:175
-#: ppdc/ppdpo.cxx:255
 msgid "  -D name=value           Set named variable to value."
 msgstr "  -D nombre=valor           Establece la variable nombre al valor."
 
-#: systemv/cupsaddsmb.c:285
-#: systemv/cupsctl.c:205
 msgid "  -E                      Encrypt the connection."
 msgstr "  -E                      Cifra la conexión."
 
-#: test/ipptool.c:4408
 msgid "  -E                      Test with HTTP Upgrade to TLS."
 msgstr "  -E                      Prueba con actualización HTTP a TLS."
 
-#: scheduler/main.c:2021
-msgid "  -F                      Run in the foreground but detach from console."
-msgstr "  -F                      Ejecuta en primer plano pero separado de la consola."
+msgid ""
+"  -F                      Run in the foreground but detach from console."
+msgstr ""
+"  -F                      Ejecuta en primer plano pero separado de la "
+"consola."
 
-#: systemv/cupsaddsmb.c:286
 msgid "  -H samba-server         Use the named SAMBA server."
 msgstr "  -H servidor-samba         Usa el servidor SAMBA nombrado."
 
-#: test/ipptool.c:4410
 msgid "  -I                      Ignore errors."
 msgstr "  -I                      Ignora errores."
 
-#: ppdc/ppdc.cxx:440
-#: ppdc/ppdhtml.cxx:177
-#: ppdc/ppdi.cxx:131
-#: ppdc/ppdpo.cxx:257
 msgid "  -I include-dir          Add include directory to search path."
-msgstr "  -I include-dir          Añade directorio include a la ruta de búsqueda."
+msgstr ""
+"  -I include-dir          Añade directorio include a la ruta de búsqueda."
 
-#: systemv/cupstestppd.c:3799
 msgid "  -I {filename,filters,none,profiles}"
 msgstr "  -I {filename,filters,none,profiles}"
 
-#: test/ipptool.c:4411
 msgid "  -L                      Send requests using content-length."
 msgstr "  -L                      Envía peticiones usando content-length."
 
-#: scheduler/cupsfilter.c:1433
 msgid "  -P filename.ppd         Set PPD file."
 msgstr "  -P nombre_archivo.ppd         Establece archivo PPD."
 
-#: systemv/cupstestppd.c:3801
 msgid "  -R root-directory       Set alternate root."
 msgstr "  -R directorio-raíz       Establece directorio raíz alternativo."
 
-#: test/ipptool.c:4413
 msgid "  -S                      Test with SSL encryption."
 msgstr "  -S                      Prueba con cifrado SSL."
 
-#: test/ipptool.c:4415
 msgid "  -T seconds              Set the receive/send timeout in seconds."
-msgstr "  -T segundos             Establece el tiempo de espera de recepción/envío en segundos."
+msgstr ""
+"  -T segundos             Establece el tiempo de espera de recepción/envío "
+"en segundos."
 
-#: scheduler/cupsfilter.c:1434
-#: systemv/cupsaddsmb.c:288
-#: systemv/cupsctl.c:206
 msgid "  -U username             Specify username."
 msgstr "  -U nombre_usuario             Especifica el nombre de usuario."
 
-#: test/ipptool.c:4417
 msgid "  -V version              Set default IPP version."
 msgstr "  -V versión              Establece la versión IPP predeterminada."
 
-#: systemv/cupstestppd.c:3802
-msgid "  -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,translations}"
-msgstr "  -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,translations}"
+msgid ""
+"  -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,"
+"translations}"
+msgstr ""
+"  -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,"
+"translations}"
 
-#: test/ipptool.c:4419
 msgid "  -X                      Produce XML plist instead of plain text."
-msgstr "  -X                      Produce XML plist en vez de texto sin formato."
+msgstr ""
+"  -X                      Produce XML plist en vez de texto sin formato."
 
-#: systemv/cupsaddsmb.c:289
 msgid "  -a                      Export all printers."
 msgstr "  -a                      Exporta todas las impresoras."
 
-#: ppdc/ppdc.cxx:442
 msgid "  -c catalog.po           Load the specified message catalog."
 msgstr "  -c catálogo.po           Carga el catálogo de mensajes especificado."
 
-#: scheduler/cupsfilter.c:1435
-#: scheduler/main.c:2019
 msgid "  -c cupsd.conf           Set cupsd.conf file to use."
 msgstr "  -c cupsd.conf           Establece el archivo cupsd.conf a usar."
 
-#: test/ipptool.c:4421
 msgid "  -d name=value           Set named variable to value."
 msgstr "  -d nombre=valor           Establece la variable al valor."
 
-#: ppdc/ppdc.cxx:444
 msgid "  -d output-dir           Specify the output directory."
 msgstr "  -d dir-salida           Especifica el directorio de salida."
 
-#: scheduler/cupsfilter.c:1437
 msgid "  -d printer              Use the named printer."
 msgstr "  -d impresora              Usa la impresora especificada."
 
-#: scheduler/cupsfilter.c:1439
 msgid "  -e                      Use every filter from the PPD file."
 msgstr "  -e                      Usa cada filtro desde el archivo PPD."
 
-#: scheduler/main.c:2020
 msgid "  -f                      Run in the foreground."
 msgstr "  -f                      Ejecuta en primer plano."
 
-#: test/ipptool.c:4423
 msgid "  -f filename             Set default request filename."
-msgstr "  -f nombre_archivo             Establece nombre de archivo predeterminado."
+msgstr ""
+"  -f nombre_archivo             Establece nombre de archivo predeterminado."
 
-#: scheduler/main.c:2023
 msgid "  -h                      Show this usage message."
 msgstr "  -h                      Muestra este mensaje de uso."
 
-#: systemv/cupsaddsmb.c:290
-#: systemv/cupsctl.c:207
 msgid "  -h server[:port]        Specify server address."
 msgstr "  -h servidor[:puerto]        Especifica la dirección del servidor."
 
-#: scheduler/cupsfilter.c:1441
 msgid "  -i mime/type            Set input MIME type (otherwise auto-typed)."
-msgstr "  -i tipo/mime            Establece el tipo MIME de entrada (si no, auto-typed)."
+msgstr ""
+"  -i tipo/mime            Establece el tipo MIME de entrada (si no, auto-"
+"typed)."
 
-#: test/ipptool.c:4425
-msgid "  -i seconds              Repeat the last file with the given time interval."
-msgstr "  -i segundos              Repite el último archivo con el intervalo de tiempo dado."
+msgid ""
+"  -i seconds              Repeat the last file with the given time interval."
+msgstr ""
+"  -i segundos              Repite el último archivo con el intervalo de "
+"tiempo dado."
 
-#: scheduler/cupsfilter.c:1443
-msgid "  -j job-id[,N]           Filter file N from the specified job (default is file 1)."
-msgstr "  -j id-trabajo[,N]           Filtra el archivo N desde el trabajo especificado (predeterminado archivo 1)."
+msgid ""
+"  -j job-id[,N]           Filter file N from the specified job (default is "
+"file 1)."
+msgstr ""
+"  -j id-trabajo[,N]           Filtra el archivo N desde el trabajo "
+"especificado (predeterminado archivo 1)."
 
-#: scheduler/main.c:2024
 msgid "  -l                      Run cupsd from launchd(8)."
 msgstr "  -l                      Ejecuta cupsd desde launchd(8)."
 
-#: ppdc/ppdc.cxx:446
 msgid "  -l lang[,lang,...]      Specify the output language(s) (locale)."
-msgstr "  -l idioma[,idioma,...]      Especifica los idiomas de salida (código regional)."
+msgstr ""
+"  -l idioma[,idioma,...]      Especifica los idiomas de salida (código "
+"regional)."
 
-#: ppdc/ppdc.cxx:448
 msgid "  -m                      Use the ModelName value as the filename."
-msgstr "  -m                      Usa el valor ModelName como nombre de archivo."
+msgstr ""
+"  -m                      Usa el valor ModelName como nombre de archivo."
 
-#: scheduler/cupsfilter.c:1445
-msgid "  -m mime/type            Set output MIME type (otherwise application/pdf)."
-msgstr "  -m tipo/mime            Establece el tipo MIME de salida (si no, application/pdf)."
+msgid ""
+"  -m mime/type            Set output MIME type (otherwise application/pdf)."
+msgstr ""
+"  -m tipo/mime            Establece el tipo MIME de salida (si no, "
+"application/pdf)."
 
-#: scheduler/cupsfilter.c:1447
 msgid "  -n copies               Set number of copies."
 msgstr "  -n copias               Establece el número de copias."
 
-#: test/ipptool.c:4427
-msgid "  -n count                Repeat the last file the given number of times."
-msgstr "  -n contador                Repite el último archivo el número de veces especificado."
+msgid ""
+"  -n count                Repeat the last file the given number of times."
+msgstr ""
+"  -n contador                Repite el último archivo el número de veces "
+"especificado."
 
-#: ppdc/ppdi.cxx:133
-msgid "  -o filename.drv         Set driver information file (otherwise ppdi.drv)."
-msgstr "  -o nombre_archivo.drv         Establece el archivo de información del controlador (si no, ppdi.drv)."
+msgid ""
+"  -o filename.drv         Set driver information file (otherwise ppdi.drv)."
+msgstr ""
+"  -o nombre_archivo.drv         Establece el archivo de información del "
+"controlador (si no, ppdi.drv)."
 
-#: ppdc/ppdmerge.cxx:370
 msgid "  -o filename.ppd[.gz]    Set output file (otherwise stdout)."
-msgstr "  -o nombre_archivo.ppd[.gz]    Establece el archivo de salida (si no, stdout)."
+msgstr ""
+"  -o nombre_archivo.ppd[.gz]    Establece el archivo de salida (si no, "
+"stdout)."
 
-#: scheduler/cupsfilter.c:1448
 msgid "  -o name=value           Set option(s)."
 msgstr "  -o nombre=valor           Establece opciones."
 
-#: scheduler/cupsfilter.c:1449
 msgid "  -p filename.ppd         Set PPD file."
 msgstr "  -p nombre_archivo.ppd         Establece archivo PPD."
 
-#: systemv/cupstestppd.c:3806
-#: test/ipptool.c:4429
 msgid "  -q                      Run silently."
 msgstr "  -q                      Ejecución silenciosa."
 
-#: systemv/cupstestppd.c:3807
 msgid "  -r                      Use 'relaxed' open mode."
 msgstr "  -r                      Usa modo abierto 'relajado'."
 
-#: test/ipptool.c:4430
 msgid "  -t                      Produce a test report."
 msgstr "  -t                      Produce un informe de la prueba."
 
-#: ppdc/ppdc.cxx:450
 msgid "  -t                      Test PPDs instead of generating them."
 msgstr "  -t                      Prueba los PPDs en vez de generarlos."
 
-#: scheduler/main.c:2025
 msgid "  -t                      Test the configuration file."
 msgstr "  -t                      Prueba el archivo de configuración."
 
-#: scheduler/cupsfilter.c:1450
 msgid "  -t title                Set title."
 msgstr "  -t título                Establece título."
 
-#: scheduler/cupsfilter.c:1451
 msgid "  -u                      Remove the PPD file when finished."
 msgstr "  -u                      Borra el archivo PPD tras terminar."
 
-#: systemv/cupsaddsmb.c:291
-#: systemv/cupstestppd.c:3808
-#: test/ipptool.c:4431
-#: ppdc/ppdc.cxx:452
-#: ppdc/ppdpo.cxx:259
 msgid "  -v                      Be verbose."
 msgstr "  -v                     Ser detallado."
 
-#: systemv/cupstestppd.c:3809
 msgid "  -vv                     Be very verbose."
 msgstr "  -vv                     Ser muy detallado."
 
-#: ppdc/ppdc.cxx:453
 msgid "  -z                      Compress PPD files using GNU zip."
 msgstr "  -z                      Comprimir archivos PPD usando GNU zip."
 
-#: systemv/cupstestppd.c:332
-#: systemv/cupstestppd.c:351
-#: systemv/cupstestppd.c:363
-#: systemv/cupstestppd.c:496
-#: systemv/cupstestppd.c:511
-#: systemv/cupstestppd.c:532
-#: systemv/cupstestppd.c:547
-#: systemv/cupstestppd.c:577
-#: systemv/cupstestppd.c:597
-#: systemv/cupstestppd.c:620
-#: systemv/cupstestppd.c:638
-#: systemv/cupstestppd.c:664
-#: systemv/cupstestppd.c:682
-#: systemv/cupstestppd.c:702
-#: systemv/cupstestppd.c:722
-#: systemv/cupstestppd.c:740
-#: systemv/cupstestppd.c:757
-#: systemv/cupstestppd.c:776
-#: systemv/cupstestppd.c:797
-#: systemv/cupstestppd.c:816
-#: systemv/cupstestppd.c:836
-#: systemv/cupstestppd.c:856
-#: systemv/cupstestppd.c:876
-#: systemv/cupstestppd.c:896
-#: systemv/cupstestppd.c:914
-#: systemv/cupstestppd.c:931
-#: systemv/cupstestppd.c:953
-#: systemv/cupstestppd.c:971
-#: systemv/cupstestppd.c:988
-#: systemv/cupstestppd.c:1006
-#: systemv/cupstestppd.c:1022
-#: systemv/cupstestppd.c:1042
-#: systemv/cupstestppd.c:1073
-#: systemv/cupstestppd.c:1095
-#: systemv/cupstestppd.c:1146
-#: systemv/cupstestppd.c:1165
-#: systemv/cupstestppd.c:1209
-#: systemv/cupstestppd.c:1223
-#: systemv/cupstestppd.c:1255
-#: systemv/cupstestppd.c:1282
-#: systemv/cupstestppd.c:1800
-#: systemv/cupstestppd.c:1819
-#: systemv/cupstestppd.c:1837
-#: systemv/cupstestppd.c:1889
-#: systemv/cupstestppd.c:1905
-#: systemv/cupstestppd.c:1942
-#: systemv/cupstestppd.c:1960
-#: systemv/cupstestppd.c:1996
-#: systemv/cupstestppd.c:2010
-#: systemv/cupstestppd.c:2037
-#: systemv/cupstestppd.c:2051
-#: systemv/cupstestppd.c:2097
-#: systemv/cupstestppd.c:2119
-#: systemv/cupstestppd.c:2142
-#: systemv/cupstestppd.c:2159
-#: systemv/cupstestppd.c:2201
-#: systemv/cupstestppd.c:2244
-#: systemv/cupstestppd.c:2291
-#: systemv/cupstestppd.c:2315
-#: systemv/cupstestppd.c:2369
-#: systemv/cupstestppd.c:2385
-#: systemv/cupstestppd.c:2415
-#: systemv/cupstestppd.c:2429
-#: systemv/cupstestppd.c:2455
-#: systemv/cupstestppd.c:2471
-#: systemv/cupstestppd.c:2511
-#: systemv/cupstestppd.c:2525
-#: systemv/cupstestppd.c:2551
-#: systemv/cupstestppd.c:2567
-#: systemv/cupstestppd.c:2597
-#: systemv/cupstestppd.c:2611
-#: systemv/cupstestppd.c:2638
-#: systemv/cupstestppd.c:2655
-#: systemv/cupstestppd.c:2669
-#: systemv/cupstestppd.c:2693
-#: systemv/cupstestppd.c:2710
-#: systemv/cupstestppd.c:2724
-#: systemv/cupstestppd.c:2748
-#: systemv/cupstestppd.c:2765
-#: systemv/cupstestppd.c:2779
-#: systemv/cupstestppd.c:2803
-#: systemv/cupstestppd.c:2820
-#: systemv/cupstestppd.c:2834
-#: systemv/cupstestppd.c:2858
-#: systemv/cupstestppd.c:2872
-#: systemv/cupstestppd.c:2887
-#: systemv/cupstestppd.c:2904
-#: systemv/cupstestppd.c:2960
-#: systemv/cupstestppd.c:2995
-#: systemv/cupstestppd.c:3009
-#: systemv/cupstestppd.c:3037
-#: systemv/cupstestppd.c:3102
-#: systemv/cupstestppd.c:3117
-#: systemv/cupstestppd.c:3156
-#: systemv/cupstestppd.c:3176
-#: systemv/cupstestppd.c:3190
-#: systemv/cupstestppd.c:3387
-#: systemv/cupstestppd.c:3423
-#: systemv/cupstestppd.c:3437
-#: systemv/cupstestppd.c:3483
-#: systemv/cupstestppd.c:3515
-#: systemv/cupstestppd.c:3532
-#: systemv/cupstestppd.c:3555
-#: systemv/cupstestppd.c:3571
-#: systemv/cupstestppd.c:3609
-#: systemv/cupstestppd.c:3750
-#: systemv/cupstestppd.c:3772
-#: systemv/cupstestppd.c:3880
 msgid " FAIL"
 msgstr " FALLO"
 
-#: systemv/cupstestppd.c:1306
 msgid " PASS"
 msgstr " PASA"
 
-#: berkeley/lpq.c:560
 #, c-format
 msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
 msgstr "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
 
-#: berkeley/lpq.c:565
 #, c-format
 msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
 msgstr "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
 
-#: systemv/lpstat.c:750
 #, c-format
 msgid "%s accepting requests since %s"
 msgstr "%s aceptando peticiones desde %s"
 
-#: scheduler/ipp.c:10045
 #, c-format
 msgid "%s cannot be changed."
 msgstr "%s no puede ser cambiado."
 
-#: berkeley/lpc.c:189
 #, c-format
 msgid "%s is not implemented by the CUPS version of lpc."
 msgstr "%s no está implementado en la versión de CUPS de lpc."
 
-#: berkeley/lpq.c:651
 #, c-format
 msgid "%s is not ready"
 msgstr "%s no está preparada"
 
-#: berkeley/lpq.c:644
 #, c-format
 msgid "%s is ready"
 msgstr "%s está preparada"
 
-#: berkeley/lpq.c:647
 #, c-format
 msgid "%s is ready and printing"
 msgstr "%s está preparada e imprimiendo"
 
-#: filter/rastertoepson.c:985
-#: filter/rastertohp.c:711
-#: filter/rastertolabel.c:1134
 #, c-format
 msgid "%s job-id user title copies options [file]"
 msgstr "%s job-id usuario título copias opciones [archivo]"
 
-#: systemv/lpstat.c:754
 #, c-format
 msgid "%s not accepting requests since %s -"
 msgstr "%s no acepta peticiones desde %s -"
 
-#: scheduler/ipp.c:691
 #, c-format
 msgid "%s not supported."
 msgstr "No se admite el uso de %s."
 
-#: systemv/lpstat.c:765
 #, c-format
 msgid "%s/%s accepting requests since %s"
 msgstr "%s/%s aceptando peticiones desde %s"
 
-#: systemv/lpstat.c:770
 #, c-format
 msgid "%s/%s not accepting requests since %s -"
 msgstr "%s/%s no acepta peticiones desde %s -"
 
-#: berkeley/lpq.c:552
 #, c-format
 msgid "%s: %-33.33s [job %d localhost]"
 msgstr "%s: %-33.33s [trabajo %d localhost]"
 
 #. TRANSLATORS: Message is "subject: error"
-#: cups/langprintf.c:86
-#: scheduler/cupsfilter.c:714
-#: systemv/lpadmin.c:805
-#: systemv/lpadmin.c:856
-#: systemv/lpadmin.c:906
-#: systemv/lpadmin.c:962
-#: systemv/lpadmin.c:1060
-#: systemv/lpadmin.c:1112
-#: systemv/lpadmin.c:1168
-#: systemv/lpadmin.c:1478
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: systemv/cancel.c:294
-#: systemv/cancel.c:357
 #, c-format
 msgid "%s: %s failed: %s"
 msgstr "%s: %s ha fallado: %s"
 
-#: systemv/cupsaccept.c:68
 #, c-format
 msgid "%s: Don't know what to do."
 msgstr "%s: No sé que hay que hacer."
 
-#: berkeley/lpq.c:236
-#: berkeley/lpr.c:344
-#: systemv/lp.c:584
 #, c-format
-msgid "%s: Error - %s environment variable names non-existent destination \"%s\"."
-msgstr "%s: Error - %s nombres de variables de entorno no existen en destino \"%s\"."
+msgid ""
+"%s: Error - %s environment variable names non-existent destination \"%s\"."
+msgstr ""
+"%s: Error - %s nombres de variables de entorno no existen en destino \"%s\"."
 
-#: systemv/lp.c:231
 #, c-format
 msgid "%s: Error - bad job ID."
 msgstr "%s: Error - ID de trabajo incorrecta."
 
-#: systemv/lp.c:219
 #, c-format
 msgid "%s: Error - cannot print files and alter jobs simultaneously."
-msgstr "%s: Error - no se pueden imprimir archivos y alterar trabajos al mismo tiempo."
+msgstr ""
+"%s: Error - no se pueden imprimir archivos y alterar trabajos al mismo "
+"tiempo."
 
-#: systemv/lp.c:505
 #, c-format
 msgid "%s: Error - cannot print from stdin if files or a job ID are provided."
-msgstr "%s: Error - no se puede imprimir desde stdin si se proporcionan archivos o una ID de trabajo."
+msgstr ""
+"%s: Error - no se puede imprimir desde stdin si se proporcionan archivos o "
+"una ID de trabajo."
 
-#: systemv/lp.c:461
 #, c-format
 msgid "%s: Error - expected character set after \"-S\" option."
 msgstr "%s: Error - se esperaba un juego de caracteres tras la opción \"-S\"."
 
-#: systemv/lp.c:480
 #, c-format
 msgid "%s: Error - expected content type after \"-T\" option."
 msgstr "%s: Error - se esperaba un tipo de contenido tras la opción \"-T\"."
 
-#: berkeley/lpr.c:240
 #, c-format
 msgid "%s: Error - expected copies after \"-#\" option."
 msgstr "%s: Error -  se esperaba número de copias tras la opción \"-#\"."
 
-#: systemv/lp.c:264
 #, c-format
 msgid "%s: Error - expected copies after \"-n\" option."
 msgstr "%s: Error -  se esperaba número de copias tras la opción \"-n\"."
 
-#: berkeley/lpr.c:209
 #, c-format
 msgid "%s: Error - expected destination after \"-P\" option."
 msgstr "%s: Error - se esperaba un destino tras la opción \"-P\"."
 
-#: systemv/lpstat.c:231
-#, c-format
-msgid "%s: Error - expected destination after \"-b\" option."
-msgstr "%s: Error - se esperaba un destino tras la opción \"-b\"."
-
-#: systemv/lp.c:138
 #, c-format
 msgid "%s: Error - expected destination after \"-d\" option."
 msgstr "%s: Error -  se esperaba un destino tras la opción \"-d\"."
 
-#: systemv/lp.c:168
 #, c-format
 msgid "%s: Error - expected form after \"-f\" option."
 msgstr "%s: Error - se esperaba un formulario tras la opción \"-f\"."
 
-#: systemv/lp.c:391
 #, c-format
 msgid "%s: Error - expected hold name after \"-H\" option."
 msgstr "%s: Error - se esperaba un nombre de retención tras la opción \"-H\"."
 
-#: berkeley/lpr.c:103
 #, c-format
 msgid "%s: Error - expected hostname after \"-H\" option."
 msgstr "%s: Error - se esperaba un nombre de ordenador tras la opción \"-H\"."
 
-#: berkeley/lpq.c:180
-#: berkeley/lprm.c:123
-#: systemv/cancel.c:124
-#: systemv/cupsaccept.c:123
-#: systemv/lp.c:189
-#: systemv/lpstat.c:291
 #, c-format
 msgid "%s: Error - expected hostname after \"-h\" option."
 msgstr "%s: Error - se esperaba un nombre de ordenador tras la opción \"-h\"."
 
-#: systemv/lp.c:371
 #, c-format
 msgid "%s: Error - expected mode list after \"-y\" option."
 msgstr "%s: Error - se esperaba una lista de modos tras la opción \"-y\"."
 
-#: berkeley/lpr.c:263
 #, c-format
 msgid "%s: Error - expected name after \"-%c\" option."
 msgstr "%s: Error - se esperaba un nombre tras la opción \"%c\"."
 
-#: berkeley/lpr.c:153
-#: systemv/lp.c:288
 #, c-format
 msgid "%s: Error - expected option=value after \"-o\" option."
 msgstr "%s: Error - se esperaba opción=valor tras la opción \"-o\"."
 
-#: systemv/lp.c:441
 #, c-format
 msgid "%s: Error - expected page list after \"-P\" option."
 msgstr "%s: Error - se esperaba una lista de páginas tras la opción \"-P\"."
 
-#: systemv/lp.c:308
 #, c-format
 msgid "%s: Error - expected priority after \"-%c\" option."
 msgstr "%s: Error - se esperaba un valor de prioridad tras la opción \"-%c\"."
 
-#: systemv/cupsaccept.c:141
 #, c-format
 msgid "%s: Error - expected reason text after \"-r\" option."
 msgstr "%s: Error - se esperaba un texto con una razón tras la opción \"-r\"."
 
-#: systemv/lp.c:354
 #, c-format
 msgid "%s: Error - expected title after \"-t\" option."
 msgstr "%s: Error - se esperaba un título tras la opción \"-t\"."
 
-#: berkeley/lpq.c:111
-#: berkeley/lpr.c:84
-#: berkeley/lprm.c:104
-#: systemv/cancel.c:94
-#: systemv/cupsaccept.c:101
-#: systemv/lp.c:116
-#: systemv/lpadmin.c:438
-#: systemv/lpstat.c:137
 #, c-format
 msgid "%s: Error - expected username after \"-U\" option."
 msgstr "%s: Error - se esperaba un nombre de usuario tras la opción \"-U\"."
 
-#: systemv/cancel.c:145
 #, c-format
 msgid "%s: Error - expected username after \"-u\" option."
 msgstr "%s: Error - se esperaba un nombre de usuario tras la opción \"-u\"."
 
-#: berkeley/lpr.c:125
 #, c-format
 msgid "%s: Error - expected value after \"-%c\" option."
 msgstr "%s: Error - se esperaba un valor tras la opción \"%c\"."
 
-#: systemv/lpstat.c:157
-#: systemv/lpstat.c:171
 #, c-format
-msgid "%s: Error - need \"completed\", \"not-completed\", or \"all\" after \"-W\" option."
-msgstr "%s: Error - se necesita \"completed\", \"not completed\", o \"all\" tras la opción \"-W\"."
+msgid ""
+"%s: Error - need \"completed\", \"not-completed\", or \"all\" after \"-W\" "
+"option."
+msgstr ""
+"%s: Error - se necesita \"completed\", \"not completed\", o \"all\" tras la "
+"opción \"-W\"."
 
-#: berkeley/lpq.c:241
-#: berkeley/lpr.c:349
-#: systemv/lp.c:589
 #, c-format
 msgid "%s: Error - no default destination available."
 msgstr "%s: Error - destino predeterminado no disponible."
 
-#: systemv/lp.c:330
 #, c-format
 msgid "%s: Error - priority must be between 1 and 100."
 msgstr "%s: Error - la prioridad debe estar entre 1 y 100."
 
-#: berkeley/lpr.c:352
-#: systemv/lp.c:592
 #, c-format
 msgid "%s: Error - scheduler not responding."
 msgstr "%s: Error - el programa planificador de tareas no responde."
 
-#: berkeley/lpr.c:305
-#: systemv/lp.c:537
 #, c-format
 msgid "%s: Error - too many files - \"%s\"."
 msgstr "%s: Error - demasiados archivos - \"%s\"."
 
-#: berkeley/lpr.c:287
-#: systemv/lp.c:520
 #, c-format
 msgid "%s: Error - unable to access \"%s\" - %s"
 msgstr "%s: Error - no se ha podido acceder a \"%s\" - %s"
 
-#: berkeley/lpr.c:395
-#: systemv/lp.c:623
 #, c-format
 msgid "%s: Error - unable to queue from stdin - %s."
 msgstr "%s: Error - no se ha podido poner en cola desde stdin - %s."
 
-#: berkeley/lprm.c:87
-#: berkeley/lprm.c:172
-#: systemv/cancel.c:214
 #, c-format
 msgid "%s: Error - unknown destination \"%s\"."
 msgstr "%s: Error - destino \"%s\" desconocido."
 
-#: berkeley/lpq.c:150
 #, c-format
 msgid "%s: Error - unknown destination \"%s/%s\"."
 msgstr "%s: Error - destino \"%s/%s\" desconocido."
 
-#: berkeley/lpr.c:274
-#: berkeley/lprm.c:139
-#: systemv/cancel.c:156
-#: systemv/cupsaccept.c:164
-#: systemv/lp.c:496
-#: systemv/lpstat.c:452
 #, c-format
 msgid "%s: Error - unknown option \"%c\"."
 msgstr "%s: Error - opción \"%c\" desconocida."
 
-#: systemv/cupsaccept.c:157
 #, c-format
 msgid "%s: Error - unknown option \"%s\"."
 msgstr "%s: Error: opción \"%s\" desconocida."
 
-#: systemv/lp.c:208
 #, c-format
 msgid "%s: Expected job ID after \"-i\" option."
 msgstr "%s : Se esperaba una ID de trabajo tras la opción \"-i\"."
 
-#: systemv/lpstat.c:504
-#: systemv/lpstat.c:543
 #, c-format
 msgid "%s: Invalid destination name in list \"%s\"."
 msgstr "%s: Nombre de destino no válido en la lista \"%s\"."
 
-#: scheduler/cupsfilter.c:567
 #, c-format
 msgid "%s: Invalid filter string \"%s\"."
 msgstr "%s: Cadena de filtro \"%s\" no válida."
 
-#: systemv/lp.c:418
 #, c-format
 msgid "%s: Need job ID (\"-i jobid\") before \"-H restart\"."
-msgstr "%s: Se necesita un ID de trabajo (\"-i id_trabajo\") antes de \"-H restart\"."
+msgstr ""
+"%s: Se necesita un ID de trabajo (\"-i id_trabajo\") antes de \"-H restart\"."
 
-#: scheduler/cupsfilter.c:458
 #, c-format
 msgid "%s: No filter to convert from %s/%s to %s/%s."
 msgstr "%s: No hay ningún filtro para convertir de %s/%s a %s/%s."
 
-#: systemv/cupsaccept.c:198
 #, c-format
 msgid "%s: Operation failed: %s"
 msgstr "%s: La operación ha fallado: %s"
 
-#: berkeley/lpq.c:97
-#: berkeley/lpr.c:70
-#: berkeley/lprm.c:67
-#: systemv/cancel.c:81
-#: systemv/cupsaccept.c:88
-#: systemv/cupsaddsmb.c:86
-#: systemv/lp.c:102
-#: systemv/lpadmin.c:239
-#: systemv/lpinfo.c:88
-#: systemv/lpmove.c:73
-#: systemv/lpstat.c:102
-#: test/ipptool.c:304
-#: test/ipptool.c:321
 #, c-format
 msgid "%s: Sorry, no encryption support."
 msgstr "%s: Lo siento, no está compilado con la opción de cifrado."
 
-#: berkeley/lpq.c:295
-#: scheduler/cupsfilter.c:1221
-#: systemv/cancel.c:237
-#: systemv/cupsaddsmb.c:144
-#: systemv/cupsaddsmb.c:171
 #, c-format
 msgid "%s: Unable to connect to server."
 msgstr "%s: No se ha podido conectar al servidor."
 
-#: systemv/cancel.c:317
 #, c-format
 msgid "%s: Unable to contact server."
 msgstr "%s: No se ha podido contactar con el servidor."
 
-#: scheduler/cupsfilter.c:424
 #, c-format
 msgid "%s: Unable to determine MIME type of \"%s\"."
 msgstr "%s: No se ha podido determinar el tipo MIME de \"%s\"."
 
-#: ppdc/ppdmerge.cxx:96
 #, c-format
 msgid "%s: Unable to open %s: %s"
 msgstr "%s: No se pudo abrir %s: %s"
 
-#: scheduler/cupsfilter.c:662
-#: ppdc/ppdmerge.cxx:112
 #, c-format
 msgid "%s: Unable to open PPD file: %s on line %d."
 msgstr "%s: No se ha podido abrir el archivo PPD: %s en la línea %d."
 
-#: scheduler/cupsfilter.c:392
 #, c-format
 msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"."
 msgstr "%s: No se pudo leer base de datos MIME desde \"%s\" o \"%s\"."
 
-#: berkeley/lpq.c:153
-#: systemv/lpstat.c:558
 #, c-format
 msgid "%s: Unknown destination \"%s\"."
 msgstr "%s: Destino \"%s\" desconocido."
 
-#: scheduler/cupsfilter.c:435
 #, c-format
 msgid "%s: Unknown destination MIME type %s/%s."
 msgstr "%s: Tipo MIME de destino %s/%s desconocido."
 
-#: scheduler/cupsfilter.c:1426
 #, c-format
 msgid "%s: Unknown option \"%c\"."
 msgstr "%s: Opción \"%c\" desconocida."
 
-#: scheduler/cupsfilter.c:416
 #, c-format
 msgid "%s: Unknown source MIME type %s/%s."
 msgstr "%s: Tipo MIME de origen %s/%s desconocido."
 
-#: berkeley/lpr.c:139
 #, c-format
-msgid "%s: Warning - \"%c\" format modifier not supported - output may not be correct."
-msgstr "%s: Advertencia - no se admite el uso del modificador de formato \"%c\" - la salida puede no ser correcta."
+msgid ""
+"%s: Warning - \"%c\" format modifier not supported - output may not be "
+"correct."
+msgstr ""
+"%s: Advertencia - no se admite el uso del modificador de formato \"%c\" - la "
+"salida puede no ser correcta."
 
-#: systemv/lp.c:468
 #, c-format
 msgid "%s: Warning - character set option ignored."
 msgstr "%s: Advertencia - opción de juego de caracteres no tenida en cuenta."
 
-#: systemv/lp.c:487
 #, c-format
 msgid "%s: Warning - content type option ignored."
 msgstr "%s: Advertencia - opción de tipo de contenido no tenida en cuenta."
 
-#: systemv/lp.c:175
 #, c-format
 msgid "%s: Warning - form option ignored."
 msgstr "%s: Advertencia - opción de formulario no tenida en cuenta."
 
-#: systemv/lp.c:378
 #, c-format
 msgid "%s: Warning - mode option ignored."
 msgstr "%s: Advertencia - opción de modo no tenida en cuenta."
 
-#: ppdc/sample.c:310
 msgid "-1"
 msgstr "-1"
 
-#: ppdc/sample.c:301
 msgid "-10"
 msgstr "-10"
 
-#: ppdc/sample.c:393
 msgid "-100"
 msgstr "-100"
 
-#: ppdc/sample.c:392
 msgid "-105"
 msgstr "-105"
 
-#: ppdc/sample.c:300
 msgid "-11"
 msgstr "-11"
 
-#: ppdc/sample.c:391
 msgid "-110"
 msgstr "-110"
 
-#: ppdc/sample.c:390
 msgid "-115"
 msgstr "-115"
 
-#: ppdc/sample.c:299
 msgid "-12"
 msgstr "-12"
 
-#: ppdc/sample.c:389
 msgid "-120"
 msgstr "-120"
 
-#: ppdc/sample.c:298
 msgid "-13"
 msgstr "-13"
 
-#: ppdc/sample.c:297
 msgid "-14"
 msgstr "-14"
 
-#: ppdc/sample.c:296
 msgid "-15"
 msgstr "-15"
 
-#: ppdc/sample.c:309
 msgid "-2"
 msgstr "-2"
 
-#: ppdc/sample.c:409
 msgid "-20"
 msgstr "-20"
 
-#: ppdc/sample.c:408
 msgid "-25"
 msgstr "-25"
 
-#: ppdc/sample.c:308
 msgid "-3"
 msgstr "-3"
 
-#: ppdc/sample.c:407
 msgid "-30"
 msgstr "-30"
 
-#: ppdc/sample.c:406
 msgid "-35"
 msgstr "-35"
 
-#: ppdc/sample.c:307
 msgid "-4"
 msgstr "-4"
 
-#: ppdc/sample.c:405
 msgid "-40"
 msgstr "-40"
 
-#: ppdc/sample.c:404
 msgid "-45"
 msgstr "-45"
 
-#: ppdc/sample.c:306
 msgid "-5"
 msgstr "-5"
 
-#: ppdc/sample.c:403
 msgid "-50"
 msgstr "-50"
 
-#: ppdc/sample.c:402
 msgid "-55"
 msgstr "-55"
 
-#: ppdc/sample.c:305
 msgid "-6"
 msgstr "-6"
 
-#: ppdc/sample.c:401
 msgid "-60"
 msgstr "-60"
 
-#: ppdc/sample.c:400
 msgid "-65"
 msgstr "-65"
 
-#: ppdc/sample.c:304
 msgid "-7"
 msgstr "-7"
 
-#: ppdc/sample.c:399
 msgid "-70"
 msgstr "-70"
 
-#: ppdc/sample.c:398
 msgid "-75"
 msgstr "-75"
 
-#: ppdc/sample.c:303
 msgid "-8"
 msgstr "-8"
 
-#: ppdc/sample.c:397
 msgid "-80"
 msgstr "-80"
 
-#: ppdc/sample.c:396
 msgid "-85"
 msgstr "-85"
 
-#: ppdc/sample.c:302
 msgid "-9"
 msgstr "-9"
 
-#: ppdc/sample.c:395
 msgid "-90"
 msgstr "-90"
 
-#: ppdc/sample.c:394
 msgid "-95"
 msgstr "-95"
 
-#: ppdc/sample.c:311
 msgid "0"
 msgstr "0"
 
-#: ppdc/sample.c:312
 msgid "1"
 msgstr "1"
 
-#: ppdc/sample.c:384
 msgid "1 inch/sec."
 msgstr "1 pulg./seg"
 
-#: ppdc/sample.c:172
 msgid "1.25x0.25\""
 msgstr "1.25x0.25 pulg."
 
-#: ppdc/sample.c:173
 msgid "1.25x2.25\""
 msgstr "1.25x2.25 pulg."
 
-#: ppdc/sample.c:432
 msgid "1.5 inch/sec."
 msgstr "1.5 pulg./seg"
 
-#: ppdc/sample.c:174
 msgid "1.50x0.25\""
 msgstr "1.50x0.25 pulg."
 
-#: ppdc/sample.c:175
 msgid "1.50x0.50\""
 msgstr "1.50x0.50 pulg."
 
-#: ppdc/sample.c:176
 msgid "1.50x1.00\""
 msgstr "1.50x1.00 pulg."
 
-#: ppdc/sample.c:177
 msgid "1.50x2.00\""
 msgstr "1.50x2.00 pulg."
 
-#: ppdc/sample.c:321
 msgid "10"
 msgstr "10"
 
-#: ppdc/sample.c:443
 msgid "10 inches/sec."
 msgstr "10 pulg./seg"
 
-#: ppdc/sample.c:6
 msgid "10 x 11"
 msgstr "10 x 11"
 
-#: ppdc/sample.c:7
 msgid "10 x 13"
 msgstr "10 x 13"
 
-#: ppdc/sample.c:8
 msgid "10 x 14"
 msgstr "10 x 14"
 
-#: ppdc/sample.c:423
 msgid "100"
 msgstr "100"
 
-#: ppdc/sample.c:334
 msgid "100 mm/sec."
 msgstr "100 mm/seg"
 
-#: ppdc/sample.c:424
 msgid "105"
 msgstr "105"
 
-#: ppdc/sample.c:322
 msgid "11"
 msgstr "11"
 
-#: ppdc/sample.c:444
 msgid "11 inches/sec."
 msgstr "11 pulg./seg"
 
-#: ppdc/sample.c:425
 msgid "110"
 msgstr "110"
 
-#: ppdc/sample.c:426
 msgid "115"
 msgstr "115"
 
-#: ppdc/sample.c:323
 msgid "12"
 msgstr "12"
 
-#: ppdc/sample.c:445
 msgid "12 inches/sec."
 msgstr "12 pulg./seg"
 
-#: ppdc/sample.c:9
 msgid "12 x 11"
 msgstr "12 x 11"
 
-#: ppdc/sample.c:427
 msgid "120"
 msgstr "120"
 
-#: ppdc/sample.c:335
 msgid "120 mm/sec."
 msgstr "120 mm/seg"
 
-#: ppdc/sample.c:243
 msgid "120x60dpi"
 msgstr "120x60ppp"
 
-#: ppdc/sample.c:249
 msgid "120x72dpi"
 msgstr "120x72ppp"
 
-#: ppdc/sample.c:324
 msgid "13"
 msgstr "13"
 
-#: ppdc/sample.c:232
 msgid "136dpi"
 msgstr "136ppp"
 
-#: ppdc/sample.c:325
 msgid "14"
 msgstr "14"
 
-#: ppdc/sample.c:326
 msgid "15"
 msgstr "15"
 
-#: ppdc/sample.c:328
 msgid "15 mm/sec."
 msgstr "15 mm/seg"
 
-#: ppdc/sample.c:10
 msgid "15 x 11"
 msgstr "15 x 11"
 
-#: ppdc/sample.c:336
 msgid "150 mm/sec."
 msgstr "150 mm/seg"
 
-#: ppdc/sample.c:283
 msgid "150dpi"
 msgstr "150ppp"
 
-#: ppdc/sample.c:368
 msgid "16"
 msgstr "16"
 
-#: ppdc/sample.c:369
 msgid "17"
 msgstr "17"
 
-#: ppdc/sample.c:370
 msgid "18"
 msgstr "18"
 
-#: ppdc/sample.c:244
 msgid "180dpi"
 msgstr "180ppp"
 
-#: ppdc/sample.c:371
 msgid "19"
 msgstr "19"
 
-#: ppdc/sample.c:313
 msgid "2"
 msgstr "2"
 
-#: ppdc/sample.c:385
 msgid "2 inches/sec."
 msgstr "2 pulg./seg"
 
-#: ppdc/sample.c:270
 msgid "2-Sided Printing"
 msgstr "Dúplex"
 
-#: ppdc/sample.c:178
 msgid "2.00x0.37\""
 msgstr "2.00x0.37 pulg."
 
-#: ppdc/sample.c:179
 msgid "2.00x0.50\""
 msgstr "2.00x0.50 pulg."
 
-#: ppdc/sample.c:180
 msgid "2.00x1.00\""
 msgstr "2.00x1.00 pulg."
 
-#: ppdc/sample.c:181
 msgid "2.00x1.25\""
 msgstr "2.00x1.25 pulg."
 
-#: ppdc/sample.c:182
 msgid "2.00x2.00\""
 msgstr "2.00x2.00 pulg."
 
-#: ppdc/sample.c:183
 msgid "2.00x3.00\""
 msgstr "2.00x3.00 pulg."
 
-#: ppdc/sample.c:184
 msgid "2.00x4.00\""
 msgstr "2.00x4.00 pulg."
 
-#: ppdc/sample.c:185
 msgid "2.00x5.50\""
 msgstr "2.00x5.50 pulg."
 
-#: ppdc/sample.c:186
 msgid "2.25x0.50\""
 msgstr "2.25x0.50 pulg."
 
-#: ppdc/sample.c:187
 msgid "2.25x1.25\""
 msgstr "2.25x1.25 pulg."
 
-#: ppdc/sample.c:188
 msgid "2.25x4.00\""
 msgstr "2.25x4.00 pulg."
 
-#: ppdc/sample.c:189
 msgid "2.25x5.50\""
 msgstr "2.25x5.50 pulg."
 
-#: ppdc/sample.c:190
 msgid "2.38x5.50\""
 msgstr "2.38x5.50 pulg."
 
-#: ppdc/sample.c:433
 msgid "2.5 inches/sec."
 msgstr "2.5 pulg./seg"
 
-#: ppdc/sample.c:191
 msgid "2.50x1.00\""
 msgstr "2.50x1.00 pulg."
 
-#: ppdc/sample.c:192
 msgid "2.50x2.00\""
 msgstr "2.50x2.00 pulg."
 
-#: ppdc/sample.c:193
 msgid "2.75x1.25\""
 msgstr "2.75x1.25 pulg."
 
-#: ppdc/sample.c:194
 msgid "2.9 x 1\""
 msgstr "2.9 x 1 pulg."
 
-#: ppdc/sample.c:372
 msgid "20"
 msgstr "20"
 
-#: ppdc/sample.c:329
 msgid "20 mm/sec."
 msgstr "20 mm/seg"
 
-#: ppdc/sample.c:337
 msgid "200 mm/sec."
 msgstr "200 mm/seg"
 
-#: ppdc/sample.c:233
 msgid "203dpi"
 msgstr "203ppp"
 
-#: ppdc/sample.c:373
 msgid "21"
 msgstr "21"
 
-#: ppdc/sample.c:374
 msgid "22"
 msgstr "22"
 
-#: ppdc/sample.c:375
 msgid "23"
 msgstr "23"
 
-#: ppdc/sample.c:376
 msgid "24"
 msgstr "24"
 
-#: ppdc/sample.c:241
 msgid "24-Pin Series"
 msgstr "24-Pin Series"
 
-#: ppdc/sample.c:250
 msgid "240x72dpi"
 msgstr "240x72ppp"
 
-#: ppdc/sample.c:377
 msgid "25"
 msgstr "25"
 
-#: ppdc/sample.c:338
 msgid "250 mm/sec."
 msgstr "250 mm/seg"
 
-#: ppdc/sample.c:378
 msgid "26"
 msgstr "26"
 
-#: ppdc/sample.c:379
 msgid "27"
 msgstr "27"
 
-#: ppdc/sample.c:380
 msgid "28"
 msgstr "28"
 
-#: ppdc/sample.c:381
 msgid "29"
 msgstr "29"
 
-#: ppdc/sample.c:314
 msgid "3"
 msgstr "3"
 
-#: ppdc/sample.c:386
 msgid "3 inches/sec."
 msgstr "3 pulg./seg"
 
-#: ppdc/sample.c:3
 msgid "3 x 5"
 msgstr "3 x 5"
 
-#: ppdc/sample.c:195
 msgid "3.00x1.00\""
 msgstr "3.00x1.00 pulg."
 
-#: ppdc/sample.c:196
 msgid "3.00x1.25\""
 msgstr "3.00x1.25 pulg."
 
-#: ppdc/sample.c:197
 msgid "3.00x2.00\""
 msgstr "3.00x2.00 pulg."
 
-#: ppdc/sample.c:198
 msgid "3.00x3.00\""
 msgstr "3.00x3.00 pulg."
 
-#: ppdc/sample.c:199
 msgid "3.00x5.00\""
 msgstr "3.00x5.00 pulg."
 
-#: ppdc/sample.c:200
 msgid "3.25x2.00\""
 msgstr "3.25x2.00 pulg."
 
-#: ppdc/sample.c:201
 msgid "3.25x5.00\""
 msgstr "3.25x5.00 pulg."
 
-#: ppdc/sample.c:202
 msgid "3.25x5.50\""
 msgstr "3.25x5.50 pulg."
 
-#: ppdc/sample.c:203
 msgid "3.25x5.83\""
 msgstr "3.25x5.83 pulg."
 
-#: ppdc/sample.c:204
 msgid "3.25x7.83\""
 msgstr "3.25x7.83 pulg."
 
-#: ppdc/sample.c:4
 msgid "3.5 x 5"
 msgstr "3.5 x 5"
 
-#: ppdc/sample.c:171
 msgid "3.5\" Disk"
 msgstr "Disco de 3.5 pulg."
 
-#: ppdc/sample.c:205
 msgid "3.50x1.00\""
 msgstr "3.50x1.00 pulg."
 
-#: ppdc/sample.c:382
 msgid "30"
 msgstr "30"
 
-#: ppdc/sample.c:330
 msgid "30 mm/sec."
 msgstr "30 mm/seg"
 
-#: ppdc/sample.c:339
 msgid "300 mm/sec."
 msgstr "300 mm/seg"
 
-#: ppdc/sample.c:234
 msgid "300dpi"
 msgstr "300ppp"
 
-#: ppdc/sample.c:410
 msgid "35"
 msgstr "35"
 
-#: ppdc/sample.c:246
 msgid "360dpi"
 msgstr "360ppp"
 
-#: ppdc/sample.c:245
 msgid "360x180dpi"
 msgstr "360x180ppp"
 
-#: ppdc/sample.c:315
 msgid "4"
 msgstr "4"
 
-#: ppdc/sample.c:387
 msgid "4 inches/sec."
 msgstr "4 pulg./seg"
 
-#: ppdc/sample.c:206
 msgid "4.00x1.00\""
 msgstr "4.00x1.00 pulg."
 
-#: ppdc/sample.c:214
 msgid "4.00x13.00\""
 msgstr "4.00x13.00 pulg."
 
-#: ppdc/sample.c:207
 msgid "4.00x2.00\""
 msgstr "4.00x2.00 pulg."
 
-#: ppdc/sample.c:208
 msgid "4.00x2.50\""
 msgstr "4.00x2.50 pulg."
 
-#: ppdc/sample.c:209
 msgid "4.00x3.00\""
 msgstr "4.00x3.00 pulg."
 
-#: ppdc/sample.c:210
 msgid "4.00x4.00\""
 msgstr "4.00x4.00 pulg."
 
-#: ppdc/sample.c:211
 msgid "4.00x5.00\""
 msgstr "4.00x5.00 pulg."
 
-#: ppdc/sample.c:212
 msgid "4.00x6.00\""
 msgstr "4.00x6.00 pulg."
 
-#: ppdc/sample.c:213
 msgid "4.00x6.50\""
 msgstr "4.00x6.50 pulg."
 
-#: ppdc/sample.c:411
 msgid "40"
 msgstr "40"
 
-#: ppdc/sample.c:331
 msgid "40 mm/sec."
 msgstr "40 mm/seg"
 
-#: ppdc/sample.c:412
 msgid "45"
 msgstr "45"
 
-#: ppdc/sample.c:316
 msgid "5"
 msgstr "5"
 
-#: ppdc/sample.c:437
 msgid "5 inches/sec."
 msgstr "5 pulg./seg"
 
-#: ppdc/sample.c:5
 msgid "5 x 7"
 msgstr "5 x 7"
 
-#: ppdc/sample.c:413
 msgid "50"
 msgstr "50"
 
-#: ppdc/sample.c:414
 msgid "55"
 msgstr "55"
 
-#: ppdc/sample.c:317
 msgid "6"
 msgstr "6"
 
-#: ppdc/sample.c:438
 msgid "6 inches/sec."
 msgstr "6 pulg./seg"
 
-#: ppdc/sample.c:215
 msgid "6.00x1.00\""
 msgstr "6.00x1.00 pulg."
 
-#: ppdc/sample.c:216
 msgid "6.00x2.00\""
 msgstr "6.00x2.00 pulg."
 
-#: ppdc/sample.c:217
 msgid "6.00x3.00\""
 msgstr "6.00x3.00 pulg."
 
-#: ppdc/sample.c:218
 msgid "6.00x4.00\""
 msgstr "6.00x4.00 pulg."
 
-#: ppdc/sample.c:219
 msgid "6.00x5.00\""
 msgstr "6.00x5.00 pulg."
 
-#: ppdc/sample.c:220
 msgid "6.00x6.00\""
 msgstr "6.00x6.00 pulg."
 
-#: ppdc/sample.c:221
 msgid "6.00x6.50\""
 msgstr "6.00x6.50 pulg."
 
-#: ppdc/sample.c:415
 msgid "60"
 msgstr "60"
 
-#: ppdc/sample.c:332
 msgid "60 mm/sec."
 msgstr "60 mm/seg"
 
-#: ppdc/sample.c:261
 msgid "600dpi"
 msgstr "600ppp"
 
-#: ppdc/sample.c:242
 msgid "60dpi"
 msgstr "60ppp"
 
-#: ppdc/sample.c:248
 msgid "60x72dpi"
 msgstr "60x72ppp"
 
-#: ppdc/sample.c:416
 msgid "65"
 msgstr "65"
 
-#: ppdc/sample.c:318
 msgid "7"
 msgstr "7"
 
-#: ppdc/sample.c:440
 msgid "7 inches/sec."
 msgstr "7 pulg./seg"
 
-#: ppdc/sample.c:11
 msgid "7 x 9"
 msgstr "7 x 9"
 
-#: ppdc/sample.c:417
 msgid "70"
 msgstr "70"
 
-#: ppdc/sample.c:252
 msgid "720dpi"
 msgstr "720ppp"
 
-#: ppdc/sample.c:418
 msgid "75"
 msgstr "75"
 
-#: ppdc/sample.c:319
 msgid "8"
 msgstr "8"
 
-#: ppdc/sample.c:441
 msgid "8 inches/sec."
 msgstr "8 pulg./seg"
 
-#: ppdc/sample.c:12
 msgid "8 x 10"
 msgstr "8 x 10"
 
-#: ppdc/sample.c:222
 msgid "8.00x1.00\""
 msgstr "8.00x1.00 pulg."
 
-#: ppdc/sample.c:223
 msgid "8.00x2.00\""
 msgstr "8.00x2.00 pulg."
 
-#: ppdc/sample.c:224
 msgid "8.00x3.00\""
 msgstr "8.00x3.00 pulg."
 
-#: ppdc/sample.c:225
 msgid "8.00x4.00\""
 msgstr "8.00x4.00 pulg."
 
-#: ppdc/sample.c:226
 msgid "8.00x5.00\""
 msgstr "8.00x5.00 pulg."
 
-#: ppdc/sample.c:227
 msgid "8.00x6.00\""
 msgstr "8.00x6.00 pulg."
 
-#: ppdc/sample.c:228
 msgid "8.00x6.50\""
 msgstr "8.00x6.50 pulg."
 
-#: ppdc/sample.c:419
 msgid "80"
 msgstr "80"
 
-#: ppdc/sample.c:333
 msgid "80 mm/sec."
 msgstr "80 mm/seg"
 
-#: ppdc/sample.c:420
 msgid "85"
 msgstr "85"
 
-#: ppdc/sample.c:320
 msgid "9"
 msgstr "9"
 
-#: ppdc/sample.c:442
 msgid "9 inches/sec."
 msgstr "9 pulg./seg"
 
-#: ppdc/sample.c:13
 msgid "9 x 11"
 msgstr "9 x 11"
 
-#: ppdc/sample.c:14
 msgid "9 x 12"
 msgstr "9 x 12"
 
-#: ppdc/sample.c:247
 msgid "9-Pin Series"
 msgstr "9-Pin Series"
 
-#: ppdc/sample.c:421
 msgid "90"
 msgstr "90"
 
-#: ppdc/sample.c:422
 msgid "95"
 msgstr "95"
 
-#: berkeley/lpc.c:213
 msgid "?Invalid help command unknown."
 msgstr "?Comando de ayuda no válido desconocido."
 
-#: cgi-bin/admin.c:2368
 msgid "A Samba password is required to export printer drivers"
-msgstr "Se requiere una contraseña Samba para exportar los controladores de impresora"
+msgstr ""
+"Se requiere una contraseña Samba para exportar los controladores de impresora"
 
-#: cgi-bin/admin.c:2364
 msgid "A Samba username is required to export printer drivers"
-msgstr "Se requiere un nombre de usuario Samba para exportar los controladores de impresora"
+msgstr ""
+"Se requiere un nombre de usuario Samba para exportar los controladores de "
+"impresora"
 
-#: scheduler/ipp.c:2283
 #, c-format
 msgid "A class named \"%s\" already exists."
 msgstr "Ya existe una clase llamada \"%s\"."
 
-#: scheduler/ipp.c:1004
 #, c-format
 msgid "A printer named \"%s\" already exists."
 msgstr "Ya existe una impresora llamada \"%s\"."
 
-#: ppdc/sample.c:15
 msgid "A0"
 msgstr "A0"
 
-#: ppdc/sample.c:16
 msgid "A0 Long Edge"
 msgstr "A0 lado largo"
 
-#: ppdc/sample.c:17
 msgid "A1"
 msgstr "A1"
 
-#: ppdc/sample.c:18
 msgid "A1 Long Edge"
 msgstr "A1 lado largo"
 
-#: ppdc/sample.c:37
 msgid "A10"
 msgstr "A10"
 
-#: ppdc/sample.c:19
 msgid "A2"
 msgstr "A2"
 
-#: ppdc/sample.c:20
 msgid "A2 Long Edge"
 msgstr "A2 lado largo"
 
-#: ppdc/sample.c:21
 msgid "A3"
 msgstr "A3"
 
-#: ppdc/sample.c:22
 msgid "A3 Long Edge"
 msgstr "A3 lado largo"
 
-#: ppdc/sample.c:23
 msgid "A3 Oversize"
 msgstr "A3 Extragrande"
 
-#: ppdc/sample.c:24
 msgid "A3 Oversize Long Edge"
 msgstr "A3 Extragrande lado largo"
 
-#: ppdc/sample.c:25
 msgid "A4"
 msgstr "A4"
 
-#: ppdc/sample.c:27
 msgid "A4 Long Edge"
 msgstr "A4 lado largo"
 
-#: ppdc/sample.c:26
 msgid "A4 Oversize"
 msgstr "A4 Extragrande"
 
-#: ppdc/sample.c:28
 msgid "A4 Small"
 msgstr "A4 Pequeño"
 
-#: ppdc/sample.c:29
 msgid "A5"
 msgstr "A5"
 
-#: ppdc/sample.c:31
 msgid "A5 Long Edge"
 msgstr "A5 lado largo"
 
-#: ppdc/sample.c:30
 msgid "A5 Oversize"
 msgstr "A5 Extragrande"
 
-#: ppdc/sample.c:32
 msgid "A6"
 msgstr "A6"
 
-#: ppdc/sample.c:33
 msgid "A6 Long Edge"
 msgstr "A6 lado largo"
 
-#: ppdc/sample.c:34
 msgid "A7"
 msgstr "A7"
 
-#: ppdc/sample.c:35
 msgid "A8"
 msgstr "A8"
 
-#: ppdc/sample.c:36
 msgid "A9"
 msgstr "A9"
 
-#: ppdc/sample.c:38
 msgid "ANSI A"
 msgstr "ANSI A"
 
-#: ppdc/sample.c:39
 msgid "ANSI B"
 msgstr "ANSI B"
 
-#: ppdc/sample.c:40
 msgid "ANSI C"
 msgstr "ANSI C"
 
-#: ppdc/sample.c:41
 msgid "ANSI D"
 msgstr "ANSI D"
 
-#: ppdc/sample.c:42
 msgid "ANSI E"
 msgstr "ANSI E"
 
-#: ppdc/sample.c:47
 msgid "ARCH C"
 msgstr "ARCH C"
 
-#: ppdc/sample.c:48
 msgid "ARCH C Long Edge"
 msgstr "ARCH C lado largo"
 
-#: ppdc/sample.c:49
 msgid "ARCH D"
 msgstr "ARCH D"
 
-#: ppdc/sample.c:50
 msgid "ARCH D Long Edge"
 msgstr "ARCH D lado largo"
 
-#: ppdc/sample.c:51
 msgid "ARCH E"
 msgstr "ARCH E"
 
-#: ppdc/sample.c:52
 msgid "ARCH E Long Edge"
 msgstr "ARCH E lado largo"
 
-#: cgi-bin/classes.c:169
-#: cgi-bin/printers.c:172
 msgid "Accept Jobs"
 msgstr "Aceptar trabajos"
 
-#: cups/http-support.c:1284
 msgid "Accepted"
 msgstr "Aceptado"
 
-#: cgi-bin/admin.c:570
 msgid "Add Class"
 msgstr "Añadir clase"
 
-#: cgi-bin/admin.c:882
 msgid "Add Printer"
 msgstr "Añadir impresora"
 
-#: cgi-bin/admin.c:444
-#: cgi-bin/admin.c:477
-#: cgi-bin/admin.c:525
-#: cgi-bin/admin.c:535
 msgid "Add RSS Subscription"
 msgstr "Añadir subscripción RSS"
 
-#: ppdc/sample.c:163
 msgid "Address"
 msgstr "Dirección"
 
-#: cgi-bin/admin.c:210
-#: cgi-bin/admin.c:284
-#: cgi-bin/admin.c:2745
 msgid "Administration"
 msgstr "Administración"
 
-#: ppdc/sample.c:429
 msgid "Always"
 msgstr "Siempre"
 
-#: backend/socket.c:129
 msgid "AppSocket/HP JetDirect"
 msgstr "AppSocket/HP JetDirect"
 
-#: ppdc/sample.c:450
 msgid "Applicator"
 msgstr "Aplicador"
 
-#: scheduler/ipp.c:1079
 #, c-format
 msgid "Attempt to set %s printer-state to bad value %d."
-msgstr "Se ha intentado cambiar el valor printer-state de %s a un valor incorrecto %d."
+msgstr ""
+"Se ha intentado cambiar el valor printer-state de %s a un valor incorrecto "
+"%d."
 
-#: scheduler/ipp.c:325
 #, c-format
 msgid "Attribute groups are out of order (%x < %x)."
 msgstr "Los grupos de atributos están desordenados (%x < %x)."
 
-#: ppdc/sample.c:126
 msgid "B0"
 msgstr "B0"
 
-#: ppdc/sample.c:127
 msgid "B1"
 msgstr "B1"
 
-#: ppdc/sample.c:137
 msgid "B10"
 msgstr "B10"
 
-#: ppdc/sample.c:128
 msgid "B2"
 msgstr "B2"
 
-#: ppdc/sample.c:129
 msgid "B3"
 msgstr "B3"
 
-#: ppdc/sample.c:130
 msgid "B4"
 msgstr "B4"
 
-#: ppdc/sample.c:131
 msgid "B5"
 msgstr "B5"
 
-#: ppdc/sample.c:132
 msgid "B5 Oversize"
 msgstr "A5 Extragrande"
 
-#: ppdc/sample.c:133
 msgid "B6"
 msgstr "B6"
 
-#: ppdc/sample.c:134
 msgid "B7"
 msgstr "B7"
 
-#: ppdc/sample.c:135
 msgid "B8"
 msgstr "B8"
 
-#: ppdc/sample.c:136
 msgid "B9"
 msgstr "B9"
 
-#: cups/dest.c:1680
+#, c-format
+msgid "Bad 'document-format' value \"%s\"."
+msgstr ""
+
 msgid "Bad NULL dests pointer"
 msgstr "Puntero destino NULLincorrecto"
 
-#: cups/ppd.c:345
 msgid "Bad OpenGroup"
 msgstr "OpenGroup incorrecto"
 
-#: cups/ppd.c:347
 msgid "Bad OpenUI/JCLOpenUI"
 msgstr "OpenUI/JCLOpenUI incorrecto"
 
-#: cups/ppd.c:349
 msgid "Bad OrderDependency"
 msgstr "OrderDependency incorrecto"
 
-#: cups/ppd-cache.c:148
-#: cups/ppd-cache.c:195
-#: cups/ppd-cache.c:233
-#: cups/ppd-cache.c:239
-#: cups/ppd-cache.c:255
-#: cups/ppd-cache.c:271
-#: cups/ppd-cache.c:280
-#: cups/ppd-cache.c:288
-#: cups/ppd-cache.c:305
-#: cups/ppd-cache.c:313
-#: cups/ppd-cache.c:328
-#: cups/ppd-cache.c:336
-#: cups/ppd-cache.c:354
-#: cups/ppd-cache.c:366
-#: cups/ppd-cache.c:381
-#: cups/ppd-cache.c:393
-#: cups/ppd-cache.c:415
-#: cups/ppd-cache.c:423
-#: cups/ppd-cache.c:441
-#: cups/ppd-cache.c:449
-#: cups/ppd-cache.c:464
-#: cups/ppd-cache.c:472
-#: cups/ppd-cache.c:490
-#: cups/ppd-cache.c:498
-#: cups/ppd-cache.c:525
-#: cups/ppd-cache.c:571
-#: cups/ppd-cache.c:579
-#: cups/ppd-cache.c:587
 msgid "Bad PPD cache file."
 msgstr "Archivo de caché PPD incorrecto."
 
-#: cups/http-support.c:1299
 msgid "Bad Request"
 msgstr "Petición incorrecta"
 
-#: cups/snmp.c:1002
 msgid "Bad SNMP version number"
 msgstr "Número de versión SNMP incorrecto"
 
-#: cups/ppd.c:350
 msgid "Bad UIConstraints"
 msgstr "UIConstraints incorrecto"
 
-#: scheduler/ipp.c:1380
 #, c-format
 msgid "Bad copies value %d."
 msgstr "Valor de copias %d incorrecto."
 
-#: cups/ppd.c:358
 msgid "Bad custom parameter"
 msgstr "Parámetro a medida incorrecto"
 
-#: cups/http-support.c:1451
-#: scheduler/ipp.c:2350
 #, c-format
 msgid "Bad device-uri \"%s\"."
 msgstr "device-uri \"%s\" incorrecto."
 
-#: scheduler/ipp.c:2391
 #, c-format
 msgid "Bad device-uri scheme \"%s\"."
 msgstr "Esquema device-uri \"%s\" incorrecto."
 
-#: scheduler/ipp.c:8224
-#: scheduler/ipp.c:8240
-#: scheduler/ipp.c:9454
-#: scheduler/ipp.c:10968
 #, c-format
 msgid "Bad document-format \"%s\"."
 msgstr "document-format \"%s\" incorrecto."
 
-#: scheduler/ipp.c:9470
 #, c-format
 msgid "Bad document-format-default \"%s\"."
 msgstr "document-format-default \"%s\" incorrecto."
 
-#: cups/util.c:929
 msgid "Bad filename buffer"
 msgstr "Nombre de archivo del búfer incorrecto"
 
-#: scheduler/ipp.c:10060
 msgid "Bad job-priority value."
 msgstr "Valor job-priority incorrecto."
 
-#: scheduler/ipp.c:1410
 #, c-format
 msgid "Bad job-sheets value \"%s\"."
 msgstr "Valor de job-sheets \"%s\" incorrecto."
 
-#: scheduler/ipp.c:1394
 msgid "Bad job-sheets value type."
 msgstr "Tipo de valor de job-sheets incorrecto."
 
-#: scheduler/ipp.c:10090
 msgid "Bad job-state value."
 msgstr "Valor job-state incorrecto."
 
-#: scheduler/ipp.c:2974
-#: scheduler/ipp.c:3426
-#: scheduler/ipp.c:6078
-#: scheduler/ipp.c:6225
-#: scheduler/ipp.c:7658
-#: scheduler/ipp.c:7927
-#: scheduler/ipp.c:8775
-#: scheduler/ipp.c:9001
-#: scheduler/ipp.c:9350
-#: scheduler/ipp.c:9953
 #, c-format
 msgid "Bad job-uri \"%s\"."
 msgstr "job-uri \"%s\" incorrecto."
 
-#: scheduler/ipp.c:2049
-#: scheduler/ipp.c:5622
 #, c-format
 msgid "Bad notify-pull-method \"%s\"."
 msgstr "notify-pull-method \"%s\" incorrecto."
 
-#: scheduler/ipp.c:2013
-#: scheduler/ipp.c:5586
 #, c-format
 msgid "Bad notify-recipient-uri \"%s\"."
 msgstr "notify-recipient-uri \"%s\" incorrecto."
 
-#: scheduler/ipp.c:1426
 #, c-format
 msgid "Bad number-up value %d."
 msgstr "Valor number-up (páginas por hoja) %d incorrecto."
 
-#: cups/adminutil.c:292
 #, c-format
 msgid "Bad option + choice on line %d."
 msgstr "Opción + preferencia incorrectas en línea %d."
 
-#: scheduler/ipp.c:1443
 #, c-format
 msgid "Bad page-ranges values %d-%d."
 msgstr "Valores de page-ranges %d-%d incorrectos."
 
-#: scheduler/ipp.c:2434
 #, c-format
 msgid "Bad port-monitor \"%s\"."
 msgstr "port-monitor \"%s\" incorrecto."
 
-#: cups/dest.c:676
-#: cups/dest.c:1333
 msgid "Bad printer URI."
 msgstr "URI de impresora incorrecto."
 
-#: scheduler/ipp.c:2495
 #, c-format
 msgid "Bad printer-state value %d."
 msgstr "Valor printer-state %d incorrecto."
 
-#: scheduler/ipp.c:293
 #, c-format
 msgid "Bad request ID %d."
 msgstr "Petición incorrecta de ID %d."
 
-#: scheduler/ipp.c:278
 #, c-format
 msgid "Bad request version number %d.%d."
 msgstr "Petición incorrecta de número de versión %d.%d."
 
-#: cgi-bin/admin.c:1484
 msgid "Bad subscription ID"
 msgstr "ID de subscripción incorrecto"
 
-#: cups/ppd.c:360
 msgid "Bad value string"
 msgstr "Cadena de valores incorrecta"
 
-#: cgi-bin/admin.c:3290
-#: cgi-bin/admin.c:3536
 msgid "Banners"
 msgstr "Rótulos"
 
-#: ppdc/sample.c:287
 msgid "Bond Paper"
 msgstr "Papel de cartas"
 
-#: backend/usb-darwin.c:1846
 #, c-format
 msgid "Boolean expected for waiteof option \"%s\"."
 msgstr "Se esperaba un valor lógico para la opción waiteof \"%s\"."
 
-#: filter/pstops.c:2057
 msgid "Buffer overflow detected, aborting."
 msgstr "Se ha detectado un desbordamiento de buffer, cancelando."
 
-#: ppdc/sample.c:254
 msgid "CMYK"
 msgstr "CMYK"
 
-#: ppdc/sample.c:363
 msgid "CPCL Label Printer"
 msgstr "Impresora de etiquetas CPCL"
 
-#: cgi-bin/admin.c:1485
-#: cgi-bin/admin.c:1524
-#: cgi-bin/admin.c:1534
 msgid "Cancel RSS Subscription"
 msgstr "Cancelar subscripción RSS"
 
-#: backend/ipp.c:1921
 msgid "Canceling print job."
 msgstr "Cancelando trabajo de impresión."
 
-#: scheduler/ipp.c:2475
 msgid "Cannot share a remote Kerberized printer."
 msgstr "No se puede compartir una impresora remota Kerberizada."
 
-#: ppdc/sample.c:279
 msgid "Cassette"
 msgstr "Casete"
 
-#: cgi-bin/admin.c:1655
-#: cgi-bin/admin.c:1797
-#: cgi-bin/admin.c:1810
-#: cgi-bin/admin.c:1821
 msgid "Change Settings"
 msgstr "Cambiar configuración"
 
-#: scheduler/ipp.c:2061
-#: scheduler/ipp.c:5634
 #, c-format
 msgid "Character set \"%s\" not supported."
 msgstr "No se admite el juego de caracteres \"%s\"."
 
-#: cgi-bin/classes.c:195
-#: cgi-bin/classes.c:322
 msgid "Classes"
 msgstr "Clases"
 
-#: cgi-bin/printers.c:182
 msgid "Clean Print Heads"
 msgstr "Limpiar cabezales de impresión"
 
-#: scheduler/ipp.c:3878
 msgid "Close-Job doesn't support the job-uri attribute."
 msgstr "Close-Job no admite el atributo job-uri."
 
-#: ppdc/sample.c:282
 msgid "Color"
 msgstr "Color"
 
-#: ppdc/sample.c:253
 msgid "Color Mode"
 msgstr "Modo de color"
 
-#: berkeley/lpc.c:204
 msgid ""
 "Commands may be abbreviated.  Commands are:\n"
 "\n"
@@ -3275,101 +2441,67 @@ msgstr ""
 "\n"
 "exit    help    quit    status  ?"
 
-#: cups/snmp.c:1006
 msgid "Community name uses indefinite length"
 msgstr "Nombre de comunidad usa una longitud indefinida"
 
-#: backend/ipp.c:786
-#: backend/lpd.c:871
-#: backend/socket.c:395
 msgid "Connected to printer."
 msgstr "Conectado a la impresora."
 
-#: backend/ipp.c:691
-#: backend/lpd.c:694
-#: backend/socket.c:314
 msgid "Connecting to printer."
 msgstr "Conectando a la impresora."
 
-#: cups/http-support.c:1272
 msgid "Continue"
 msgstr "Continuar"
 
-#: ppdc/sample.c:365
 msgid "Continuous"
 msgstr "Continuo"
 
-#: backend/lpd.c:1020
-#: backend/lpd.c:1152
 msgid "Control file sent successfully."
 msgstr "Archivo de control enviado correctamente."
 
-#: backend/ipp.c:1233
-#: backend/lpd.c:464
 msgid "Copying print data."
 msgstr "Copiando datos de impresión."
 
-#: cups/http-support.c:1281
 msgid "Created"
 msgstr "Creado"
 
-#: cups/ppd.c:1113
-#: cups/ppd.c:1153
-#: cups/ppd.c:1398
-#: cups/ppd.c:1501
 msgid "Custom"
 msgstr "A medida"
 
-#: ppdc/sample.c:359
 msgid "CustominCutInterval"
 msgstr "CustominCutInterval"
 
-#: ppdc/sample.c:357
 msgid "CustominTearInterval"
 msgstr "CustominTearInterval"
 
-#: ppdc/sample.c:343
 msgid "Cut"
 msgstr "Cortar"
 
-#: ppdc/sample.c:451
 msgid "Cutter"
 msgstr "Cortadora"
 
-#: ppdc/sample.c:239
 msgid "Dark"
 msgstr "Oscuro"
 
-#: ppdc/sample.c:235
 msgid "Darkness"
 msgstr "Oscuridad"
 
-#: backend/lpd.c:1105
 msgid "Data file sent successfully."
 msgstr "Archivo de datos enviado correctamente."
 
-#: cgi-bin/admin.c:2094
-#: cgi-bin/admin.c:2105
-#: cgi-bin/admin.c:2150
 msgid "Delete Class"
 msgstr "Borrar clase"
 
-#: cgi-bin/admin.c:2179
-#: cgi-bin/admin.c:2190
-#: cgi-bin/admin.c:2235
 msgid "Delete Printer"
 msgstr "Borrar impresora"
 
-#: ppdc/sample.c:281
 msgid "DeskJet Series"
 msgstr "DeskJet Series"
 
-#: scheduler/ipp.c:1346
 #, c-format
 msgid "Destination \"%s\" is not accepting jobs."
 msgstr "El destino %s no acepta trabajos."
 
-#: systemv/lpinfo.c:300
 #, c-format
 msgid ""
 "Device: uri = %s\n"
@@ -3386,988 +2518,724 @@ msgstr ""
 "        id dispositivo= %s\n"
 "        ubicación = %s"
 
-#: ppdc/sample.c:436
 msgid "Direct Thermal Media"
 msgstr "Soporte térmico directo"
 
-#: cups/file.c:296
 #, c-format
 msgid "Directory \"%s\" contains a relative path."
 msgstr "El directorio \"%s\" contiene una ruta relativa."
 
-#: cups/file.c:268
 #, c-format
 msgid "Directory \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
 msgstr "El directorio \"%s\" tiene permisos no seguros (0%o/uid=%d/gid=%d)."
 
-#: cups/file.c:285
 #, c-format
 msgid "Directory \"%s\" is a file."
 msgstr "El directorio \"%s\" es un archivo."
 
-#: cups/file.c:256
 #, c-format
 msgid "Directory \"%s\" not available: %s"
 msgstr "Directorio \"%s\" no disponible: %s"
 
-#: cups/file.c:241
 #, c-format
 msgid "Directory \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
 msgstr "Permisos del directorio \"%s\" OK (0%o/uid=%d/gid=%d)."
 
-#: ppdc/sample.c:345
 msgid "Disabled"
 msgstr "Deshabilitado"
 
-#: scheduler/ipp.c:6127
 #, c-format
 msgid "Document #%d does not exist in job #%d."
 msgstr "El documento #%d no existe en el trabajo #%d."
 
-#: ppdc/sample.c:275
 msgid "Duplexer"
 msgstr "Unidad de impresión dúplex"
 
-#: ppdc/sample.c:229
 msgid "Dymo"
 msgstr "Dymo"
 
-#: ppdc/sample.c:431
 msgid "EPL1 Label Printer"
 msgstr "Impresora de etiquetas EPL1"
 
-#: ppdc/sample.c:434
 msgid "EPL2 Label Printer"
 msgstr "Impresora de etiquetas EPL2"
 
-#: cgi-bin/admin.c:1849
-#: cgi-bin/admin.c:1861
-#: cgi-bin/admin.c:1915
-#: cgi-bin/admin.c:1922
-#: cgi-bin/admin.c:1957
-#: cgi-bin/admin.c:1970
-#: cgi-bin/admin.c:1994
-#: cgi-bin/admin.c:2067
 msgid "Edit Configuration File"
 msgstr "Editar archivo de configuración"
 
-#: cups/adminutil.c:337
 msgid "Empty PPD file."
 msgstr "Archivo PPD vacío."
 
 #. TRANSLATORS: Banner/cover sheet after the print job.
-#: cgi-bin/admin.c:3561
 msgid "Ending Banner"
 msgstr "Rótulo final"
 
-#: ppdc/sample.c:2
 msgid "English"
 msgstr "Spanish"
 
-#: systemv/lppasswd.c:193
 msgid "Enter old password:"
 msgstr "Introduzca la contraseña antigua:"
 
-#: systemv/lppasswd.c:224
 msgid "Enter password again:"
 msgstr "Introduzca nuevamente la contraseña:"
 
-#: systemv/lppasswd.c:212
 msgid "Enter password:"
 msgstr "Introduzca la contraseña:"
 
-#: scheduler/client.c:2427
-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 "Introduzca su nombre de usuario y contraseña o el nombre de usuario y contraseña de root para poder acceder a esta página. Si está usando autentificación Kerberos, asegúrese de que tiene un ticket Kerberos válido."
+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 ""
+"Introduzca su nombre de usuario y contraseña o el nombre de usuario y "
+"contraseña de root para poder acceder a esta página. Si está usando "
+"autentificación Kerberos, asegúrese de que tiene un ticket Kerberos válido."
 
-#: ppdc/sample.c:73
 msgid "Envelope #10 "
 msgstr "Sobre #10"
 
-#: ppdc/sample.c:74
 msgid "Envelope #11"
 msgstr "Sobre #11"
 
-#: ppdc/sample.c:75
 msgid "Envelope #12"
 msgstr "Sobre #12"
 
-#: ppdc/sample.c:76
 msgid "Envelope #14"
 msgstr "Sobre #14"
 
-#: ppdc/sample.c:77
 msgid "Envelope #9"
 msgstr "Sobre #9"
 
-#: ppdc/sample.c:89
 msgid "Envelope B4"
 msgstr "Sobre B4"
 
-#: ppdc/sample.c:90
 msgid "Envelope B5"
 msgstr "Sobre B5"
 
-#: ppdc/sample.c:91
 msgid "Envelope B6"
 msgstr "Sobre B6"
 
-#: ppdc/sample.c:78
 msgid "Envelope C0"
 msgstr "Sobre C0"
 
-#: ppdc/sample.c:79
 msgid "Envelope C1"
 msgstr "Sobre C1"
 
-#: ppdc/sample.c:80
 msgid "Envelope C2"
 msgstr "Sobre C2"
 
-#: ppdc/sample.c:81
 msgid "Envelope C3"
 msgstr "Sobre C3"
 
-#: ppdc/sample.c:67
 msgid "Envelope C4"
 msgstr "Sobre C4"
 
-#: ppdc/sample.c:68
 msgid "Envelope C5"
 msgstr "Sobre C5"
 
-#: ppdc/sample.c:69
 msgid "Envelope C6"
 msgstr "Sobre C6"
 
-#: ppdc/sample.c:82
 msgid "Envelope C65"
 msgstr "Sobre C65"
 
-#: ppdc/sample.c:83
 msgid "Envelope C7"
 msgstr "Sobre C7"
 
-#: ppdc/sample.c:84
 msgid "Envelope Choukei 3"
 msgstr "Sobre Choukei 3"
 
-#: ppdc/sample.c:85
 msgid "Envelope Choukei 3 Long Edge"
 msgstr "Sobre Choukei 3 lado largo"
 
-#: ppdc/sample.c:86
 msgid "Envelope Choukei 4"
 msgstr "Sobre Choukei 4"
 
-#: ppdc/sample.c:87
 msgid "Envelope Choukei 4 Long Edge"
 msgstr "Sobre Choukei 4 lado largo"
 
-#: ppdc/sample.c:70
 msgid "Envelope DL"
 msgstr "Sobre DL"
 
-#: ppdc/sample.c:269
 msgid "Envelope Feed"
 msgstr "Alimentador de sobre"
 
-#: ppdc/sample.c:88
 msgid "Envelope Invite"
 msgstr "Sobre Invitación"
 
-#: ppdc/sample.c:92
 msgid "Envelope Italian"
 msgstr "Sobre Italiano"
 
-#: ppdc/sample.c:93
 msgid "Envelope Kaku2"
 msgstr "Sobre Kaku2"
 
-#: ppdc/sample.c:94
 msgid "Envelope Kaku2 Long Edge"
 msgstr "Sobre Kaku2 lado largo"
 
-#: ppdc/sample.c:95
 msgid "Envelope Kaku3"
 msgstr "Sobre Kaku3"
 
-#: ppdc/sample.c:96
 msgid "Envelope Kaku3 Long Edge"
 msgstr "Sobre Kaku3 lado largo"
 
-#: ppdc/sample.c:97
 msgid "Envelope Monarch"
 msgstr "Sobre Monarch"
 
-#: ppdc/sample.c:99
 msgid "Envelope PRC1 "
 msgstr "Sobre PRC1"
 
-#: ppdc/sample.c:100
 msgid "Envelope PRC1 Long Edge"
 msgstr "Sobre PRC1 lado largo"
 
-#: ppdc/sample.c:117
 msgid "Envelope PRC10"
 msgstr "Sobre PRC10"
 
-#: ppdc/sample.c:118
 msgid "Envelope PRC10 Long Edge"
 msgstr "Sobre PRC10 lado largo"
 
-#: ppdc/sample.c:101
 msgid "Envelope PRC2"
 msgstr "Sobre PRC2"
 
-#: ppdc/sample.c:102
 msgid "Envelope PRC2 Long Edge"
 msgstr "Sobre PRC2 lado largo"
 
-#: ppdc/sample.c:103
 msgid "Envelope PRC3"
 msgstr "Sobre PRC3"
 
-#: ppdc/sample.c:104
 msgid "Envelope PRC3 Long Edge"
 msgstr "Sobre PRC3 lado largo"
 
-#: ppdc/sample.c:105
 msgid "Envelope PRC4"
 msgstr "Sobre PRC4"
 
-#: ppdc/sample.c:106
 msgid "Envelope PRC4 Long Edge"
 msgstr "Sobre PRC4 lado largo"
 
-#: ppdc/sample.c:108
 msgid "Envelope PRC5 Long Edge"
 msgstr "Sobre PRC5 lado largo"
 
-#: ppdc/sample.c:107
 msgid "Envelope PRC5PRC5"
 msgstr "Sobre PRC5PRC5"
 
-#: ppdc/sample.c:109
 msgid "Envelope PRC6"
 msgstr "Sobre PRC6"
 
-#: ppdc/sample.c:110
 msgid "Envelope PRC6 Long Edge"
 msgstr "Sobre PRC6 lado largo"
 
-#: ppdc/sample.c:111
 msgid "Envelope PRC7"
 msgstr "Sobre PRC7"
 
-#: ppdc/sample.c:112
 msgid "Envelope PRC7 Long Edge"
 msgstr "Sobre PRC7 lado largo"
 
-#: ppdc/sample.c:113
 msgid "Envelope PRC8"
 msgstr "Sobre PRC8"
 
-#: ppdc/sample.c:114
 msgid "Envelope PRC8 Long Edge"
 msgstr "Sobre PRC8 lado largo"
 
-#: ppdc/sample.c:115
 msgid "Envelope PRC9"
 msgstr "Sobre PRC9"
 
-#: ppdc/sample.c:116
 msgid "Envelope PRC9 Long Edge"
 msgstr "Sobre PRC9 lado largo"
 
-#: ppdc/sample.c:98
 msgid "Envelope Personal"
 msgstr "Sobre Personal"
 
-#: ppdc/sample.c:119
 msgid "Envelope You4"
 msgstr "Sobre You4"
 
-#: ppdc/sample.c:120
 msgid "Envelope You4 Long Edge"
 msgstr "Sobre You4 lado largo"
 
-#: ppdc/sample.c:240
 msgid "Epson"
 msgstr "Epson"
 
-#: cgi-bin/admin.c:3604
 msgid "Error Policy"
 msgstr "Directiva de error"
 
-#: filter/rastertopwg.c:403
-#: filter/rastertopwg.c:418
-#: filter/rastertopwg.c:429
-#: filter/rastertopwg.c:440
 msgid "Error sending raster data."
 msgstr "Error enviando trama de datos (raster)."
 
-#: systemv/lpinfo.c:103
-#: systemv/lpmove.c:88
 msgid "Error: need hostname after \"-h\" option."
 msgstr "Error: se necesita un nombre de ordenador tras la opción \"-h\"."
 
-#: ppdc/sample.c:355
 msgid "Every 10 Labels"
 msgstr "Cada 10 etiquetas"
 
-#: ppdc/sample.c:347
 msgid "Every 2 Labels"
 msgstr "Cada 2 etiquetas"
 
-#: ppdc/sample.c:348
 msgid "Every 3 Labels"
 msgstr "Cada 3 etiquetas"
 
-#: ppdc/sample.c:349
 msgid "Every 4 Labels"
 msgstr "Cada 4 etiquetas"
 
-#: ppdc/sample.c:350
 msgid "Every 5 Labels"
 msgstr "Cada 5 etiquetas"
 
-#: ppdc/sample.c:351
 msgid "Every 6 Labels"
 msgstr "Cada 6 etiquetas"
 
-#: ppdc/sample.c:352
 msgid "Every 7 Labels"
 msgstr "Cada 7 etiquetas"
 
-#: ppdc/sample.c:353
 msgid "Every 8 Labels"
 msgstr "Cada 8 etiquetas"
 
-#: ppdc/sample.c:354
 msgid "Every 9 Labels"
 msgstr "Cada 9 etiquetas"
 
-#: ppdc/sample.c:346
 msgid "Every Label"
 msgstr "Cada etiqueta"
 
-#: ppdc/sample.c:121
 msgid "Executive"
 msgstr "Ejecutivo"
 
-#: cups/http-support.c:1327
 msgid "Expectation Failed"
 msgstr "Lo que se esperaba, falló."
 
-#: cgi-bin/admin.c:2356
-#: cgi-bin/admin.c:2375
 msgid "Export Printers to Samba"
 msgstr "Exportar impresoras a Samba"
 
-#: systemv/cupstestdsc.c:172
-#: systemv/cupstestdsc.c:189
-#: systemv/cupstestdsc.c:214
-#: systemv/cupstestdsc.c:231
-#: systemv/cupstestdsc.c:255
-#: systemv/cupstestdsc.c:273
-#: systemv/cupstestdsc.c:302
-#: systemv/cupstestdsc.c:339
-#: systemv/cupstestdsc.c:349
-#: systemv/cupstestdsc.c:359
-#: systemv/cupstestdsc.c:369
-#: systemv/cupstestdsc.c:379
-#: systemv/cupstestdsc.c:387
 msgid "FAIL"
 msgstr "FALLO"
 
-#: ppdc/sample.c:122
 msgid "FanFold German"
 msgstr "FanFold alemán"
 
-#: ppdc/sample.c:123
 msgid "FanFold Legal German"
 msgstr "FanFold Legal alemán"
 
-#: ppdc/sample.c:124
 msgid "Fanfold US"
 msgstr "FanFold de EE.UU"
 
-#: cups/file.c:300
 #, c-format
 msgid "File \"%s\" contains a relative path."
 msgstr "El archivo \"%s\" contiene una ruta relativa."
 
-#: cups/file.c:275
 #, c-format
 msgid "File \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
 msgstr "El archivo \"%s\" tiene permisos no seguros (0%o/uid=%d/gid=%d)."
 
-#: cups/file.c:289
 #, c-format
 msgid "File \"%s\" is a directory."
 msgstr "El archivo \"%s\" es un directorio."
 
-#: cups/file.c:261
 #, c-format
 msgid "File \"%s\" not available: %s"
 msgstr "Archivo \"%s\" no disponible: %s"
 
-#: cups/file.c:247
 #, c-format
 msgid "File \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
 msgstr "Permisos del archivo \"%s\" OK (0%o/uid=%d/gid=%d)."
 
-#: ppdc/sample.c:169
 msgid "File Folder "
 msgstr "Carpeta de archivo"
 
-#: scheduler/ipp.c:2370
 #, c-format
-msgid "File device URIs have been disabled. To enable, see the FileDevice directive in \"%s/cupsd.conf\"."
-msgstr "Los URIs del dispositivo de archivo han sido deshabilitados. Para habilitarlos, vea la directiva FileDevice en \"%s/cupsd.conf\"."
+msgid ""
+"File device URIs have been disabled. To enable, see the FileDevice directive "
+"in \"%s/cupsd.conf\"."
+msgstr ""
+"Los URIs del dispositivo de archivo han sido deshabilitados. Para "
+"habilitarlos, vea la directiva FileDevice en \"%s/cupsd.conf\"."
 
-#: filter/rastertoepson.c:1117
-#: filter/rastertohp.c:845
-#: filter/rastertolabel.c:1273
 #, c-format
 msgid "Finished page %d."
 msgstr "Acabada la página %d."
 
-#: ppdc/sample.c:125
 msgid "Folio"
 msgstr "Folio"
 
-#: cups/http-support.c:1306
 msgid "Forbidden"
 msgstr "Prohibido"
 
-#: cups/ppd.c:742
-#: cups/ppd.c:1302
 msgid "General"
 msgstr "General"
 
-#: ppdc/sample.c:259
 msgid "Generic"
 msgstr "Genérico"
 
-#: cups/snmp.c:1016
 msgid "Get-Response-PDU uses indefinite length"
 msgstr "Get-Response-PDU usa una longitud indefinida"
 
-#: ppdc/sample.c:290
 msgid "Glossy Paper"
 msgstr "Papel satinado"
 
-#: scheduler/ipp.c:2952
-#: scheduler/ipp.c:3352
-#: scheduler/ipp.c:3890
-#: scheduler/ipp.c:6056
-#: scheduler/ipp.c:6203
-#: scheduler/ipp.c:7635
-#: scheduler/ipp.c:8753
-#: scheduler/ipp.c:8979
-#: scheduler/ipp.c:9328
-#: scheduler/ipp.c:9931
 msgid "Got a printer-uri attribute but no job-id."
 msgstr "Se ha obtenido el atributo printer-uri pero no el job-id."
 
-#: ppdc/sample.c:255
 msgid "Grayscale"
 msgstr "Escale de grises"
 
-#: ppdc/sample.c:280
 msgid "HP"
 msgstr "HP"
 
-#: ppdc/sample.c:170
 msgid "Hanging Folder"
 msgstr "Carpeta colgante"
 
-#: cgi-bin/help.c:143
 msgid "Help file not in index."
 msgstr "El archivo de ayuda no está en el índice"
 
-#: cups/ipp.c:2687
-#: cups/ipp.c:2714
-#: cups/ipp.c:2737
 msgid "IPP 1setOf attribute with incompatible value tags."
 msgstr "IPP atributo 1setOf con etiquetas de valor incompatibles"
 
-#: cups/ipp.c:2650
 msgid "IPP attribute has no name."
 msgstr "IPP atributo sin nombre"
 
-#: cups/ipp.c:5487
 msgid "IPP attribute is not a member of the message."
 msgstr "El atributo IPP no es un miembro del mensaje."
 
-#: cups/ipp.c:3083
 msgid "IPP begCollection value not 0 bytes."
 msgstr "IPP el valor begCollection no es de 0 bytes."
 
-#: cups/ipp.c:2873
 msgid "IPP boolean value not 1 byte."
 msgstr "IPP el valor lógico no es de 1 byte."
 
-#: cups/ipp.c:2934
 msgid "IPP date value not 11 bytes."
 msgstr "IPP el valor de fecha no es de 11 bytes."
 
-#: cups/ipp.c:3104
 msgid "IPP endCollection value not 0 bytes."
 msgstr "IPP el valor endCollection no es de 0 bytes."
 
-#: cups/ipp.c:2848
 msgid "IPP enum value not 4 bytes."
 msgstr "IPP el valor enum no es de 4 bytes."
 
-#: cups/ipp.c:2579
 msgid "IPP extension tag larger than 0x7FFFFFFF."
 msgstr "IPP etiqueta de extensión mayor de 0x7FFFFFFF."
 
-#: cups/ipp.c:2845
 msgid "IPP integer value not 4 bytes."
 msgstr "IPP el valor entero no es de 4 bytes."
 
-#: cups/ipp.c:3045
 msgid "IPP language length overflows value."
 msgstr "IPP la longitud del idioma sobrepasa el valor."
 
-#: cups/ipp.c:2764
+msgid "IPP language length too large."
+msgstr ""
+
 msgid "IPP member name is not empty."
 msgstr "IPP el nombre del miembro no está vacío."
 
-#: cups/ipp.c:3122
 msgid "IPP memberName value is empty."
 msgstr "IPP el valor memberName está vacío."
 
-#: cups/ipp.c:2633
+msgid "IPP memberName with no attribute."
+msgstr ""
+
 msgid "IPP name larger than 32767 bytes."
 msgstr "IPP nombre mayor de 32767 bytes."
 
-#: cups/ipp.c:3011
 msgid "IPP nameWithLanguage value less than minimum 4 bytes."
 msgstr "IPP el valor nameWithLanguage menor del mínimo de 4 bytes."
 
-#: cups/ipp.c:2979
+msgid "IPP nameWithLanguage value more than maximum 1090 bytes."
+msgstr ""
+
+msgid "IPP octetString length too large."
+msgstr ""
+
 msgid "IPP rangeOfInteger value not 8 bytes."
 msgstr "IPP el valor rangeOfInteger no es de 8 bytes."
 
-#: cups/ipp.c:2952
 msgid "IPP resolution value not 9 bytes."
 msgstr "IPP el valor de la resolución no es de 9 bytes."
 
-#: cups/ipp.c:3063
 msgid "IPP string length overflows value."
 msgstr "IPP la longitud de la cadena sobrepasa el valor."
 
-#: cups/ipp.c:3007
+msgid "IPP string value too large."
+msgstr ""
+
+msgid "IPP text length too large."
+msgstr ""
+
 msgid "IPP textWithLanguage value less than minimum 4 bytes."
 msgstr "IPP el valor textWithLanguage menor del mínimo de 4 bytes."
 
-#: cups/ipp.c:2831
+msgid "IPP textWithLanguage value more than maximum 1090 bytes."
+msgstr ""
+
 msgid "IPP value larger than 32767 bytes."
 msgstr "IPP valor mayor de 32767 bytes."
 
-#: ppdc/sample.c:1
 msgid "ISOLatin1"
 msgstr "UTF-8"
 
-#: cups/ppd.c:353
 msgid "Illegal control character"
 msgstr "Carácter de control ilegal"
 
-#: cups/ppd.c:354
 msgid "Illegal main keyword string"
 msgstr "Cadena de clave principal ilegal"
 
-#: cups/ppd.c:355
 msgid "Illegal option keyword string"
 msgstr "Cadena de clave de opción ilegal"
 
-#: cups/ppd.c:356
 msgid "Illegal translation string"
 msgstr "Cadena de traducción ilegal"
 
-#: cups/ppd.c:357
 msgid "Illegal whitespace character"
 msgstr "Carácter de espacio en blanco ilegal"
 
-#: ppdc/sample.c:274
 msgid "Installable Options"
 msgstr "Opciones instalables"
 
-#: ppdc/sample.c:277
 msgid "Installed"
 msgstr "Instalada"
 
-#: ppdc/sample.c:293
 msgid "IntelliBar Label Printer"
 msgstr "Impresora de etiquetas IntelliBar"
 
-#: ppdc/sample.c:292
 msgid "Intellitech"
 msgstr "Intellitech"
 
-#: cups/http-support.c:1333
 msgid "Internal Server Error"
 msgstr "Error interno del servidor"
 
-#: cups/ppd.c:344
 msgid "Internal error"
 msgstr "Error interno"
 
-#: ppdc/sample.c:167
 msgid "Internet Postage 2-Part"
 msgstr "Correo por Internet Parte-2"
 
-#: ppdc/sample.c:168
 msgid "Internet Postage 3-Part"
 msgstr "Correo por Internet Parte-3"
 
-#: backend/ipp.c:307
 msgid "Internet Printing Protocol"
 msgstr "Protocolo de Impresión de Internet IPP"
 
-#: cups/dest-options.c:839
 msgid "Invalid media size."
 msgstr "Tamaño del papel no válido"
 
-#: filter/commandtops.c:125
 #, c-format
 msgid "Invalid printer command \"%s\"."
 msgstr "Comando de impresora \"%s\" no válido."
 
-#: cups/ppd.c:1420
 msgid "JCL"
 msgstr "JCL"
 
-#: ppdc/sample.c:53
 msgid "JIS B0"
 msgstr "JIS B0"
 
-#: ppdc/sample.c:55
 msgid "JIS B1"
 msgstr "JIS B1"
 
-#: ppdc/sample.c:54
 msgid "JIS B10"
 msgstr "JIS B10"
 
-#: ppdc/sample.c:56
 msgid "JIS B2"
 msgstr "JIS B2"
 
-#: ppdc/sample.c:57
 msgid "JIS B3"
 msgstr "JIS B3"
 
-#: ppdc/sample.c:58
 msgid "JIS B4"
 msgstr "JIS B4"
 
-#: ppdc/sample.c:59
 msgid "JIS B4 Long Edge"
 msgstr "JIS B4 lado largo"
 
-#: ppdc/sample.c:60
 msgid "JIS B5"
 msgstr "JIS B5"
 
-#: ppdc/sample.c:61
 msgid "JIS B5 Long Edge"
 msgstr "JIS B5 lado largo"
 
-#: ppdc/sample.c:62
 msgid "JIS B6"
 msgstr "JIS B6"
 
-#: ppdc/sample.c:63
 msgid "JIS B6 Long Edge"
 msgstr "JIS B6 lado largo"
 
-#: ppdc/sample.c:64
 msgid "JIS B7"
 msgstr "JIS B7"
 
-#: ppdc/sample.c:65
 msgid "JIS B8"
 msgstr "JIS B8"
 
-#: ppdc/sample.c:66
 msgid "JIS B9"
 msgstr "JIS B9"
 
-#: scheduler/ipp.c:9051
 #, c-format
 msgid "Job #%d cannot be restarted - no files."
 msgstr "El trabajo #%d no puede ser reiniciado - no hay archivos."
 
-#: scheduler/ipp.c:2992
-#: scheduler/ipp.c:3222
-#: scheduler/ipp.c:3277
-#: scheduler/ipp.c:3454
-#: scheduler/ipp.c:3900
-#: scheduler/ipp.c:5720
-#: scheduler/ipp.c:6096
-#: scheduler/ipp.c:6243
-#: scheduler/ipp.c:6543
-#: scheduler/ipp.c:7482
-#: scheduler/ipp.c:7504
-#: scheduler/ipp.c:7676
-#: scheduler/ipp.c:7901
-#: scheduler/ipp.c:7944
-#: scheduler/ipp.c:8793
-#: scheduler/ipp.c:9019
-#: scheduler/ipp.c:9368
-#: scheduler/ipp.c:9971
 #, c-format
 msgid "Job #%d does not exist."
 msgstr "El trabajo #%d no existe."
 
-#: scheduler/ipp.c:3486
 #, c-format
 msgid "Job #%d is already aborted - can't cancel."
 msgstr "El trabajo #%d ya está anulado - no se puede cancelar."
 
-#: scheduler/ipp.c:3480
 #, c-format
 msgid "Job #%d is already canceled - can't cancel."
 msgstr "El trabajo #%d ya está cancelado - no se puede cancelar."
 
-#: scheduler/ipp.c:3492
 #, c-format
 msgid "Job #%d is already completed - can't cancel."
 msgstr "El trabajo #%d ya ha sido completado - no se puede cancelar."
 
-#: scheduler/ipp.c:7702
-#: scheduler/ipp.c:7986
-#: scheduler/ipp.c:9986
 #, c-format
 msgid "Job #%d is finished and cannot be altered."
 msgstr "El trabajo #%d ha terminado y no puede ser modificado."
 
-#: scheduler/ipp.c:9033
 #, c-format
 msgid "Job #%d is not complete."
 msgstr "El trabajo #%d no ha sido completado."
 
-#: scheduler/ipp.c:3007
 #, c-format
 msgid "Job #%d is not held for authentication."
 msgstr "El trabajo #%d no está retenido para autentificación."
 
-#: scheduler/ipp.c:8807
 #, c-format
 msgid "Job #%d is not held."
 msgstr "El trabajo #%d no está retenido."
 
-#: cgi-bin/ipp-var.c:1055
 msgid "Job Completed"
 msgstr "Trabajo completado"
 
-#: cgi-bin/ipp-var.c:1053
 msgid "Job Created"
 msgstr "Trabajo creado"
 
-#: cgi-bin/ipp-var.c:1059
 msgid "Job Options Changed"
 msgstr "Opciones de trabajo cambiadas"
 
-#: cgi-bin/ipp-var.c:1057
 msgid "Job Stopped"
 msgstr "Trabajo detenido"
 
-#: scheduler/ipp.c:10068
 msgid "Job is completed and cannot be changed."
 msgstr "El trabajo está terminado y no puede ser cambiado."
 
-#: cgi-bin/jobs.c:198
 msgid "Job operation failed"
 msgstr "La operación del trabajo ha fallado"
 
-#: scheduler/ipp.c:10104
-#: scheduler/ipp.c:10123
-#: scheduler/ipp.c:10134
 msgid "Job state cannot be changed."
 msgstr "No se puede cambiar el estado del trabajo."
 
-#: scheduler/ipp.c:8899
 msgid "Job subscriptions cannot be renewed."
 msgstr "Las suscripciones de trabajos no han podido ser renovadas."
 
-#: cgi-bin/jobs.c:103
-#: cgi-bin/jobs.c:114
-#: cgi-bin/jobs.c:195
 msgid "Jobs"
 msgstr "Trabajos"
 
-#: backend/lpd.c:185
 msgid "LPD/LPR Host or Printer"
 msgstr "Equipo o impresora LPD/LPR"
 
-#: ppdc/sample.c:230
 msgid "Label Printer"
 msgstr "Impresora de etiquetas"
 
-#: ppdc/sample.c:446
 msgid "Label Top"
 msgstr "Parte superior de la etiqueta"
 
-#: scheduler/ipp.c:2070
-#: scheduler/ipp.c:5643
 #, c-format
 msgid "Language \"%s\" not supported."
 msgstr "No se admite el uso del idioma \"%s\"."
 
-#: ppdc/sample.c:164
 msgid "Large Address"
 msgstr "Dirección grande"
 
-#: ppdc/sample.c:291
 msgid "LaserJet Series PCL 4/5"
 msgstr "LaserJet Series PCL 4/5"
 
-#: ppdc/sample.c:43
 msgid "Letter Oversize"
 msgstr "Carta Extragrande"
 
-#: ppdc/sample.c:44
 msgid "Letter Oversize Long Edge"
 msgstr "Carta Extragrande lado largo"
 
-#: ppdc/sample.c:236
 msgid "Light"
 msgstr "Ligero"
 
-#: cups/ppd.c:352
 msgid "Line longer than the maximum allowed (255 characters)"
 msgstr "Línea más larga que el máximo permitido (255 caracteres)"
 
-#: cgi-bin/admin.c:2393
 msgid "List Available Printers"
 msgstr "Listar impresoras disponibles"
 
-#: ppdc/sample.c:272
 msgid "Long-Edge (Portrait)"
 msgstr "Lado largo (retrato)"
 
-#: cups/http-support.c:1558
 msgid "Looking for printer."
 msgstr "Buscando impresora."
 
-#: ppdc/sample.c:268
 msgid "Manual Feed"
 msgstr "Alimentación manual"
 
-#: cups/ppd.c:789
-#: cups/ppd.c:1357
 msgid "Media Size"
 msgstr "Tamaño de papel"
 
-#: cups/ppd.c:793
-#: cups/ppd.c:1361
-#: ppdc/sample.c:262
 msgid "Media Source"
 msgstr "Fuente del papel"
 
-#: ppdc/sample.c:364
 msgid "Media Tracking"
 msgstr "Seguimiento del medio"
 
-#: cups/ppd.c:791
-#: cups/ppd.c:1359
-#: ppdc/sample.c:285
 msgid "Media Type"
 msgstr "Tipo de papel"
 
-#: ppdc/sample.c:237
 msgid "Medium"
 msgstr "Media"
 
-#: cups/ppd.c:341
 msgid "Memory allocation error"
 msgstr "Error de reserva de memoria"
 
-#: cups/ppd.c:361
 msgid "Missing CloseGroup"
 msgstr "Falta CloseGroup"
 
-#: cups/ppd.c:342
 msgid "Missing PPD-Adobe-4.x header"
 msgstr "Falta cabecera PPD-Adobe-4.x"
 
-#: cups/ppd.c:351
 msgid "Missing asterisk in column 1"
 msgstr "Falta un asterisco en la columna 1"
 
-#: scheduler/ipp.c:6119
 msgid "Missing document-number attribute."
 msgstr "Falta el atributo document-number."
 
-#: cups/adminutil.c:273
 #, c-format
 msgid "Missing double quote on line %d."
 msgstr "Faltan dobles comillas en línea %d."
 
-#: cgi-bin/admin.c:736
-#: cgi-bin/admin.c:2106
-#: cgi-bin/admin.c:2191
-#: cgi-bin/admin.c:2785
-#: cgi-bin/admin.c:3039
-#: cgi-bin/admin.c:3150
-#: cgi-bin/admin.c:3860
 msgid "Missing form variable"
 msgstr "Falta una variable de formulario"
 
-#: scheduler/ipp.c:9422
 msgid "Missing last-document attribute in request."
 msgstr "Falta el atributo last-document en la petición."
 
-#: cups/pwg-media.c:535
 msgid "Missing media or media-col."
 msgstr "Falta media o media-col."
 
-#: cups/pwg-media.c:454
 msgid "Missing media-size in media-col."
 msgstr "Falta media-size en media-col."
 
-#: scheduler/ipp.c:6673
 msgid "Missing notify-subscription-ids attribute."
 msgstr "Falta el atributo notify-subscription-ids."
 
-#: cups/ppd.c:359
 msgid "Missing option keyword"
 msgstr "Falta cadena de clave de opción"
 
-#: scheduler/ipp.c:3133
-#: scheduler/ipp.c:3158
 msgid "Missing requesting-user-name attribute."
 msgstr "Falta el atributo requesting-user-name."
 
-#: scheduler/ipp.c:461
 msgid "Missing required attributes."
 msgstr "Faltan atributos necesarios."
 
-#: cups/adminutil.c:254
 #, c-format
 msgid "Missing value on line %d."
 msgstr "Falta un valor en la línea %d."
 
-#: cups/ppd.c:343
 msgid "Missing value string"
 msgstr "Falta cadena de valores"
 
-#: cups/pwg-media.c:442
 msgid "Missing x-dimension in media-size."
 msgstr "Falta x-dimension en media-size."
 
-#: cups/pwg-media.c:448
 msgid "Missing y-dimension in media-size."
 msgstr "Falta y-dimension en media-size."
 
-#: systemv/lpinfo.c:470
 #, c-format
 msgid ""
 "Model:  name = %s\n"
@@ -4380,1660 +3248,1229 @@ msgstr ""
 "        make-and-model = %s\n"
 "        device-id = %s"
 
-#: cgi-bin/admin.c:570
 msgid "Modify Class"
 msgstr "Modificar clase"
 
-#: cgi-bin/admin.c:882
 msgid "Modify Printer"
 msgstr "Modificar impresora"
 
-#: cgi-bin/ipp-var.c:425
-#: cgi-bin/ipp-var.c:516
 msgid "Move All Jobs"
 msgstr "Mover todos los trabajos"
 
-#: cgi-bin/ipp-var.c:364
-#: cgi-bin/ipp-var.c:423
-#: cgi-bin/ipp-var.c:514
 msgid "Move Job"
 msgstr "Mover trabajo"
 
-#: cups/http-support.c:1290
 msgid "Moved Permanently"
 msgstr "Movido permanentemente"
 
-#: cups/ppd.c:340
 msgid "NULL PPD file pointer"
 msgstr "Puntero de archivo PPD NULO"
 
-#: cups/snmp.c:1053
 msgid "Name OID uses indefinite length"
 msgstr "Nombre OID usa una longitud indefinida"
 
-#: scheduler/ipp.c:1142
 msgid "Nested classes are not allowed."
 msgstr "No se permiten clases anidadas."
 
-#: ppdc/sample.c:430
 msgid "Never"
 msgstr "Nunca"
 
-#: ppdc/sample.c:256
 msgid "New Stylus Color Series"
 msgstr "Nueva Stylus Color Series"
 
-#: ppdc/sample.c:258
 msgid "New Stylus Photo Series"
 msgstr "Nueva Stylus Photo Series"
 
-#: cups/ppd.c:1949
 msgid "No"
 msgstr "No"
 
-#: cups/http-support.c:1287
 msgid "No Content"
 msgstr "No hay contenido"
 
-#: cups/util.c:1298
 msgid "No PPD name"
 msgstr "No hay nombre de PPD"
 
-#: cups/snmp.c:1047
 msgid "No VarBind SEQUENCE"
 msgstr "No hay Varbind SEQUENCE"
 
-#: cups/adminutil.c:788
 msgid "No Windows printer drivers are installed."
 msgstr "No está instalado ningún controlador de impresora de Windows."
 
-#: cups/request.c:566
-#: cups/request.c:908
 msgid "No active connection"
 msgstr "No hay conexión activa"
 
-#: scheduler/ipp.c:3403
 #, c-format
 msgid "No active jobs on %s."
 msgstr "No hay trabajos activos en %s."
 
-#: scheduler/ipp.c:302
 msgid "No attributes in request."
 msgstr "No hay atributos en la solicitud."
 
-#: scheduler/ipp.c:3034
 msgid "No authentication information provided."
 msgstr "No se ha proporcionado información de autentificación."
 
-#: cups/snmp.c:1004
 msgid "No community name"
 msgstr "No hay nombre de comunidad"
 
-#: scheduler/ipp.c:5919
 msgid "No default printer."
 msgstr "No hay impresora predeterminada."
 
-#: cgi-bin/ipp-var.c:436
-#: scheduler/ipp.c:7248
 msgid "No destinations added."
 msgstr "No se han añadido destinos."
 
-#: backend/usb.c:200
 msgid "No device URI found in argv[0] or in DEVICE_URI environment variable."
-msgstr "No se ha encontrado el URI del dispositivo en argv[0] o en la variable de entorno DEVICE_URI."
+msgstr ""
+"No se ha encontrado el URI del dispositivo en argv[0] o en la variable de "
+"entorno DEVICE_URI."
 
-#: cups/snmp.c:1034
 msgid "No error-index"
 msgstr "No hay error-index"
 
-#: cups/snmp.c:1026
 msgid "No error-status"
 msgstr "No hay error-status"
 
-#: scheduler/ipp.c:8190
-#: scheduler/ipp.c:9436
 msgid "No file in print request."
 msgstr "No hay ningún archivo en la petición de impresión."
 
-#: cups/util.c:923
 msgid "No modification time"
 msgstr "No hay tiempo de modificación"
 
-#: cups/snmp.c:1051
 msgid "No name OID"
 msgstr "No hay nombre OID"
 
-#: filter/rastertoepson.c:1147
-#: filter/rastertohp.c:876
-#: filter/rastertolabel.c:1302
 msgid "No pages were found."
 msgstr "No se han encontrado páginas."
 
-#: cups/util.c:917
 msgid "No printer name"
 msgstr "No hay nombre de impresora"
 
-#: cups/util.c:1801
 msgid "No printer-uri found"
 msgstr "No se encontró printer-uri"
 
-#: cups/util.c:1786
 msgid "No printer-uri found for class"
 msgstr "No se encontró printer-uri para la clase"
 
-#: scheduler/ipp.c:6322
 msgid "No printer-uri in request."
 msgstr "No hay printer-uri en la petición."
 
-#: cups/snmp.c:1018
 msgid "No request-id"
 msgstr "No hay request-id"
 
-#: scheduler/ipp.c:5528
 msgid "No subscription attributes in request."
 msgstr "No hay atributos de subscripción en la solicitud."
 
-#: scheduler/ipp.c:7575
 msgid "No subscriptions found."
 msgstr "No se han encontrado subscripciones."
 
-#: cups/snmp.c:1042
 msgid "No variable-bindings SEQUENCE"
 msgstr "No hay variable-bindings SEQUENCE"
 
-#: cups/snmp.c:997
 msgid "No version number"
 msgstr "No hay número de versión"
 
-#: ppdc/sample.c:367
 msgid "Non-continuous (Mark sensing)"
 msgstr "No continuo (sensible a señal)"
 
-#: ppdc/sample.c:366
 msgid "Non-continuous (Web sensing)"
 msgstr "No continuo (sensible a web)"
 
-#: ppdc/sample.c:238
 msgid "Normal"
 msgstr "Normal"
 
-#: cups/http-support.c:1309
 msgid "Not Found"
 msgstr "No encontrado"
 
-#: cups/http-support.c:1321
 msgid "Not Implemented"
 msgstr "No implementado"
 
-#: ppdc/sample.c:276
 msgid "Not Installed"
 msgstr "No instalado"
 
-#: cups/http-support.c:1296
 msgid "Not Modified"
 msgstr "No modificado"
 
-#: cups/http-support.c:1324
 msgid "Not Supported"
 msgstr "No permitido"
 
-#: scheduler/ipp.c:1518
-#: scheduler/ipp.c:10666
 msgid "Not allowed to print."
 msgstr "No se permite imprimir."
 
-#: ppdc/sample.c:146
 msgid "Note"
 msgstr "Nota"
 
-#: systemv/cupstestdsc.c:433
-msgid "Note: this program only validates the DSC comments, not the PostScript itself."
-msgstr "Nota: este programa sólo valida los comentarios DSC, no los PostScript."
+msgid ""
+"Note: this program only validates the DSC comments, not the PostScript "
+"itself."
+msgstr ""
+"Nota: este programa sólo valida los comentarios DSC, no los PostScript."
 
-#: cups/http-support.c:1278
-#: cups/ppd.c:338
 msgid "OK"
 msgstr "OK"
 
-#: ppdc/sample.c:271
 msgid "Off (1-Sided)"
 msgstr "Desactivado (1 cara)"
 
-#: ppdc/sample.c:361
 msgid "Oki"
 msgstr "Oki"
 
-#: cgi-bin/help.c:91
-#: cgi-bin/help.c:132
-#: cgi-bin/help.c:142
-#: cgi-bin/help.c:172
 msgid "Online Help"
 msgstr "Ayuda en línea"
 
-#: cups/adminutil.c:955
 #, c-format
 msgid "Open of %s failed: %s"
 msgstr "La apertura de %s ha fallado: %s"
 
-#: cups/ppd.c:346
 msgid "OpenGroup without a CloseGroup first"
 msgstr "OpenGroup sin un CloseGroup previo"
 
-#: cups/ppd.c:348
 msgid "OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first"
 msgstr "OpenUI/JCLOpenUI sin un CloseUI/JCLCloseUI previo"
 
-#: cgi-bin/admin.c:3631
 msgid "Operation Policy"
 msgstr "Directiva de operación"
 
-#: filter/pstops.c:2205
 #, c-format
 msgid "Option \"%s\" cannot be included via %%%%IncludeFeature."
 msgstr "La opción \"%s\" no puede incluirse via %%%%IncludeFeature."
 
-#: cgi-bin/admin.c:3281
-#: cgi-bin/admin.c:3365
 msgid "Options Installed"
 msgstr "Opciones instaladas"
 
-#: scheduler/cupsfilter.c:1430
-#: scheduler/main.c:2018
-#: systemv/cupsaddsmb.c:284
-#: systemv/cupsctl.c:203
-#: systemv/cupstestdsc.c:429
-#: systemv/cupstestppd.c:3797
-#: test/ipptool.c:4403
-#: ppdc/ppdc.cxx:437
-#: ppdc/ppdhtml.cxx:174
-#: ppdc/ppdi.cxx:130
-#: ppdc/ppdmerge.cxx:369
-#: ppdc/ppdpo.cxx:254
 msgid "Options:"
 msgstr "Opciones: "
 
-#: cups/ppd-cache.c:156
 msgid "Out of date PPD cache file."
 msgstr "Archivo de caché PPD obsoleto."
 
-#: cups/ppd-cache.c:1381
 msgid "Out of memory."
 msgstr "Sin memoria."
 
-#: cups/ppd.c:795
-#: cups/ppd.c:1363
 msgid "Output Mode"
 msgstr "Modo de salida"
 
-#: systemv/lpstat.c:1191
-#: systemv/lpstat.c:1195
 #, c-format
 msgid "Output for printer %s is sent to %s"
 msgstr "La salida de la impresora %s se ha enviado a %s"
 
-#: systemv/lpstat.c:1185
 #, c-format
 msgid "Output for printer %s is sent to remote printer %s on %s"
-msgstr "La salida de la impresora %s se ha enviado a la impresora remota %s en %s"
+msgstr ""
+"La salida de la impresora %s se ha enviado a la impresora remota %s en %s"
 
-#: systemv/lpstat.c:1209
-#: systemv/lpstat.c:1213
 #, c-format
 msgid "Output for printer %s/%s is sent to %s"
 msgstr "La salida de la impresora %s/%s se ha enviado a %s"
 
-#: systemv/lpstat.c:1203
 #, c-format
 msgid "Output for printer %s/%s is sent to remote printer %s on %s"
-msgstr "La salida de la impresora %s/%s se ha enviado a la impresora remota %s en %s"
+msgstr ""
+"La salida de la impresora %s/%s se ha enviado a la impresora remota %s en %s"
 
-#: systemv/cupstestdsc.c:399
 msgid "PASS"
 msgstr "PASA"
 
-#: ppdc/sample.c:260
 msgid "PCL Laser Printer"
 msgstr "Impresora Laser PCL"
 
-#: ppdc/sample.c:149
 msgid "PRC16K"
 msgstr "PRC16K"
 
-#: ppdc/sample.c:150
 msgid "PRC16K Long Edge"
 msgstr "PRC16K lado largo"
 
-#: ppdc/sample.c:151
 msgid "PRC32K"
 msgstr "PRC32K"
 
-#: ppdc/sample.c:154
 msgid "PRC32K Long Edge"
 msgstr "PRC32K lado largo"
 
-#: ppdc/sample.c:152
 msgid "PRC32K Oversize"
 msgstr "PRC32K Extragrande"
 
-#: ppdc/sample.c:153
 msgid "PRC32K Oversize Long Edge"
 msgstr "PRC32K Extragrande lado largo"
 
-#: cups/snmp.c:1014
 msgid "Packet does not contain a Get-Response-PDU"
 msgstr "El paquete no contiene un Get-Response-PDU"
 
-#: cups/snmp.c:993
 msgid "Packet does not start with SEQUENCE"
 msgstr "El paquete no empieza por SEQUENCE"
 
-#: ppdc/sample.c:360
 msgid "ParamCustominCutInterval"
 msgstr "ParamCustominCutInterval"
 
-#: ppdc/sample.c:358
 msgid "ParamCustominTearInterval"
 msgstr "ParamCustominTearInterval"
 
-#: cups/auth.c:199
-#: cups/auth.c:367
 #, c-format
 msgid "Password for %s on %s? "
 msgstr "¿Contraseña de %s en %s? "
 
-#: systemv/cupsaddsmb.c:252
 #, c-format
 msgid "Password for %s required to access %s via SAMBA: "
 msgstr "Se requiere la contraseña de %s para acceder a %s vía SAMBA: "
 
-#: cgi-bin/classes.c:167
 msgid "Pause Class"
 msgstr "Pausar clase"
 
-#: cgi-bin/printers.c:170
 msgid "Pause Printer"
 msgstr "Pausar impresora"
 
-#: ppdc/sample.c:448
 msgid "Peel-Off"
 msgstr "Despegar"
 
-#: ppdc/sample.c:160
 msgid "Photo"
 msgstr "Foto"
 
-#: ppdc/sample.c:161
 msgid "Photo Labels"
 msgstr "Foto pequeña"
 
-#: ppdc/sample.c:286
 msgid "Plain Paper"
 msgstr "Papel normal"
 
-#: cgi-bin/admin.c:3299
-#: cgi-bin/admin.c:3580
 msgid "Policies"
 msgstr "Reglas"
 
-#: cgi-bin/admin.c:3306
-#: cgi-bin/admin.c:3649
-#: cgi-bin/admin.c:3662
 msgid "Port Monitor"
 msgstr "Monitor de puerto"
 
-#: ppdc/sample.c:278
 msgid "PostScript Printer"
 msgstr "Impresora PostScript"
 
-#: ppdc/sample.c:147
 msgid "Postcard"
 msgstr "Postal"
 
-#: ppdc/sample.c:71
 msgid "Postcard Double "
 msgstr "Postal doble"
 
-#: ppdc/sample.c:72
 msgid "Postcard Double Long Edge"
 msgstr "Postal doble lado largo"
 
-#: ppdc/sample.c:148
 msgid "Postcard Long Edge"
 msgstr "Postal lado largo"
 
-#: ppdc/sample.c:295
+msgid "Preparing to print."
+msgstr ""
+
 msgid "Print Density"
 msgstr "Densidad de impresión"
 
-#: cups/notify.c:82
 msgid "Print Job:"
 msgstr "Imprimir trabajo:"
 
-#: ppdc/sample.c:340
 msgid "Print Mode"
 msgstr "Modo de impresión"
 
-#: ppdc/sample.c:383
 msgid "Print Rate"
 msgstr "Tasa de impresión"
 
-#: cgi-bin/printers.c:179
 msgid "Print Self-Test Page"
 msgstr "Imprimir página de auto-prueba"
 
-#: ppdc/sample.c:327
 msgid "Print Speed"
 msgstr "Velocidad de impresión"
 
-#: cgi-bin/ipp-var.c:792
 msgid "Print Test Page"
 msgstr "Imprimir página de prueba"
 
-#: ppdc/sample.c:356
 msgid "Print and Cut"
 msgstr "Imprimir y cortar"
 
-#: ppdc/sample.c:344
 msgid "Print and Tear"
 msgstr "Imprimir y romper"
 
-#: backend/ipp.c:1537
-#, c-format
-msgid "Print file accepted - job ID %d."
-msgstr "Archivo de impresión aceptado: ID de trabajo %d."
-
-#: backend/ipp.c:1527
-msgid "Print file accepted - job ID unknown."
-msgstr "Archivo de impresión aceptado: ID de trabajo desconocido."
-
-#: backend/socket.c:424
-#: backend/usb-unix.c:191
 msgid "Print file sent."
 msgstr "Archivo de impresión enviado."
 
-#: backend/ipp.c:1488
-msgid "Print file was not accepted."
-msgstr "No se ha aceptado el archivo de impresión."
-
-#: backend/ipp.c:1895
 msgid "Print job canceled at printer."
 msgstr "Trabajo de impresión cancelado en la impresora."
 
-#: backend/ipp.c:1890
 msgid "Print job too large."
 msgstr "Trabajo de impresión demasiado grande."
 
-#: cgi-bin/ipp-var.c:1047
+msgid "Print job was not accepted."
+msgstr ""
+
 msgid "Printer Added"
 msgstr "Impresora añadida"
 
-#: ppdc/sample.c:263
 msgid "Printer Default"
 msgstr "Predeterminado de la impresora"
 
-#: cgi-bin/ipp-var.c:1051
 msgid "Printer Deleted"
 msgstr "Impresora borrada"
 
-#: cgi-bin/ipp-var.c:1049
 msgid "Printer Modified"
 msgstr "Impresora modificada"
 
-#: cgi-bin/ipp-var.c:1045
 msgid "Printer Paused"
 msgstr "Impresora en pausa"
 
-#: ppdc/sample.c:294
 msgid "Printer Settings"
 msgstr "Configuración de la impresora"
 
-#: backend/ipp.c:1893
 msgid "Printer cannot print supplied content."
 msgstr "La impresora no puede imprimir el contenido suministrado."
 
-#: cups/notify.c:126
 msgid "Printer:"
 msgstr "Impresora:"
 
-#: cgi-bin/printers.c:204
-#: cgi-bin/printers.c:332
 msgid "Printers"
 msgstr "Impresoras"
 
-#: filter/rastertoepson.c:1093
-#: filter/rastertohp.c:817
-#: filter/rastertolabel.c:1249
 #, c-format
 msgid "Printing page %d, %d%% complete."
 msgstr "Imprimiendo página %d, %d%% completado."
 
-#: cgi-bin/classes.c:173
-#: cgi-bin/printers.c:176
 msgid "Purge Jobs"
 msgstr "Purgar trabajos"
 
-#: ppdc/sample.c:155
 msgid "Quarto"
 msgstr "Quarto"
 
-#: scheduler/ipp.c:1513
-#: scheduler/ipp.c:10661
 msgid "Quota limit reached."
 msgstr "Se ha alcanzado el límite de cuota."
 
-#: berkeley/lpq.c:515
 msgid "Rank    Owner   Job     File(s)                         Total Size"
 msgstr "Rango  Propiet. Trabajo Archivo(s)                      Tamaño total"
 
 #. TRANSLATORS: Pri is job priority.
-#: berkeley/lpq.c:511
-msgid "Rank   Owner      Pri  Job        Files                       Total Size"
-msgstr "Rango  Propiet.   Pri  Trabajo    Archivos                    Tamaño total"
+msgid ""
+"Rank   Owner      Pri  Job        Files                       Total Size"
+msgstr ""
+"Rango  Propiet.   Pri  Trabajo    Archivos                    Tamaño total"
 
-#: cgi-bin/classes.c:171
-#: cgi-bin/printers.c:174
 msgid "Reject Jobs"
 msgstr "Rechazar trabajos"
 
-#: backend/lpd.c:1016
-#: backend/lpd.c:1148
 #, c-format
 msgid "Remote host did not accept control file (%d)."
 msgstr "El ordenador remoto no ha aceptado el archivo de control (%d)."
 
-#: backend/lpd.c:1101
 #, c-format
 msgid "Remote host did not accept data file (%d)."
 msgstr "El ordenador remoto no ha aceptado el archivo de datos (%d)."
 
-#: ppdc/sample.c:428
 msgid "Reprint After Error"
 msgstr "Volver a imprimir tras un error"
 
-#: cups/http-support.c:1312
 msgid "Request Entity Too Large"
 msgstr "La entidad requerida es demasiado larga"
 
-#: cups/ppd.c:797
-#: cups/ppd.c:1365
-#: ppdc/sample.c:231
 msgid "Resolution"
 msgstr "Resolución"
 
-#: cgi-bin/classes.c:165
 msgid "Resume Class"
 msgstr "Reanudar clase"
 
-#: cgi-bin/printers.c:167
 msgid "Resume Printer"
 msgstr "Reanudar impresora"
 
-#: ppdc/sample.c:165
 msgid "Return Address"
 msgstr "Remite"
 
-#: ppdc/sample.c:449
 msgid "Rewind"
 msgstr "Rebobinar"
 
-#: cups/adminutil.c:2052
 #, c-format
 msgid "Running command: %s %s -N -A %s -c '%s'"
 msgstr "Ejecutando comando: %s %s -N -A %s -c '%s'"
 
-#: cups/snmp.c:995
 msgid "SEQUENCE uses indefinite length"
 msgstr "SEQUENCE usa una longitud indefinida"
 
-#: cups/http-support.c:1336
 msgid "SSL/TLS Negotiation Error"
 msgstr "Error en negociación SSL/TLS"
 
-#: cups/http-support.c:1293
 msgid "See Other"
 msgstr "Ver otros"
 
-#: backend/usb-darwin.c:543
-#: backend/usb-libusb.c:273
 msgid "Sending data to printer."
 msgstr "Enviando datos a la impresora."
 
-#: cgi-bin/ipp-var.c:1061
 msgid "Server Restarted"
 msgstr "Servidor reiniciado"
 
-#: cgi-bin/ipp-var.c:1067
 msgid "Server Security Auditing"
 msgstr "Auditoría de seguridad del servidor"
 
-#: cgi-bin/ipp-var.c:1063
 msgid "Server Started"
 msgstr "Servidor iniciado"
 
-#: cgi-bin/ipp-var.c:1065
 msgid "Server Stopped"
 msgstr "Servidor parado"
 
-#: cups/http-support.c:1330
 msgid "Service Unavailable"
 msgstr "Servicio no disponible"
 
-#: cgi-bin/admin.c:2786
-#: cgi-bin/admin.c:2832
-#: cgi-bin/admin.c:2989
-#: cgi-bin/admin.c:3008
 msgid "Set Allowed Users"
 msgstr "Establecer usuarios permitidos"
 
-#: cgi-bin/admin.c:3035
 msgid "Set As Server Default"
 msgstr "Establecer como predeterminada del servidor"
 
-#: cgi-bin/admin.c:3135
 msgid "Set Class Options"
 msgstr "Cambiar opciones clase"
 
-#: cgi-bin/admin.c:3135
-#: cgi-bin/admin.c:3309
-#: cgi-bin/admin.c:3691
 msgid "Set Printer Options"
 msgstr "Cambiar opciones impresora"
 
-#: cgi-bin/admin.c:3861
-#: cgi-bin/admin.c:3905
-#: cgi-bin/admin.c:3923
 msgid "Set Publishing"
 msgstr "Hacer pública"
 
-#: ppdc/sample.c:166
 msgid "Shipping Address"
 msgstr "Dirección de envío"
 
-#: ppdc/sample.c:273
 msgid "Short-Edge (Landscape)"
 msgstr "Lado corto (apaisado)"
 
-#: ppdc/sample.c:288
 msgid "Special Paper"
 msgstr "Papel especial"
 
-#: backend/lpd.c:1057
 #, c-format
 msgid "Spooling job, %.0f%% complete."
 msgstr "Guardando trabajo en cola, %.0f%% completado."
 
-#: ppdc/sample.c:341
 msgid "Standard"
 msgstr "Estándar"
 
 #. TRANSLATORS: Banner/cover sheet before the print job.
-#: cgi-bin/admin.c:3552
 msgid "Starting Banner"
 msgstr "Rótulo inicial"
 
-#: filter/rastertoepson.c:1069
-#: filter/rastertohp.c:793
-#: filter/rastertolabel.c:1225
 #, c-format
 msgid "Starting page %d."
 msgstr "Iniciando página %d."
 
-#: ppdc/sample.c:156
 msgid "Statement"
 msgstr "Declaración"
 
-#: ppdc/sample.c:251
 msgid "Stylus Color Series"
 msgstr "Stylus Color Series"
 
-#: ppdc/sample.c:257
 msgid "Stylus Photo Series"
 msgstr "Stylus Photo Series"
 
-#: scheduler/ipp.c:3549
-#: scheduler/ipp.c:6689
-#: scheduler/ipp.c:7388
-#: scheduler/ipp.c:8887
 #, c-format
 msgid "Subscription #%d does not exist."
 msgstr "Subscripción #%d no existe."
 
-#: ppdc/sample.c:157
 msgid "Super A"
 msgstr "Super A"
 
-#: ppdc/sample.c:158
 msgid "Super B"
 msgstr "Super B (13 x 19  pulg.)"
 
-#: ppdc/sample.c:162
 msgid "Super B/A3"
 msgstr "Super B/A3"
 
-#: cups/http-support.c:1275
 msgid "Switching Protocols"
 msgstr "Protocolos de conexión"
 
-#: ppdc/sample.c:159
 msgid "Tabloid"
 msgstr "Tabloide"
 
-#: ppdc/sample.c:45
 msgid "Tabloid Oversize"
 msgstr "Tabloide Extragrande"
 
-#: ppdc/sample.c:46
 msgid "Tabloid Oversize Long Edge"
 msgstr "Tabloide Extragrande lado largo"
 
-#: ppdc/sample.c:342
 msgid "Tear"
 msgstr "Pestaña"
 
-#: ppdc/sample.c:447
 msgid "Tear-Off"
 msgstr "Pestaña desprendible"
 
-#: ppdc/sample.c:388
 msgid "Tear-Off Adjust Position"
 msgstr "Ajuste de posición de la pestaña desprendible"
 
-#: scheduler/ipp.c:6393
-#: scheduler/ipp.c:6471
-#: scheduler/ipp.c:6487
-#: scheduler/ipp.c:6505
+#, 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 "El atributo %s no puede ser usado con jobs-ids."
 
-#: scheduler/ipp.c:5118
 #, c-format
-msgid "The '%s' operation attribute cannot be supplied in a Create-Job request."
-msgstr "El atributo de operación '%s' no puede ser suministrado en una petición Create-Job."
+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 ""
+"El atributo de operación '%s' no puede ser suministrado en una petición "
+"Create-Job."
 
-#: scheduler/ipp.c:6919
 #, c-format
 msgid "The PPD file \"%s\" could not be found."
 msgstr "No se ha podido encontrar el archivo PPD \"%s\"."
 
-#: scheduler/ipp.c:6906
 #, c-format
 msgid "The PPD file \"%s\" could not be opened: %s"
 msgstr "No se ha podido abrir el archivo PPD \"%s\": %s"
 
-#: filter/rastertoepson.c:1038
-#: filter/rastertohp.c:764
-#: filter/rastertolabel.c:1189
 msgid "The PPD file could not be opened."
 msgstr "No se ha podido abrir el archivo PPD."
 
-#: cgi-bin/admin.c:749
-msgid "The class name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
-msgstr "El nombre de la clase sólo puede contener hasta 127 caracteres imprimibles y no puede contener espacios, barras (/), o la almohadilla (#)."
+msgid ""
+"The class name may only contain up to 127 printable characters and may not "
+"contain spaces, slashes (/), or the pound sign (#)."
+msgstr ""
+"El nombre de la clase sólo puede contener hasta 127 caracteres imprimibles y "
+"no puede contener espacios, barras (/), o la almohadilla (#)."
 
-#: cups/localize.c:353
 msgid "The developer unit needs to be replaced."
 msgstr "La unidad de revelado debe ser reemplazada"
 
-#: cups/localize.c:351
 msgid "The developer unit will need to be replaced soon."
 msgstr "La unidad de revelado necesitará ser cambiada pronto."
 
-#: cups/localize.c:343
 msgid "The fuser's temperature is high."
 msgstr "Temperatura del fusor alta"
 
-#: cups/localize.c:345
 msgid "The fuser's temperature is low."
 msgstr "Temperatura del fusor baja"
 
-#: scheduler/ipp.c:2097
-msgid "The notify-lease-duration attribute cannot be used with job subscriptions."
-msgstr "El atributo notify-lease-duration no puede ser usado con subscripciones de trabajos."
+msgid ""
+"The notify-lease-duration attribute cannot be used with job subscriptions."
+msgstr ""
+"El atributo notify-lease-duration no puede ser usado con subscripciones de "
+"trabajos."
 
-#: scheduler/ipp.c:2080
-#: scheduler/ipp.c:5653
 #, c-format
 msgid "The notify-user-data value is too large (%d > 63 octets)."
 msgstr "El valor notify-user-data es demasiado grande (%d > 63 octetos)."
 
-#: cups/localize.c:349
 msgid "The optical photoconductor needs to be replaced."
 msgstr "El fotoconductor óptico necesita ser cambiado."
 
-#: cups/localize.c:347
 msgid "The optical photoconductor will need to be replaced soon."
 msgstr "El fotoconductor óptico necesitará ser cambiado pronto."
 
-#: cups/localize.c:331
 msgid "The output bin is almost full."
 msgstr "Recipiente de salida casi lleno"
 
-#: cups/localize.c:333
 msgid "The output bin is full."
 msgstr "Bandeja de salida llena."
 
-#: cups/localize.c:329
 msgid "The output bin is missing."
 msgstr "Falta la bandeja de salida."
 
-#: cups/localize.c:325
 msgid "The paper tray is almost empty."
 msgstr "Bandeja de papel casi vacía."
 
-#: cups/localize.c:327
 msgid "The paper tray is empty."
 msgstr "Bandeja de papel vacía."
 
-#: cups/localize.c:323
 msgid "The paper tray is missing."
 msgstr "Falta la bandeja de papel."
 
-#: cups/localize.c:306
 msgid "The paper tray needs to be filled."
 msgstr "Hay que poner papel en la bandeja."
 
-#: backend/ipp.c:909
-msgid "The printer URI is incorrect or no longer exists."
-msgstr "El URI de la impresora es incorrecto o ya no existe."
+msgid "The printer configuration is incorrect or the printer no longer exists."
+msgstr ""
 
-#: backend/lpd.c:619
-#: backend/lpd.c:1009
-#: backend/lpd.c:1091
-#: backend/lpd.c:1141
 msgid "The printer did not respond."
 msgstr "La impresora no respondió."
 
-#: backend/ipp.c:892
-#: backend/ipp.c:899
-#, c-format
-msgid "The printer does not support IPP/%d.%d, trying IPP/%s."
-msgstr "La impresora no es compatible con IPP/%d.%d, probando IPP/%s."
-
-#: backend/ipp.c:757
-#: backend/ipp.c:874
-#: backend/ipp.c:980
-#: backend/ipp.c:1313
-#: backend/ipp.c:1464
-#: backend/lpd.c:828
-#: backend/socket.c:374
-#: backend/usb-unix.c:131
-#: backend/usb-unix.c:424
-#: backend/usb-unix.c:507
 msgid "The printer is in use."
 msgstr "La impresora está en uso."
 
-#: backend/runloop.c:254
-#: backend/runloop.c:374
-#: cups/localize.c:311
 msgid "The printer is not connected."
 msgstr "La impresora no está conectada."
 
-#: backend/ipp.c:735
-#: backend/ipp.c:768
-#: backend/ipp.c:870
-#: backend/lpd.c:807
-#: backend/lpd.c:848
-#: backend/socket.c:353
-#: backend/socket.c:386
 msgid "The printer is not responding."
 msgstr "La impresora no responde."
 
-#: backend/runloop.c:396
 msgid "The printer is now connected."
 msgstr "La impresora está ahora conectada."
 
-#: backend/usb-darwin.c:1286
 msgid "The printer is now online."
 msgstr "La impresora está ahora en línea."
 
-#: backend/usb-darwin.c:1307
 msgid "The printer is offline."
 msgstr "La impresora está fuera de línea."
 
-#: cups/localize.c:335
 msgid "The printer is running low on ink."
 msgstr "La impresora está funcionando con poca tinta."
 
-#: cups/localize.c:313
 msgid "The printer is running low on toner."
 msgstr "La impresora está funcionando con poco toner."
 
-#: backend/ipp.c:750
-#: backend/lpd.c:821
-#: backend/socket.c:367
 msgid "The printer is unreachable at this time."
 msgstr "La impresora es inalcanzable en este momento."
 
-#: cups/localize.c:337
 msgid "The printer may be out of ink."
 msgstr "La impresora puede que no tenga tinta."
 
-#: cups/localize.c:315
 msgid "The printer may be out of toner."
 msgstr "La impresora puede que esté sin toner."
 
-#: backend/ipp.c:744
-#: backend/lpd.c:815
-#: backend/socket.c:361
 msgid "The printer may not exist or is unavailable at this time."
 msgstr "La impresora puede no existir o no estar disponible en este momento."
 
-#: cgi-bin/admin.c:931
-msgid "The printer name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
-msgstr "El nombre de la impresora sólo puede contener hasta 127 caracteres imprimibles y no puede contener espacios, barras (/), o la almohadilla (#)."
-
-#: scheduler/ipp.c:876
-#: scheduler/ipp.c:1136
-#: scheduler/ipp.c:3198
-#: scheduler/ipp.c:3369
-#: scheduler/ipp.c:5101
-#: scheduler/ipp.c:5487
-#: scheduler/ipp.c:5801
-#: scheduler/ipp.c:6359
-#: scheduler/ipp.c:7124
-#: scheduler/ipp.c:7180
-#: scheduler/ipp.c:7494
-#: scheduler/ipp.c:7760
-#: scheduler/ipp.c:7849
-#: scheduler/ipp.c:7882
-#: scheduler/ipp.c:8205
-#: scheduler/ipp.c:8598
-#: scheduler/ipp.c:8679
-#: scheduler/ipp.c:9840
-#: scheduler/ipp.c:10294
-#: scheduler/ipp.c:10624
-#: scheduler/ipp.c:10706
-#: scheduler/ipp.c:10998
+msgid ""
+"The printer name may only contain up to 127 printable characters and may not "
+"contain spaces, slashes (/), or the pound sign (#)."
+msgstr ""
+"El nombre de la impresora sólo puede contener hasta 127 caracteres "
+"imprimibles y no puede contener espacios, barras (/), o la almohadilla (#)."
+
 msgid "The printer or class does not exist."
 msgstr "La impresora o clase no existe."
 
-#: scheduler/ipp.c:1304
 msgid "The printer or class is not shared."
 msgstr "La impresora o clase no está compartida."
 
-#: cups/localize.c:317
 msgid "The printer's cover is open."
 msgstr "La tapa de la impresora está abierta."
 
-#: cups/localize.c:321
 msgid "The printer's door is open."
 msgstr "La puerta de la impresora está abierta."
 
-#: cups/localize.c:319
 msgid "The printer's interlock is open."
 msgstr "El dispositivo de seguridad de la impresora está abierto."
 
-#: cups/localize.c:339
 msgid "The printer's waste bin is almost full."
 msgstr "Recipiente de residuos de la impresora está casi lleno."
 
-#: cups/localize.c:341
 msgid "The printer's waste bin is full."
 msgstr "Recipiente de residuos de la impresora está lleno."
 
-#: scheduler/ipp.c:982
-#: scheduler/ipp.c:2261
 #, c-format
 msgid "The printer-uri \"%s\" contains invalid characters."
 msgstr "El printer-uri \"%s\" contiene caracteres no válidos."
 
-#: scheduler/ipp.c:3175
 msgid "The printer-uri attribute is required."
 msgstr "Se necesita el atributo printer-uri."
 
-#: scheduler/ipp.c:966
-msgid "The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
-msgstr "El printer-uri debe ser de la forma \"ipp://NOMBRE_ORDENADOR/classes/NOMBRE_CLASE\"."
+msgid ""
+"The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
+msgstr ""
+"El printer-uri debe ser de la forma \"ipp://NOMBRE_ORDENADOR/classes/"
+"NOMBRE_CLASE\"."
 
-#: scheduler/ipp.c:2245
-msgid "The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
-msgstr "El printer-uri debe ser de la forma \"ipp://NOMBRE_ORDENADOR/printers/NOMBRE_IMPRESORA\"."
+msgid ""
+"The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
+msgstr ""
+"El printer-uri debe ser de la forma \"ipp://NOMBRE_ORDENADOR/printers/"
+"NOMBRE_IMPRESORA\"."
 
-#: cgi-bin/admin.c:474
-msgid "The subscription name may not contain spaces, slashes (/), question marks (?), or the pound sign (#)."
-msgstr "El nombre de la subscripción no puede contener espacios, barras (/), signos de interrogación (?), o la almohadilla (#)."
+msgid ""
+"The subscription name may not contain spaces, slashes (/), question marks "
+"(?), or the pound sign (#)."
+msgstr ""
+"El nombre de la subscripción no puede contener espacios, barras (/), signos "
+"de interrogación (?), o la almohadilla (#)."
 
-#: scheduler/client.c:2450
-msgid "The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to enable it."
-msgstr "La interfaz web está desactivada en este momento. Ejecute \"cupsctl WebInterface=yes\" para activarla."
+msgid ""
+"The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to "
+"enable it."
+msgstr ""
+"La interfaz web está desactivada en este momento. Ejecute \"cupsctl "
+"WebInterface=yes\" para activarla."
 
-#: scheduler/ipp.c:6454
 #, c-format
 msgid "The which-jobs value \"%s\" is not supported."
 msgstr "No se admite el uso del valor which-jobs \"%s\"."
 
-#: scheduler/ipp.c:5731
 msgid "There are too many subscriptions."
 msgstr "Hay demasiadas subscripciones."
 
-#: cups/localize.c:308
 msgid "There is a paper jam."
 msgstr "Hay un atasco de papel."
 
-#: backend/usb-darwin.c:379
-#: backend/usb-darwin.c:438
-#: backend/usb-darwin.c:505
-#: backend/usb-darwin.c:526
-#: backend/usb-libusb.c:235
-#: backend/usb-libusb.c:256
 msgid "There was an unrecoverable USB error."
 msgstr "Ha habido un error USB irrecuperable."
 
-#: ppdc/sample.c:435
 msgid "Thermal Transfer Media"
 msgstr "Soporte de transferencia térmica"
 
-#: scheduler/ipp.c:1507
 msgid "Too many active jobs."
 msgstr "Demasiados trabajos activos."
 
-#: scheduler/ipp.c:1401
 #, c-format
 msgid "Too many job-sheets values (%d > 2)."
 msgstr "Demasiados valores de job-sheets (%d > 2)."
 
-#: scheduler/ipp.c:2529
 #, c-format
 msgid "Too many printer-state-reasons values (%d > %d)."
 msgstr "Demasiados valores printer-state-reasons (%d > %d)."
 
-#: ppdc/sample.c:289
 msgid "Transparency"
 msgstr "Transparencia"
 
-#: ppdc/sample.c:284
 msgid "Tray"
 msgstr "Bandeja"
 
-#: ppdc/sample.c:264
 msgid "Tray 1"
 msgstr "Bandeja 1"
 
-#: ppdc/sample.c:265
 msgid "Tray 2"
 msgstr "Bandeja 2"
 
-#: ppdc/sample.c:266
 msgid "Tray 3"
 msgstr "Bandeja 3"
 
-#: ppdc/sample.c:267
 msgid "Tray 4"
 msgstr "Bandeja 4"
 
-#: cups/http-support.c:1315
 msgid "URI Too Long"
 msgstr "URI demasiado largo"
 
-#: ppdc/sample.c:138
 msgid "US Ledger"
 msgstr "Libro Mayor, 17 x 11 pulg."
 
-#: ppdc/sample.c:139
 msgid "US Legal"
 msgstr "Legal EE.UU."
 
-#: ppdc/sample.c:140
 msgid "US Legal Oversize"
 msgstr "Legal EE.UU. Extragrande"
 
-#: ppdc/sample.c:141
 msgid "US Letter"
 msgstr "Carta EE.UU."
 
-#: ppdc/sample.c:142
 msgid "US Letter Long Edge"
 msgstr "Carta EE.UU. lado largo"
 
-#: ppdc/sample.c:143
 msgid "US Letter Oversize"
 msgstr "Carta EE.UU. Extragrande"
 
-#: ppdc/sample.c:144
 msgid "US Letter Oversize Long Edge"
 msgstr "Carta EE.UU. Extragrande lado largo"
 
-#: ppdc/sample.c:145
 msgid "US Letter Small"
 msgstr "Carta EE.UU. Pequeña"
 
-#: cgi-bin/admin.c:1959
-#: cgi-bin/admin.c:1972
-#: cgi-bin/admin.c:1996
 msgid "Unable to access cupsd.conf file"
 msgstr "No se ha podido acceder al archivo cupsd.conf"
 
-#: cgi-bin/help.c:133
 msgid "Unable to access help file."
 msgstr "No se ha podido acceder al archivo de ayuda."
 
-#: cgi-bin/admin.c:526
 msgid "Unable to add RSS subscription"
 msgstr "No se ha podido añadir la subscripción RSS"
 
-#: cgi-bin/admin.c:814
 msgid "Unable to add class"
 msgstr "No se ha podido añadir la clase"
 
-#: backend/ipp.c:1635
 msgid "Unable to add document to print job."
 msgstr "No se ha podido añadir el documento al trabajo de impresión."
 
-#: scheduler/ipp.c:1548
 #, c-format
 msgid "Unable to add job for destination \"%s\"."
 msgstr "No se ha podido añadir el trabajo para el destino \"%s\"."
 
-#: cgi-bin/admin.c:1059
-#: cgi-bin/admin.c:1419
 msgid "Unable to add printer"
 msgstr "No se ha podido añadir la impresora"
 
-#: scheduler/ipp.c:1246
 msgid "Unable to allocate memory for file types."
 msgstr "No se ha podido reservar memoria para tipos de archivo."
 
-#: filter/pstops.c:451
 msgid "Unable to allocate memory for page info"
 msgstr "No se ha podido reservar memoria para la información de página."
 
-#: filter/pstops.c:445
 msgid "Unable to allocate memory for pages array"
 msgstr "No se ha podido reservar memoria para la secuencia de páginas"
 
-#: cgi-bin/admin.c:1525
 msgid "Unable to cancel RSS subscription"
 msgstr "No se ha podido cancelar la subscripción RSS"
 
-#: backend/ipp.c:1942
 msgid "Unable to cancel print job."
 msgstr "No se ha podido cancelar el trabajo de impresión."
 
-#: cgi-bin/admin.c:2990
 msgid "Unable to change printer"
 msgstr "No se ha podido cambiar la impresora"
 
-#: cgi-bin/admin.c:3906
 msgid "Unable to change printer-is-shared attribute"
 msgstr "No se ha podido cambiar el atributo printer-is-shared"
 
-#: cgi-bin/admin.c:1657
-#: cgi-bin/admin.c:1799
 msgid "Unable to change server settings"
 msgstr "No se ha podido cambiar la configuración del servidor"
 
-#: filter/commandtops.c:420
 msgid "Unable to configure printer options."
 msgstr "No se han podido configurar las opciones de impresión."
 
-#: cups/adminutil.c:911
-#: cups/request.c:1016
 msgid "Unable to connect to host."
 msgstr "No se ha podido conectar al servidor."
 
-#: backend/ipp.c:713
-#: backend/ipp.c:1138
-#: backend/lpd.c:787
-#: backend/socket.c:333
-#: backend/usb-unix.c:117
 msgid "Unable to contact printer, queuing on next printer in class."
-msgstr "No se ha podido contactar con la impresora; poniendo en cola en la siguiente impresora de la clase."
+msgstr ""
+"No se ha podido contactar con la impresora; poniendo en cola en la siguiente "
+"impresora de la clase."
 
-#: cups/adminutil.c:726
 #, c-format
 msgid "Unable to copy 64-bit CUPS printer driver files (%d)."
-msgstr "No se han podido copiar los archivos del controlador de impresora de 64-bit de CUPS (%d)."
+msgstr ""
+"No se han podido copiar los archivos del controlador de impresora de 64-bit "
+"de CUPS (%d)."
 
-#: cups/adminutil.c:691
 #, c-format
 msgid "Unable to copy 64-bit Windows printer driver files (%d)."
-msgstr "No se han podido copiar los archivos del controlador de impresora de 64-bit de Windows (%d)."
+msgstr ""
+"No se han podido copiar los archivos del controlador de impresora de 64-bit "
+"de Windows (%d)."
 
-#: cups/adminutil.c:522
 #, c-format
 msgid "Unable to copy CUPS printer driver files (%d)."
-msgstr "No se han podido copiar los archivos del controlador de impresora de CUPS (%d)."
+msgstr ""
+"No se han podido copiar los archivos del controlador de impresora de CUPS "
+"(%d)."
 
-#: scheduler/ipp.c:2649
 #, c-format
 msgid "Unable to copy PPD file - %s"
 msgstr "No se ha podido copiar el archivo PPD - %s"
 
-#: scheduler/ipp.c:2704
 msgid "Unable to copy PPD file."
 msgstr "No se ha podido copiar el archivo PPD."
 
-#: cups/adminutil.c:487
 #, c-format
 msgid "Unable to copy Windows 2000 printer driver files (%d)."
-msgstr "No se han podido copiar los archivos del controlador de impresora de Windows 2000 (%d)."
+msgstr ""
+"No se han podido copiar los archivos del controlador de impresora de Windows "
+"2000 (%d)."
 
-#: cups/adminutil.c:610
 #, c-format
 msgid "Unable to copy Windows 9x printer driver files (%d)."
-msgstr "No se han podido copiar los archivos del controlador de impresora de Windows 9x (%d)."
+msgstr ""
+"No se han podido copiar los archivos del controlador de impresora de Windows "
+"9x (%d)."
 
-#: scheduler/ipp.c:2626
 #, c-format
 msgid "Unable to copy interface script - %s"
 msgstr "No se ha podido copiar el script de interfaz - %s"
 
-#: backend/ipp.c:2034
 msgid "Unable to create compressed print file"
 msgstr "No se ha podido crear el archivo de impresión comprimido"
 
-#: cups/util.c:602
-#: cups/util.c:1656
 msgid "Unable to create printer-uri"
 msgstr "No se ha podido crear printer-uri"
 
-#: cgi-bin/admin.c:1850
-#: cgi-bin/admin.c:1862
-#: scheduler/cupsfilter.c:1236
 msgid "Unable to create temporary file"
 msgstr "No se ha podido crear el archivo temporal"
 
-#: cgi-bin/admin.c:2153
 msgid "Unable to delete class"
 msgstr "No se ha podido borrar la clase"
 
-#: cgi-bin/admin.c:2238
 msgid "Unable to delete printer"
 msgstr "No se ha podido borrar la impresora"
 
-#: cgi-bin/classes.c:260
-#: cgi-bin/printers.c:269
 msgid "Unable to do maintenance command"
 msgstr "No se ha podido realizar el comando de mantenimiento"
 
-#: cgi-bin/admin.c:1974
 msgid "Unable to edit cupsd.conf files larger than 1MB"
 msgstr "No se pueden editar archivos cupsd.conf mayores de 1MB"
 
-#: cups/http.c:4272
-msgid "Unable to establish a secure connection to host (certificate chain invalid)."
-msgstr "No se ha podido establecer una conexión segura con el servidor (cadena certificado incorrecta)."
+msgid ""
+"Unable to establish a secure connection to host (certificate chain invalid)."
+msgstr ""
+"No se ha podido establecer una conexión segura con el servidor (cadena "
+"certificado incorrecta)."
 
-#: cups/http.c:4262
-msgid "Unable to establish a secure connection to host (certificate not yet valid)."
-msgstr "No se ha podido establecer una conexión segura con el servidor (el certificado aún no es válido)."
+msgid ""
+"Unable to establish a secure connection to host (certificate not yet valid)."
+msgstr ""
+"No se ha podido establecer una conexión segura con el servidor (el "
+"certificado aún no es válido)."
 
-#: cups/http.c:4257
 msgid "Unable to establish a secure connection to host (expired certificate)."
-msgstr "No se ha podido establecer una conexión segura con el servidor (certificado caducado)."
+msgstr ""
+"No se ha podido establecer una conexión segura con el servidor (certificado "
+"caducado)."
 
-#: cups/http.c:4267
 msgid "Unable to establish a secure connection to host (host name mismatch)."
-msgstr "No se ha podido establecer una conexión segura con el servidor (el nombre de ordenador no coincide)."
+msgstr ""
+"No se ha podido establecer una conexión segura con el servidor (el nombre de "
+"ordenador no coincide)."
 
-#: cups/http.c:4277
-msgid "Unable to establish a secure connection to host (peer dropped connection before responding)."
-msgstr "No se ha podido establecer una conexión segura con el servidor (el par cortó la conexión antes de responder)."
+msgid ""
+"Unable to establish a secure connection to host (peer dropped connection "
+"before responding)."
+msgstr ""
+"No se ha podido establecer una conexión segura con el servidor (el par cortó "
+"la conexión antes de responder)."
 
-#: cups/http.c:4252
-msgid "Unable to establish a secure connection to host (self-signed certificate)."
-msgstr "No se ha podido establecer una conexión segura con el servidor (certificado auto-firmado)."
+msgid ""
+"Unable to establish a secure connection to host (self-signed certificate)."
+msgstr ""
+"No se ha podido establecer una conexión segura con el servidor (certificado "
+"auto-firmado)."
 
-#: cups/http.c:4247
-msgid "Unable to establish a secure connection to host (untrusted certificate)."
-msgstr "No se ha podido establecer una conexión segura con el servidor (certificado no seguro)."
+msgid ""
+"Unable to establish a secure connection to host (untrusted certificate)."
+msgstr ""
+"No se ha podido establecer una conexión segura con el servidor (certificado "
+"no seguro)."
 
-#: cups/http.c:4008
-#: cups/http.c:4304
-#: cups/http.c:4337
-#: cups/http.c:4354
 msgid "Unable to establish a secure connection to host."
 msgstr "No se ha podido establecer una conexión segura al servidor."
 
-#: cgi-bin/ipp-var.c:365
 msgid "Unable to find destination for job"
 msgstr "No se ha podido encontrar destino para el trabajo"
 
-#: cups/http-support.c:1748
 msgid "Unable to find printer."
 msgstr "No se ha podido encontrar la impresora."
 
-#: backend/ipp.c:2056
 msgid "Unable to generate compressed print file"
 msgstr "No se ha podido crear el archivo de impresión comprimido"
 
-#: backend/ipp.c:3009
 msgid "Unable to get backend exit status."
 msgstr "No se ha podido obtener el estado de salida del programa backend"
 
-#: cgi-bin/classes.c:450
 msgid "Unable to get class list"
 msgstr "No se ha podido obtener la lista de clases"
 
-#: cgi-bin/classes.c:549
 msgid "Unable to get class status"
 msgstr "No se ha podido obtener el estado de la clase"
 
-#: cgi-bin/admin.c:1320
 msgid "Unable to get list of printer drivers"
 msgstr "No se ha podido obtener la lista de controladores de impresora"
 
-#: cgi-bin/admin.c:2840
 msgid "Unable to get printer attributes"
 msgstr "No se han podido obtener los atributos de la impresora"
 
-#: cgi-bin/printers.c:467
 msgid "Unable to get printer list"
 msgstr "No se ha podido obtener la lista de impresoras"
 
-#: cgi-bin/printers.c:569
 msgid "Unable to get printer status"
 msgstr "No se ha podido obtener el estado de la impresora"
 
-#: backend/ipp.c:933
 msgid "Unable to get printer status."
 msgstr "No se ha podido obtener el estado de la impresora."
 
-#: cups/adminutil.c:565
-#: cups/adminutil.c:769
 #, c-format
 msgid "Unable to install Windows 2000 printer driver files (%d)."
-msgstr "No se han podido instalar los archivos del controlador de impresora de Windows 2000 (%d)."
+msgstr ""
+"No se han podido instalar los archivos del controlador de impresora de "
+"Windows 2000 (%d)."
 
-#: cups/adminutil.c:639
 #, c-format
 msgid "Unable to install Windows 9x printer driver files (%d)."
-msgstr "No se han podido instalar los archivos del controlador de impresora de Windows 9x (%d)."
+msgstr ""
+"No se han podido instalar los archivos del controlador de impresora de "
+"Windows 9x (%d)."
 
-#: cgi-bin/help.c:92
 msgid "Unable to load help index."
 msgstr "No se ha podido cargar el índice de ayuda."
 
-#: backend/ipp.c:642
-#: backend/lpd.c:421
-#: backend/socket.c:275
 #, c-format
 msgid "Unable to locate printer \"%s\"."
 msgstr "No se ha podido localizar la impresora \"%s\"."
 
-#: backend/dnssd.c:781
-#: backend/ipp.c:324
-#: backend/lpd.c:204
-#: backend/socket.c:171
 msgid "Unable to locate printer."
 msgstr "No se ha podido localizar la impresora."
 
-#: cgi-bin/admin.c:813
 msgid "Unable to modify class"
 msgstr "No se ha podido modificar la clase"
 
-#: cgi-bin/admin.c:1058
-#: cgi-bin/admin.c:1418
 msgid "Unable to modify printer"
 msgstr "No se ha podido modificar la impresora"
 
-#: cgi-bin/ipp-var.c:432
-#: cgi-bin/ipp-var.c:521
 msgid "Unable to move job"
 msgstr "No se ha podido mover el trabajo"
 
-#: cgi-bin/ipp-var.c:434
-#: cgi-bin/ipp-var.c:523
 msgid "Unable to move jobs"
 msgstr "No se han podido mover los trabajos"
 
-#: cgi-bin/admin.c:3186
-#: cups/ppd.c:339
 msgid "Unable to open PPD file"
 msgstr "No se ha podido abrir el archivo PPD"
 
-#: backend/ipp.c:2040
 msgid "Unable to open compressed print file"
 msgstr "No se ha podido abrir el archivo de impresión comprimido"
 
-#: cgi-bin/admin.c:2608
 msgid "Unable to open cupsd.conf file:"
 msgstr "No se ha podido abrir el archivo cupsd.conf:"
 
-#: backend/usb-unix.c:141
 msgid "Unable to open device file"
 msgstr "No se ha podido abrir el archivo de dispositivo"
 
-#: scheduler/ipp.c:6140
 #, c-format
 msgid "Unable to open document #%d in job #%d."
 msgstr "No se ha podido abrir el documento #%d del trabajo #%d."
 
-#: cgi-bin/help.c:364
 msgid "Unable to open help file."
 msgstr "No se ha podido abrir el archivo de ayuda."
 
-#: backend/ipp.c:365
-#: backend/ipp.c:1398
-#: backend/ipp.c:1594
-#: backend/ipp.c:2046
-#: backend/lpd.c:488
-#: backend/socket.c:158
-#: backend/usb.c:237
-#: filter/gziptoany.c:71
-#: filter/pstops.c:300
 msgid "Unable to open print file"
 msgstr "No se ha podido abrir el archivo de impresión"
 
-#: filter/rastertoepson.c:998
-#: filter/rastertohp.c:724
-#: filter/rastertolabel.c:1147
 msgid "Unable to open raster file"
 msgstr "No se ha podido abrir el archivo de trama de datos (raster)"
 
-#: cgi-bin/ipp-var.c:795
 msgid "Unable to print test page"
 msgstr "No se ha podido imprimir la página de prueba"
 
-#: backend/runloop.c:96
-#: backend/runloop.c:325
-#: backend/usb-darwin.c:613
-#: backend/usb-darwin.c:657
-#: backend/usb-libusb.c:343
-#: backend/usb-libusb.c:378
 msgid "Unable to read print data."
 msgstr "No se han podido leer los datos de impresión."
 
-#: cups/dest.c:3402
 msgid "Unable to resolve printer URI."
 msgstr "No se ha podido resolver el URI de la impresora."
 
-#: cups/adminutil.c:2088
 #, c-format
 msgid "Unable to run \"%s\": %s"
 msgstr "No se ha podido ejecutar \"%s\": %s"
 
-#: filter/pstops.c:563
 msgid "Unable to see in file"
 msgstr "No se ha podido mirar en el archivo"
 
-#: cgi-bin/ipp-var.c:598
-#: cgi-bin/ipp-var.c:618
 msgid "Unable to send command to printer driver"
 msgstr "No se ha podido enviar un comando al controlador de la impresora"
 
-#: backend/usb-darwin.c:735
-#: backend/usb-libusb.c:454
 msgid "Unable to send data to printer."
 msgstr "No se han podido enviar datos a la impresora."
 
-#: cups/adminutil.c:821
 #, c-format
 msgid "Unable to set Windows printer driver (%d)."
-msgstr "No se ha podido configurar el controlador de impresora de Windows (%d)."
+msgstr ""
+"No se ha podido configurar el controlador de impresora de Windows (%d)."
 
-#: cgi-bin/admin.c:3807
 msgid "Unable to set options"
 msgstr "No se han podido cambiar las opciones"
 
-#: cgi-bin/admin.c:3077
 msgid "Unable to set server default"
 msgstr "No se ha podido establecer el servidor predeterminado"
 
-#: backend/ipp.c:2868
-#: backend/ipp.c:2945
-#: backend/ipp.c:2953
 msgid "Unable to start backend process."
 msgstr "No se ha podido iniciar el proceso backend."
 
-#: cgi-bin/admin.c:1912
 msgid "Unable to upload cupsd.conf file"
 msgstr "No se ha podido enviar el archivo cupsd.conf"
 
-#: backend/usb-darwin.c:1985
-#: backend/usb-darwin.c:2009
 msgid "Unable to use legacy USB class driver."
-msgstr "No se ha podido usar el controlador de dispositivo de clase USB obsoleto."
+msgstr ""
+"No se ha podido usar el controlador de dispositivo de clase USB obsoleto."
 
-#: backend/runloop.c:125
-#: backend/runloop.c:380
 msgid "Unable to write print data"
 msgstr "No se han podido escribir los datos de impresión"
 
-#: filter/gziptoany.c:90
 #, c-format
 msgid "Unable to write uncompressed print data: %s"
 msgstr "No se han podido escribir los datos de impresión sin comprimir: %s"
 
-#: cups/http-support.c:1303
 msgid "Unauthorized"
 msgstr "No autorizado"
 
-#: cgi-bin/admin.c:3503
 msgid "Units"
 msgstr "Unidades"
 
-#: cups/http-support.c:1343
-#: cups/ppd.c:366
 msgid "Unknown"
 msgstr "Desconocido"
 
-#: filter/pstops.c:2213
 #, c-format
 msgid "Unknown choice \"%s\" for option \"%s\"."
 msgstr "Preferencia \"%s\" desconocida para la opción \"%s\"."
 
-#: backend/ipp.c:507
 #, c-format
 msgid "Unknown encryption option value: \"%s\"."
 msgstr "Valor de opción de cifrado \"%s\" desconocida."
 
-#: backend/lpd.c:350
 #, c-format
 msgid "Unknown file order: \"%s\"."
 msgstr "Orden de archivos \"%s\" desconocido."
 
-#: backend/lpd.c:321
 #, c-format
 msgid "Unknown format character: \"%c\"."
 msgstr "Carácter de formato \"%c\" desconocido."
 
-#: cups/dest-options.c:770
 msgid "Unknown media size name."
 msgstr "Nombre de tamaño de papel desconocido."
 
-#: backend/ipp.c:554
 #, c-format
 msgid "Unknown option \"%s\" with value \"%s\"."
 msgstr "Opción \"%s\" con valor \"%s\" desconocida."
 
-#: filter/pstops.c:2196
 #, c-format
 msgid "Unknown option \"%s\"."
 msgstr "Opción \"%s\" desconocida"
 
-#: backend/lpd.c:336
 #, c-format
 msgid "Unknown print mode: \"%s\"."
 msgstr "Modo de impresión \"%s\" desconocido."
 
-#: scheduler/ipp.c:10496
 #, c-format
 msgid "Unknown printer-error-policy \"%s\"."
 msgstr "printer-error-policy \"%s\" incorrecto."
 
-#: scheduler/ipp.c:10479
 #, c-format
 msgid "Unknown printer-op-policy \"%s\"."
 msgstr "printer-op-policy \"%s\" incorrecto."
 
-#: cups/http-addrlist.c:710
 msgid "Unknown service name."
 msgstr "Nombre de servicio desconocido."
 
-#: backend/ipp.c:526
 #, c-format
 msgid "Unknown version option value: \"%s\"."
 msgstr "Valor de opción de versión \"%s\" desconocida."
 
-#: scheduler/ipp.c:402
+#, 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 "Juego de caracteres \"%s\" no permitido."
 
-#: scheduler/ipp.c:8171
-#: scheduler/ipp.c:9401
-#: scheduler/ipp.c:10950
 #, c-format
 msgid "Unsupported compression \"%s\"."
 msgstr "Compresión \"%s\" no permitida."
 
-#: scheduler/ipp.c:8305
-#: scheduler/ipp.c:9551
-#: scheduler/ipp.c:10979
 #, c-format
 msgid "Unsupported document-format \"%s\"."
 msgstr "document-format \"%s\" no permitido."
 
-#: scheduler/ipp.c:9534
 #, c-format
 msgid "Unsupported document-format \"%s/%s\"."
 msgstr "document-format \"%s/%s\" no permitido."
 
-#: scheduler/ipp.c:1367
 #, c-format
 msgid "Unsupported format \"%s\"."
 msgstr "Formato \"%s\" no permitido."
 
-#: scheduler/ipp.c:1465
 msgid "Unsupported margins."
 msgstr "Márgenes no permitidos."
 
-#: cups/pwg-media.c:529
 msgid "Unsupported media value."
 msgstr "Valor del medio no permitido."
 
-#: filter/pstops.c:2478
 #, c-format
 msgid "Unsupported number-up value %d, using number-up=1."
-msgstr "Valor de number-up (páginas por hoja) %d no permitido; usando number-up=1."
+msgstr ""
+"Valor de number-up (páginas por hoja) %d no permitido; usando number-up=1."
 
-#: filter/pstops.c:2512
 #, c-format
 msgid "Unsupported number-up-layout value %s, using number-up-layout=lrtb."
-msgstr "Valor de number-up-layout (disposición de páginas por hoja) %s no permitido; usando number-up-layout=lrtb."
+msgstr ""
+"Valor de number-up-layout (disposición de páginas por hoja) %s no permitido; "
+"usando number-up-layout=lrtb."
 
-#: filter/pstops.c:2563
 #, c-format
 msgid "Unsupported page-border value %s, using page-border=none."
-msgstr "Valor de page-border (borde de página) %s no permitido; usando page-border=none (ninguno)."
+msgstr ""
+"Valor de page-border (borde de página) %s no permitido; usando page-"
+"border=none (ninguno)."
 
-#: filter/rastertopwg.c:147
-#: filter/rastertopwg.c:155
-#: filter/rastertopwg.c:164
 msgid "Unsupported raster data."
 msgstr "Trama de datos no permitidos."
 
-#: cups/snmp.c:1112
 msgid "Unsupported value type"
 msgstr "Tipo de valor no permitido"
 
-#: cups/http-support.c:1318
 msgid "Upgrade Required"
 msgstr "Se requiere actualización"
 
-#: systemv/lpadmin.c:668
 msgid ""
 "Usage:\n"
 "\n"
@@ -6053,53 +4490,37 @@ msgstr ""
 "                         [-P archivo_ppd] [-o nombre=valor]\n"
 "                         [-u allow:usuario,usuario] [-u deny:usuario,usuario]"
 
-#: backend/dnssd.c:241
-#: backend/ipp.c:313
-#: backend/lpd.c:191
-#: backend/socket.c:135
-#: backend/usb.c:183
-#: filter/commandtops.c:74
-#: filter/gziptoany.c:50
-#: filter/pstops.c:264
-#: monitor/bcp.c:62
-#: monitor/tbcp.c:61
 #, c-format
 msgid "Usage: %s job-id user title copies options [file]"
 msgstr "Uso: %s job-id usuario título copias opciones [archivo]"
 
-#: systemv/cupsaddsmb.c:281
 msgid "Usage: cupsaddsmb [options] printer1 ... printerN"
 msgstr "Uso: cupsaddsmb [opciones] impresora1 ... impresoraN"
 
-#: systemv/cupsctl.c:200
 msgid "Usage: cupsctl [options] [param=value ... paramN=valueN]"
 msgstr "Uso: cupsctl [opciones] [param=valor ... paramN=valorN]"
 
-#: scheduler/main.c:2017
 msgid "Usage: cupsd [options]"
 msgstr "Uso: cupsd [opciones)"
 
-#: scheduler/cupsfilter.c:1429
 msgid "Usage: cupsfilter [ options ] filename"
 msgstr "Uso: cupsfilter ( opciones ) archivo"
 
-#: systemv/cupstestdsc.c:425
 msgid "Usage: cupstestdsc [options] filename.ps [... filename.ps]"
 msgstr "Uso: cupstestdsc [opciones] nombre_archivo.ps [... nombre_archivo.ps]"
 
-#: systemv/cupstestppd.c:3793
-msgid "Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]"
-msgstr "Uso: cupstestppd [opciones] nombre_archivo1.ppd[.gz] [... nombre_archivoN.ppd[.gz]]"
+msgid ""
+"Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]"
+msgstr ""
+"Uso: cupstestppd [opciones] nombre_archivo1.ppd[.gz] [... nombre_archivoN.ppd"
+"[.gz]]"
 
-#: test/ipptool.c:4401
 msgid "Usage: ipptool [options] URI filename [ ... filenameN ]"
 msgstr "Uso: ipptool [opciones] URI nombre_archivo [ ... nombre_archivoN ]"
 
-#: systemv/lpmove.c:125
 msgid "Usage: lpmove job/src dest"
 msgstr "Uso: lpmove trabajo/fuente destino"
 
-#: systemv/lpoptions.c:553
 msgid ""
 "Usage: lpoptions [-h server] [-E] -d printer\n"
 "       lpoptions [-h server] [-E] [-p printer] -l\n"
@@ -6111,11 +4532,9 @@ msgstr ""
 "     lpoptions [-h servidor] [-E] -p impresora -o opción[=valor] ...\n"
 "     lpoptions [-h servidor] [-E] -x impresora"
 
-#: systemv/lppasswd.c:476
 msgid "Usage: lppasswd [-g groupname]"
 msgstr "Uso: lppasswd [-g nombre_grupo]"
 
-#: systemv/lppasswd.c:479
 msgid ""
 "Usage: lppasswd [-g groupname] [username]\n"
 "       lppasswd [-g groupname] -a [username]\n"
@@ -6125,368 +4544,296 @@ msgstr ""
 "     lppasswd [-g nombre_grupo] -a [nombre_usuario]\n"
 "     lppasswd [-g nombre_grupo] -x [nombre_usuario]"
 
-#: berkeley/lpq.c:670
-msgid "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
-msgstr "Uso: lpq (-P dest) (-U nombre_usuario) (-h nombre_ordenador(:puerto)) (-l) (+intervalo)"
+msgid ""
+"Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
+msgstr ""
+"Uso: lpq (-P dest) (-U nombre_usuario) (-h nombre_ordenador(:puerto)) (-l) "
+"(+intervalo)"
 
-#: ppdc/ppdc.cxx:435
 msgid "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]"
 msgstr "Uso: ppdc [opciones] nombre_archivo.drv [ ... nombre_archivoN.drv ]"
 
-#: ppdc/ppdhtml.cxx:172
 msgid "Usage: ppdhtml [options] filename.drv >filename.html"
 msgstr "Uso: ppdhtml [opciones] nombre_archivo.drv >nombre_archivo.html"
 
-#: ppdc/ppdi.cxx:128
 msgid "Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]"
 msgstr "Uso: ppdi [opciones] nombre_archivo.ppd [ ... nombre_archivoN.ppd ]"
 
-#: ppdc/ppdmerge.cxx:367
 msgid "Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]"
-msgstr "Uso: ppdmerge [opciones] nombre_archivo.ppd [ ... nombre_archivoN.ppd ]"
+msgstr ""
+"Uso: ppdmerge [opciones] nombre_archivo.ppd [ ... nombre_archivoN.ppd ]"
 
-#: ppdc/ppdpo.cxx:252
-msgid "Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]"
-msgstr "Uso: ppdpo [opciones] -o nombre_archivo.po nombre_archivo.drv [ ... nombre_archivoN.drv ]"
+msgid ""
+"Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]"
+msgstr ""
+"Uso: ppdpo [opciones] -o nombre_archivo.po nombre_archivo.drv [ ... "
+"nombre_archivoN.drv ]"
 
-#: backend/snmp.c:218
 msgid "Usage: snmp [host-or-ip-address]"
 msgstr "Uso: snmp [ordenador-o-dirección-ip]"
 
-#: cups/snmp.c:1064
 msgid "Value uses indefinite length"
 msgstr "Valor usa una longitud indefinida"
 
-#: cups/snmp.c:1049
 msgid "VarBind uses indefinite length"
 msgstr "VarBind usa una longitud indefinida"
 
-#: cups/snmp.c:999
 msgid "Version uses indefinite length"
 msgstr "Versión usa una longitud indefinida"
 
-#: backend/ipp.c:1675
 msgid "Waiting for job to complete."
 msgstr "Esperando a que finalice el trabajo."
 
-#: backend/usb-darwin.c:457
-#: backend/usb-libusb.c:193
 msgid "Waiting for printer to become available."
 msgstr "Esperando a que la impresora esté disponible."
 
-#: backend/socket.c:444
 msgid "Waiting for printer to finish."
 msgstr "Esperando a que finalice la impresora."
 
-#: cups/adminutil.c:793
 msgid "Warning, no Windows 2000 printer drivers are installed."
-msgstr "Advertencia, no está instalado ningún controlador de impresora de Windows 2000."
+msgstr ""
+"Advertencia, no está instalado ningún controlador de impresora de Windows "
+"2000."
 
-#: cups/http-support.c:1339
 msgid "Web Interface is Disabled"
 msgstr "La interfaz web está desactivada."
 
-#: cups/ppd.c:1947
 msgid "Yes"
 msgstr "Si"
 
-#: scheduler/client.c:2437
 #, c-format
-msgid "You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
-msgstr "Debe acceder a esta página usando el URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
+msgid ""
+"You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://"
+"%s:%d%s</A>."
+msgstr ""
+"Debe acceder a esta página usando el URL <A HREF=\"https://%s:%d%s\">https://"
+"%s:%d%s</A>."
 
-#: systemv/lppasswd.c:254
-msgid "Your password must be at least 6 characters long, cannot contain your username, and must contain at least one letter and number."
-msgstr "Su contraseña debe tener al menos 6 caracteres, no puede contener su nombre de usuario, y debe tener al menos una letra y un número."
+msgid ""
+"Your password must be at least 6 characters long, cannot contain your "
+"username, and must contain at least one letter and number."
+msgstr ""
+"Su contraseña debe tener al menos 6 caracteres, no puede contener su nombre "
+"de usuario, y debe tener al menos una letra y un número."
 
-#: ppdc/sample.c:439
 msgid "ZPL Label Printer"
 msgstr "Impresora de etiquetas ZPL"
 
-#: ppdc/sample.c:362
 msgid "Zebra"
 msgstr "Zebra"
 
-#: cups/notify.c:102
 msgid "aborted"
 msgstr "cancelado"
 
-#: cups/notify.c:99
 msgid "canceled"
 msgstr "cancelado"
 
-#: cups/notify.c:105
 msgid "completed"
 msgstr "completado"
 
-#: scheduler/ipp.c:6012
 msgid "cups-deviced failed to execute."
 msgstr "Ha fallado al ejecutarse cups-deviced."
 
-#: scheduler/ipp.c:6842
-#: scheduler/ipp.c:7091
 msgid "cups-driverd failed to execute."
 msgstr "Ha fallado al ejecutarse cups-driverd."
 
-#: systemv/cupsaddsmb.c:233
 #, c-format
 msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s"
 msgstr "cupsaddsmb: No hay archivo PPD para la impresora \"%s\" - %s"
 
-#: systemv/cupsctl.c:141
 msgid "cupsctl: Cannot set Listen or Port directly."
 msgstr "cupsctl: No se puede establecer Listen o Port directamente."
 
-#: systemv/cupsctl.c:152
 #, c-format
 msgid "cupsctl: Unable to connect to server: %s"
 msgstr "cupsctl: No se ha podido conectar al servidor: %s"
 
-#: systemv/cupsctl.c:195
 #, c-format
 msgid "cupsctl: Unknown option \"%s\""
 msgstr "cupsctl: Opción \"%s\" desconocida"
 
-#: systemv/cupsctl.c:197
 #, c-format
 msgid "cupsctl: Unknown option \"-%c\""
 msgstr "cupsctl: Opción \"-%c\" desconocida"
 
-#: scheduler/main.c:189
 msgid "cupsd: Expected config filename after \"-c\" option."
-msgstr "cupsd: Se esperaba un nombre de archivo de configuración tras la opción \"-c\"."
+msgstr ""
+"cupsd: Se esperaba un nombre de archivo de configuración tras la opción \"-c"
+"\"."
 
-#: scheduler/main.c:221
-#: scheduler/main.c:228
 msgid "cupsd: Unable to get current directory."
 msgstr "cupsd: No se ha podido obtener el directorio actual."
 
-#: scheduler/main.c:295
 #, c-format
 msgid "cupsd: Unknown argument \"%s\" - aborting."
 msgstr "cupsd: Argumento \"%s\" desconocido - cancelando."
 
-#: scheduler/main.c:288
 #, c-format
 msgid "cupsd: Unknown option \"%c\" - aborting."
 msgstr "cupsd: Opción \"%c\" desconocida - cancelando."
 
-#: scheduler/main.c:255
 msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
-msgstr "cupsd: el uso de launchd(8) no ha sido compilado, ejecutándose en modo normal."
+msgstr ""
+"cupsd: el uso de launchd(8) no ha sido compilado, ejecutándose en modo "
+"normal."
 
-#: scheduler/cupsfilter.c:1209
 #, c-format
 msgid "cupsfilter: Invalid document number %d."
 msgstr "cupsfilter: Número de documento %d no válido."
 
-#: scheduler/cupsfilter.c:1203
 #, c-format
 msgid "cupsfilter: Invalid job ID %d."
 msgstr "cupsfilter: ID de trabajo %d no válida."
 
-#: scheduler/cupsfilter.c:358
 msgid "cupsfilter: Only one filename can be specified."
 msgstr "cupsfilter: Solo se puede especificar un nombre de archivo."
 
-#: scheduler/cupsfilter.c:1251
 #, c-format
 msgid "cupsfilter: Unable to get job file - %s"
 msgstr "cupsfilter: No se ha podido obtener el archivo del trabajo - %s"
 
-#: systemv/cupstestppd.c:261
 msgid "cupstestppd: The -q option is incompatible with the -v option."
 msgstr "cupstestppd: La opción -q es incompatible con la opción -v."
 
-#: systemv/cupstestppd.c:277
 msgid "cupstestppd: The -v option is incompatible with the -q option."
 msgstr "cupstestppd: La opción -v es incompatible con la opción -q."
 
-#: systemv/lpstat.c:1231
-#: systemv/lpstat.c:1234
-#: systemv/lpstat.c:1237
 #, c-format
 msgid "device for %s/%s: %s"
 msgstr "dispositivo para %s/%s: %s"
 
-#: systemv/lpstat.c:1218
-#: systemv/lpstat.c:1221
-#: systemv/lpstat.c:1224
 #, c-format
 msgid "device for %s: %s"
 msgstr "dispositivo para %s: %s"
 
-#: cups/snmp.c:1036
 msgid "error-index uses indefinite length"
 msgstr "error-index usa una longitud indefinida"
 
-#: cups/snmp.c:1028
 msgid "error-status uses indefinite length"
 msgstr "error-status usa una longitud indefinida"
 
-#: cups/notify.c:90
 msgid "held"
 msgstr "retenido"
 
-#: berkeley/lpc.c:209
 msgid "help\t\tGet help on commands."
 msgstr "help\t\tProporciona ayuda sobre los comandos."
 
-#: cups/notify.c:131
 msgid "idle"
 msgstr "inactiva"
 
-#: test/ipptool.c:373
-#: test/ipptool.c:515
-#: test/ipptool.c:539
 msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
 msgstr "ipptool: \"-i\" y \"-n\" son incompatibles with -X\"."
 
-#: test/ipptool.c:597
 #, c-format
 msgid "ipptool: Bad URI - %s."
 msgstr "ipptool: URI - %s incorrecto."
 
-#: test/ipptool.c:362
 #, c-format
 msgid "ipptool: Bad version %s for \"-V\"."
 msgstr "ipptool: Versión %s para \"-V\" incorrecta."
 
-#: test/ipptool.c:508
 msgid "ipptool: Invalid seconds for \"-i\"."
 msgstr "ipptool: Número de segundos no válido para \"-i\"."
 
-#: test/ipptool.c:578
 msgid "ipptool: May only specify a single URI."
 msgstr "ipptool: Sólo se puede especificar un URI."
 
-#: test/ipptool.c:531
 msgid "ipptool: Missing count for \"-n\"."
 msgstr "ipptool: Falta el contador para \"-n\"."
 
-#: test/ipptool.c:408
 msgid "ipptool: Missing filename for \"-f\"."
 msgstr "ipptool: Falta el nombre del archivo para \"-f\"."
 
-#: test/ipptool.c:389
 msgid "ipptool: Missing name=value for \"-d\"."
 msgstr "ipptool: Falta un nombre=valor para \"-d\"."
 
-#: test/ipptool.c:498
 msgid "ipptool: Missing seconds for \"-i\"."
 msgstr "ipptool: Falta el número de segundos para \"-i\"."
 
-#: test/ipptool.c:332
 msgid "ipptool: Missing timeout for \"-T\"."
 msgstr "ipptool: Falta un tiempo de espera para \"-T\"."
 
-#: test/ipptool.c:345
 msgid "ipptool: Missing version for \"-V\"."
 msgstr "ipptool: Falta la versión para \"-V\"."
 
-#: test/ipptool.c:624
 msgid "ipptool: URI required before test file."
 msgstr "ipptool: Se requiere un URI antes del archivo de prueba."
 
-#: test/ipptool.c:558
 #, c-format
 msgid "ipptool: Unknown option \"-%c\"."
 msgstr "ipptool: Opción \"-%c\" desconocida."
 
-#: scheduler/ipp.c:7838
 msgid "job-printer-uri attribute missing."
 msgstr "Falta el atributo job-printer-uri."
 
-#: systemv/lpadmin.c:131
-#: systemv/lpadmin.c:375
 msgid "lpadmin: Class name can only contain printable characters."
-msgstr "lpadmin: El nombre de la clase sólo puede contener caracteres imprimibles."
+msgstr ""
+"lpadmin: El nombre de la clase sólo puede contener caracteres imprimibles."
 
-#: systemv/lpadmin.c:614
 msgid "lpadmin: Expected PPD after \"-P\" option."
 msgstr "lpadmin: Se esperaba un PPD tras la opción \"-P\"."
 
-#: systemv/lpadmin.c:457
 msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
 msgstr "lpadmin: Se esperaba allow/deny:lista_usuarios tras la opción \"-u\"."
 
-#: systemv/lpadmin.c:364
 msgid "lpadmin: Expected class after \"-r\" option."
 msgstr "lpadmin: Se esperaba una clase tras la opción \"-r\"."
 
-#: systemv/lpadmin.c:120
 msgid "lpadmin: Expected class name after \"-c\" option."
 msgstr "lpadmin: Se esperaba un nombre de clase tras la opción \"-c\"."
 
-#: systemv/lpadmin.c:558
 msgid "lpadmin: Expected description after \"-D\" option."
 msgstr "lpadmin: Se esperaba una descripción tras la opción \"-D\"."
 
-#: systemv/lpadmin.c:491
 msgid "lpadmin: Expected device URI after \"-v\" option."
 msgstr "lpadmin: Se esperaba un URI de dispositivo tras la opción \"-v\"."
 
-#: systemv/lpadmin.c:574
 msgid "lpadmin: Expected file type(s) after \"-I\" option."
 msgstr "lpadmin: Se esperaba(n) tipo(s) de archivo(s) tras la opción \"-l\"."
 
-#: systemv/lpadmin.c:202
 msgid "lpadmin: Expected hostname after \"-h\" option."
 msgstr "lpadmin: Se esperaba un nombre de ordenador tras la opción \"-h\"."
 
-#: systemv/lpadmin.c:221
 msgid "lpadmin: Expected interface after \"-i\" option."
 msgstr "lpadmin: Se esperaba una interfaz tras la opción \"-i\"."
 
-#: systemv/lpadmin.c:594
 msgid "lpadmin: Expected location after \"-L\" option."
 msgstr "lpadmin: Se esperaba una ubicación tras la opción \"-L\"."
 
-#: systemv/lpadmin.c:274
 msgid "lpadmin: Expected model after \"-m\" option."
 msgstr "lpadmin: Se esperaba un modelo tras la opción \"-m\"."
 
-#: systemv/lpadmin.c:417
 msgid "lpadmin: Expected name after \"-R\" option."
 msgstr "lpadmin: Se esperaba un nombre tras la opción \"-R\"."
 
-#: systemv/lpadmin.c:294
 msgid "lpadmin: Expected name=value after \"-o\" option."
 msgstr "lpadmin: Se esperaba un nombre=valor tras la opción \"-o\"."
 
-#: systemv/lpadmin.c:313
 msgid "lpadmin: Expected printer after \"-p\" option."
 msgstr "lpadmin: Se esperaba una impresora tras la opción \"-p\"."
 
-#: systemv/lpadmin.c:164
 msgid "lpadmin: Expected printer name after \"-d\" option."
 msgstr "lpadmin: Se esperaba un nombre de impresora tras la opción \"-d\"."
 
-#: systemv/lpadmin.c:525
 msgid "lpadmin: Expected printer or class after \"-x\" option."
 msgstr "lpadmin: Se esperaba una impresora o clase tras la opción \"-x\"."
 
-#: systemv/lpadmin.c:975
 msgid "lpadmin: No member names were seen."
 msgstr "lpadmin: No se han visto nombres de miembros"
 
-#: systemv/lpadmin.c:762
 #, c-format
 msgid "lpadmin: Printer %s is already a member of class %s."
 msgstr "lpadmin: La impresora %s ya es miembro de la clase %s."
 
-#: systemv/lpadmin.c:989
 #, c-format
 msgid "lpadmin: Printer %s is not a member of class %s."
 msgstr "lpadmin: La impresora %s no es miembro de la clase %s."
 
-#: systemv/lpadmin.c:175
-#: systemv/lpadmin.c:324
-#: systemv/lpadmin.c:536
 msgid "lpadmin: Printer name can only contain printable characters."
-msgstr "lpadmin: El nombre de la impresora sólo puede contener caracteres imprimibles."
+msgstr ""
+"lpadmin: El nombre de la impresora sólo puede contener caracteres "
+"imprimibles."
 
-#: systemv/lpadmin.c:105
 msgid ""
 "lpadmin: Unable to add a printer to the class:\n"
 "         You must specify a printer name first."
@@ -6494,22 +4841,13 @@ msgstr ""
 "lpadmin: No se ha podido añadir una impresora a la clase:\n"
 "         Debe especificar un nombre de impresora primero."
 
-#: systemv/lpadmin.c:96
-#: systemv/lpadmin.c:149
-#: systemv/lpadmin.c:253
-#: systemv/lpadmin.c:339
-#: systemv/lpadmin.c:393
-#: systemv/lpadmin.c:510
-#: systemv/lpadmin.c:647
 #, c-format
 msgid "lpadmin: Unable to connect to server: %s"
 msgstr "lpadmin: No se ha podido conectar al servidor: %s"
 
-#: systemv/lpadmin.c:1329
 msgid "lpadmin: Unable to create temporary file"
 msgstr "lpadmin: No se ha podido crear el archivo temporal"
 
-#: systemv/lpadmin.c:402
 msgid ""
 "lpadmin: Unable to delete option:\n"
 "         You must specify a printer name first."
@@ -6517,12 +4855,10 @@ msgstr ""
 "lpadmin: No se ha podido borrar la opción:\n"
 "         Primero debe especificar un nombre de impresora."
 
-#: systemv/lpadmin.c:1339
 #, c-format
 msgid "lpadmin: Unable to open PPD file \"%s\" - %s"
 msgstr "lpadmin: No se ha podido abrir el archivo PPD \"%s\" - %s"
 
-#: systemv/lpadmin.c:348
 msgid ""
 "lpadmin: Unable to remove a printer from the class:\n"
 "         You must specify a printer name first."
@@ -6530,7 +4866,6 @@ msgstr ""
 "lpadmin: No se ha podido quitar una impresora de la clase:\n"
 "         Primero debe especificar un nombre de impresora."
 
-#: systemv/lpadmin.c:656
 msgid ""
 "lpadmin: Unable to set the printer options:\n"
 "         You must specify a printer name first."
@@ -6538,779 +4873,653 @@ msgstr ""
 "lpadmin: No se han podido establecer las opciones de impresora:\n"
 "         Primero debe especificar un nombre de impresora."
 
-#: systemv/lpadmin.c:474
 #, c-format
 msgid "lpadmin: Unknown allow/deny option \"%s\"."
 msgstr "lpadmin: Opción allow/deny desconocida \"%s\"."
 
-#: systemv/lpadmin.c:629
 #, c-format
 msgid "lpadmin: Unknown argument \"%s\"."
 msgstr "lpadmin: Argumento \"%s\" desconocido."
 
-#: systemv/lpadmin.c:624
 #, c-format
 msgid "lpadmin: Unknown option \"%c\"."
 msgstr "lpadmin: Opción \"%c\" desconocida."
 
-#: systemv/lpadmin.c:580
 msgid "lpadmin: Warning - content type list ignored."
 msgstr "lpadmin: Advertencia - lista de tipo de contenido no tenida en cuenta."
 
-#: berkeley/lpc.c:76
-#: berkeley/lpc.c:104
-#: berkeley/lpc.c:140
 msgid "lpc> "
 msgstr "lpc> "
 
-#: systemv/lpinfo.c:137
 msgid "lpinfo: Expected 1284 device ID string after \"--device-id\"."
-msgstr "lpinfo: Se esperaba una cadena ID de dispositivo 1284 tras \"--device-id\"."
+msgstr ""
+"lpinfo: Se esperaba una cadena ID de dispositivo 1284 tras \"--device-id\"."
 
-#: systemv/lpinfo.c:190
 msgid "lpinfo: Expected language after \"--language\"."
 msgstr "lpinfo: Se esperaba un idioma tras \"--language\"."
 
-#: systemv/lpinfo.c:207
 msgid "lpinfo: Expected make and model after \"--make-and-model\"."
 msgstr "lpinfo: Se esperaba marca y modelo tras \"--make-and-model\"."
 
-#: systemv/lpinfo.c:224
 msgid "lpinfo: Expected product string after \"--product\"."
 msgstr "lpinfo: Se esperaba una cadena de producto tras \"--product\"."
 
-#: systemv/lpinfo.c:155
 msgid "lpinfo: Expected scheme list after \"--exclude-schemes\"."
 msgstr "lpinfo: Se esperaba una lista de esquemas tras \"--exclude-schemes\"."
 
-#: systemv/lpinfo.c:173
 msgid "lpinfo: Expected scheme list after \"--include-schemes\"."
 msgstr "lpinfo: Se esperaba una lista de esquemas tras \"--include-schemes\"."
 
-#: systemv/lpinfo.c:241
 msgid "lpinfo: Expected timeout after \"--timeout\"."
 msgstr "lpinfo: Se esperaba un tiempo de espera tras \"--timeout\"."
 
-#: systemv/lpinfo.c:265
 #, c-format
 msgid "lpinfo: Unknown argument \"%s\"."
 msgstr "lpinfo: Argumento \"%s\" desconocido."
 
-#: systemv/lpinfo.c:259
 #, c-format
 msgid "lpinfo: Unknown option \"%c\"."
 msgstr "lpinfo: Opción \"%c\" desconocida."
 
-#: systemv/lpinfo.c:252
 #, c-format
 msgid "lpinfo: Unknown option \"%s\"."
 msgstr "lpinfo: Opción \"%s\" desconocida."
 
-#: systemv/lpmove.c:133
 #, c-format
 msgid "lpmove: Unable to connect to server: %s"
 msgstr "lpmove: No se ha podido conectar al servidor: %s"
 
-#: systemv/lpmove.c:119
 #, c-format
 msgid "lpmove: Unknown argument \"%s\"."
 msgstr "lpmove: Argumento \"%s\" desconocido."
 
-#: systemv/lpmove.c:97
 #, c-format
 msgid "lpmove: Unknown option \"%c\"."
 msgstr "lpmove: Opción \"%c\" desconocida."
 
-#: systemv/lpoptions.c:150
-#: systemv/lpoptions.c:168
-#: systemv/lpoptions.c:244
 msgid "lpoptions: No printers."
 msgstr "lpoptions: No hay impresoras."
 
-#: systemv/lpoptions.c:219
 #, c-format
 msgid "lpoptions: Unable to add printer or instance: %s"
 msgstr "lpoptions: No se ha podido añadir la impresora o la instancia: %s"
 
-#: systemv/lpoptions.c:521
 #, c-format
 msgid "lpoptions: Unable to get PPD file for %s: %s"
 msgstr "lpoptions: No se ha podido obtener el archivo PPD para %s: %s"
 
-#: systemv/lpoptions.c:529
 #, c-format
 msgid "lpoptions: Unable to open PPD file for %s."
 msgstr "lpoptions: No se ha podido abrir el archivo PPD para %s."
 
-#: systemv/lpoptions.c:99
 msgid "lpoptions: Unknown printer or class."
 msgstr "lpoptions: Impresora o clase desconocida."
 
-#: systemv/lppasswd.c:173
 msgid "lppasswd: Only root can add or delete passwords."
 msgstr "lppasswd: Solo el usuario root puede añadir o borrar contraseñas."
 
-#: systemv/lppasswd.c:302
 msgid "lppasswd: Password file busy."
 msgstr "lppasswd: Archivo de contraseñas ocupado."
 
-#: systemv/lppasswd.c:431
 msgid "lppasswd: Password file not updated."
 msgstr "lppasswd: Archivo de contraseñas no actualizado."
 
-#: systemv/lppasswd.c:398
 msgid "lppasswd: Sorry, password doesn't match."
 msgstr "lppasswd: Lo siento, la contraseña no coincide."
 
-#: systemv/lppasswd.c:253
 msgid "lppasswd: Sorry, password rejected."
 msgstr "lppasswd: Lo siento, la contraseña ha sido rechazada."
 
-#: systemv/lppasswd.c:230
 msgid "lppasswd: Sorry, passwords don't match."
 msgstr "lppasswd: Lo siento, las contraseñas no coinciden."
 
-#: systemv/lppasswd.c:199
-#: systemv/lppasswd.c:218
 #, c-format
 msgid "lppasswd: Unable to copy password string: %s"
 msgstr "lppasswd: No se ha podido copiar la cadena de contraseña: %s"
 
-#: systemv/lppasswd.c:304
-#: systemv/lppasswd.c:312
-#: systemv/lppasswd.c:329
 #, c-format
 msgid "lppasswd: Unable to open password file: %s"
 msgstr "lppasswd: No se ha podido abrir el archivo de contraseñas: %s"
 
-#: systemv/lppasswd.c:364
-#: systemv/lppasswd.c:377
-#: systemv/lppasswd.c:408
 #, c-format
 msgid "lppasswd: Unable to write to password file: %s"
 msgstr "lppasswd: No se ha podido escribir en el archivo de contraseñas: %s"
 
-#: systemv/lppasswd.c:446
 #, c-format
 msgid "lppasswd: failed to backup old password file: %s"
-msgstr "lppasswd: falló al hacer una copia de seguridad del antiguo archivo de contraseñas: %s"
+msgstr ""
+"lppasswd: falló al hacer una copia de seguridad del antiguo archivo de "
+"contraseñas: %s"
 
-#: systemv/lppasswd.c:458
 #, c-format
 msgid "lppasswd: failed to rename password file: %s"
 msgstr "lppasswd: falló al cambiar de nombre al archivo de contraseñas: %s"
 
-#: systemv/lppasswd.c:389
 #, c-format
 msgid "lppasswd: user \"%s\" and group \"%s\" do not exist."
 msgstr "lppasswd: el usuario \"%s\" y el grupo \"%s\" no existen."
 
-#: systemv/lpstat.c:1039
 #, c-format
-msgid "lpstat: error - %s environment variable names non-existent destination \"%s\"."
-msgstr "lpstat: error - Los nombre de variable de entorno %s no existen en el destino \"%s\"."
+msgid ""
+"lpstat: error - %s environment variable names non-existent destination \"%s"
+"\"."
+msgstr ""
+"lpstat: error - Los nombre de variable de entorno %s no existen en el "
+"destino \"%s\"."
 
-#: systemv/lpstat.c:970
 #, c-format
 msgid "members of class %s:"
 msgstr "miembros de la clase %s:"
 
-#: berkeley/lpq.c:582
 msgid "no entries"
 msgstr "no hay entradas"
 
-#: systemv/lpstat.c:1043
 msgid "no system default destination"
 msgstr "no hay un destino predeterminado del sistema"
 
-#: scheduler/ipp.c:5702
 msgid "notify-events not specified."
 msgstr "notify-events no especificado."
 
-#: scheduler/ipp.c:2034
-#: scheduler/ipp.c:5607
 #, c-format
 msgid "notify-recipient-uri URI \"%s\" is already used."
 msgstr "El URI notify-recipient-uri \"%s\" ya está usado."
 
-#: scheduler/ipp.c:2024
-#: scheduler/ipp.c:5597
 #, c-format
 msgid "notify-recipient-uri URI \"%s\" uses unknown scheme."
 msgstr "El URI notify-recipient-uri \"%s\" usa un esquema desconocido."
 
-#: cups/notify.c:87
 msgid "pending"
 msgstr "pendiente"
 
-#: ppdc/ppdc.cxx:113
-#: ppdc/ppdpo.cxx:93
 #, c-format
 msgid "ppdc: Adding include directory \"%s\"."
 msgstr "ppdc: Añadiendo directorio include \"%s\"."
 
-#: ppdc/ppdpo.cxx:134
 #, c-format
 msgid "ppdc: Adding/updating UI text from %s."
 msgstr "ppdc: Añadiendo/actualizando texto UI desde %s."
 
-#: ppdc/ppdc-source.cxx:410
 #, c-format
 msgid "ppdc: Bad boolean value (%s) on line %d of %s."
 msgstr "ppdc: Valor lógico (%s) incorrecto en línea %d de %s."
 
-#: ppdc/ppdc-import.cxx:264
 #, c-format
 msgid "ppdc: Bad font attribute: %s"
 msgstr "ppdc: Atributo de fuente: %s incorrecto"
 
-#: ppdc/ppdc-source.cxx:1796
 #, c-format
 msgid "ppdc: Bad resolution name \"%s\" on line %d of %s."
 msgstr "ppdc: Resolución de nombre \"%s\" incorrecta en línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:1113
 #, c-format
 msgid "ppdc: Bad status keyword %s on line %d of %s."
 msgstr "ppdc: Clave de estado %s incorrecta en línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:2033
 #, c-format
 msgid "ppdc: Bad variable substitution ($%c) on line %d of %s."
 msgstr "ppdc: Sustitución de variable ($%c) errónea en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:2719
 #, c-format
 msgid "ppdc: Choice found on line %d of %s with no Option."
 msgstr "ppdc: Selección encontrada en línea %d de %s sin opciones."
 
-#: ppdc/ppdc-source.cxx:1698
 #, c-format
 msgid "ppdc: Duplicate #po for locale %s on line %d of %s."
 msgstr "ppdc: #po duplicado para código regional %s en línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:932
 #, c-format
 msgid "ppdc: Expected a filter definition on line %d of %s."
 msgstr "ppdc: Se esperaba una definición de filtro en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:955
 #, c-format
 msgid "ppdc: Expected a program name on line %d of %s."
 msgstr "ppdc: Se esperaba un nombre de programa en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:394
 #, c-format
 msgid "ppdc: Expected boolean value on line %d of %s."
 msgstr "ppdc: Se esperaba un valor lógico en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:1093
 #, c-format
 msgid "ppdc: Expected charset after Font on line %d of %s."
-msgstr "ppdc: Se esperaba un juego de caracteres tras Font en la línea %d de %s."
+msgstr ""
+"ppdc: Se esperaba un juego de caracteres tras Font en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:447
 #, c-format
 msgid "ppdc: Expected choice code on line %d of %s."
 msgstr "ppdc: Se esperaba un código apropiado en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:435
 #, c-format
 msgid "ppdc: Expected choice name/text on line %d of %s."
 msgstr "ppdc: Se esperaba un nombre/texto apropiado en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:503
 #, c-format
 msgid "ppdc: Expected color order for ColorModel on line %d of %s."
-msgstr "ppdc: Se esperaba un orden de color para ColorModel en la línea %d de %s."
+msgstr ""
+"ppdc: Se esperaba un orden de color para ColorModel en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:492
 #, c-format
 msgid "ppdc: Expected colorspace for ColorModel on line %d of %s."
 msgstr "ppdc: Se esperaba colorspace para ColorModel en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:514
 #, c-format
 msgid "ppdc: Expected compression for ColorModel on line %d of %s."
 msgstr "ppdc: Se esperaba compresión para ColorModel en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:695
 #, c-format
 msgid "ppdc: Expected constraints string for UIConstraints on line %d of %s."
-msgstr "ppdc: Se esperaba una cadena de restricciones para UIConstraints en la línea %d de %s."
+msgstr ""
+"ppdc: Se esperaba una cadena de restricciones para UIConstraints en la línea "
+"%d de %s."
 
-#: ppdc/ppdc-source.cxx:2905
 #, c-format
-msgid "ppdc: Expected driver type keyword following DriverType on line %d of %s."
-msgstr "ppdc: Se esperaba una clave de tipo de controlador tras DriverType en la línea %d de %s."
+msgid ""
+"ppdc: Expected driver type keyword following DriverType on line %d of %s."
+msgstr ""
+"ppdc: Se esperaba una clave de tipo de controlador tras DriverType en la "
+"línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:826
 #, c-format
 msgid "ppdc: Expected duplex type after Duplex on line %d of %s."
 msgstr "ppdc: Se esperaba un tipo dúplex tras Duplex en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:1077
 #, c-format
 msgid "ppdc: Expected encoding after Font on line %d of %s."
 msgstr "ppdc: Se esperaba una codificación tras Font en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:1689
 #, c-format
 msgid "ppdc: Expected filename after #po %s on line %d of %s."
-msgstr "ppdc: Se esperaba un nombre de archivo tras #po %s en la línea %d de %s."
+msgstr ""
+"ppdc: Se esperaba un nombre de archivo tras #po %s en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:1205
 #, c-format
 msgid "ppdc: Expected group name/text on line %d of %s."
 msgstr "ppdc: Se esperaba un nombre/texto de grupo en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:2619
 #, c-format
 msgid "ppdc: Expected include filename on line %d of %s."
 msgstr "ppdc: Se esperaba un nombre de archivo include en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:1502
 #, c-format
 msgid "ppdc: Expected integer on line %d of %s."
 msgstr "ppdc: Se esperaba un número entero en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:1681
 #, c-format
 msgid "ppdc: Expected locale after #po on line %d of %s."
 msgstr "ppdc: Se esperaba un código regional tras #po en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:353
 #, c-format
 msgid "ppdc: Expected name after %s on line %d of %s."
 msgstr "ppdc: Se esperaba un nombre tras %s en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:3277
 #, c-format
 msgid "ppdc: Expected name after FileName on line %d of %s."
 msgstr "ppdc: Se esperaba un nombre tras FileName en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:1058
 #, c-format
 msgid "ppdc: Expected name after Font on line %d of %s."
 msgstr "ppdc: Se esperaba un nombre tras Font en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:3108
 #, c-format
 msgid "ppdc: Expected name after Manufacturer on line %d of %s."
 msgstr "ppdc: Se esperaba un nombre tras Manufacturer en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:3141
 #, c-format
 msgid "ppdc: Expected name after MediaSize on line %d of %s."
 msgstr "ppdc: Se esperaba un nombre tras MediaSize en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:3231
 #, c-format
 msgid "ppdc: Expected name after ModelName on line %d of %s."
 msgstr "ppdc: Se esperaba un nombre tras ModelName en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:3294
 #, c-format
 msgid "ppdc: Expected name after PCFileName on line %d of %s."
 msgstr "ppdc: Se esperaba un nombre tras PCFileName en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:1156
 #, c-format
 msgid "ppdc: Expected name/text after %s on line %d of %s."
 msgstr "ppdc: Se esperaba un nombre/texto tras %s en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:1245
 #, c-format
 msgid "ppdc: Expected name/text after Installable on line %d of %s."
-msgstr "ppdc: Se esperaba un nombre/texto tras Installable en la línea %d de %s."
+msgstr ""
+"ppdc: Se esperaba un nombre/texto tras Installable en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:1782
 #, c-format
 msgid "ppdc: Expected name/text after Resolution on line %d of %s."
-msgstr "ppdc: Se esperaba un nombre/texto tras Resolution en la línea %d de %s."
+msgstr ""
+"ppdc: Se esperaba un nombre/texto tras Resolution en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:479
 #, c-format
 msgid "ppdc: Expected name/text combination for ColorModel on line %d of %s."
-msgstr "ppdc: Se esperaba una combinación nombre/texto para ColorModel en la línea %d de %s."
+msgstr ""
+"ppdc: Se esperaba una combinación nombre/texto para ColorModel en la línea "
+"%d de %s."
 
-#: ppdc/ppdc-source.cxx:1574
 #, c-format
 msgid "ppdc: Expected option name/text on line %d of %s."
 msgstr "ppdc: Se esperaba una opción de nombre/texto en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:1608
 #, c-format
 msgid "ppdc: Expected option section on line %d of %s."
 msgstr "ppdc: Se esperaba una sección de opciones en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:1586
 #, c-format
 msgid "ppdc: Expected option type on line %d of %s."
 msgstr "ppdc: Se esperaba un tipo de opción en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:1765
 #, c-format
 msgid "ppdc: Expected override field after Resolution on line %d of %s."
-msgstr "ppdc: Se esperaba un campo de anulación tras Resolution en la línea %d de %s."
+msgstr ""
+"ppdc: Se esperaba un campo de anulación tras Resolution en la línea %d de %s."
 
-#: ppdc/ppdc-catalog.cxx:341
-#: ppdc/ppdc-catalog.cxx:353
 #, c-format
 msgid "ppdc: Expected quoted string on line %d of %s."
 msgstr "ppdc: Se esperaba una cadena entrecomillada en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:1004
 #, c-format
 msgid "ppdc: Expected real number on line %d of %s."
 msgstr "ppdc: Se esperaba un número real en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:572
 #, c-format
-msgid "ppdc: Expected resolution/mediatype following ColorProfile on line %d of %s."
-msgstr "ppdc: Se esperaba resolución/tipo de soporte tras ColorProfile en la línea %d de %s."
+msgid ""
+"ppdc: Expected resolution/mediatype following ColorProfile on line %d of %s."
+msgstr ""
+"ppdc: Se esperaba resolución/tipo de soporte tras ColorProfile en la línea "
+"%d de %s."
 
-#: ppdc/ppdc-source.cxx:1863
 #, c-format
-msgid "ppdc: Expected resolution/mediatype following SimpleColorProfile on line %d of %s."
-msgstr "ppdc: Se esperaba resolución/tipo de soporte tras SimpleColorProfile en la línea %d de %s."
+msgid ""
+"ppdc: Expected resolution/mediatype following SimpleColorProfile on line %d "
+"of %s."
+msgstr ""
+"ppdc: Se esperaba resolución/tipo de soporte tras SimpleColorProfile en la "
+"línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:361
 #, c-format
 msgid "ppdc: Expected selector after %s on line %d of %s."
 msgstr "ppdc: Se esperaba un selector tras %s en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:1101
 #, c-format
 msgid "ppdc: Expected status after Font on line %d of %s."
 msgstr "ppdc: Se esperaba un estado tras Font en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:2794
 #, c-format
 msgid "ppdc: Expected string after Copyright on line %d of %s."
 msgstr "ppdc: Se esperaba una cadena tras Copyright en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:3397
 #, c-format
 msgid "ppdc: Expected string after Version on line %d of %s."
 msgstr "ppdc: Se esperaba una cadena tras Version en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:728
 #, c-format
 msgid "ppdc: Expected two option names on line %d of %s."
 msgstr "ppdc: Se esperaban dos nombres de opciones en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:372
 #, c-format
 msgid "ppdc: Expected value after %s on line %d of %s."
 msgstr "ppdc: Se esperaba un valor tras %s en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:1085
 #, c-format
 msgid "ppdc: Expected version after Font on line %d of %s."
 msgstr "ppdc: Se esperaba una versión tras Font en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:227
 #, c-format
 msgid "ppdc: Invalid #include/#po filename \"%s\"."
 msgstr "ppdc: Nombre de archivo #include/#po incorrecto \"%s\"."
 
-#: ppdc/ppdc-source.cxx:972
 #, c-format
 msgid "ppdc: Invalid cost for filter on line %d of %s."
 msgstr "ppdc: Coste incorrecto para el filtro en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:964
 #, c-format
 msgid "ppdc: Invalid empty MIME type for filter on line %d of %s."
 msgstr "ppdc: Tipo MIME vacío incorrecto para el filtro en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:980
 #, c-format
 msgid "ppdc: Invalid empty program name for filter on line %d of %s."
-msgstr "ppdc: Nombre de programa vacío incorrecto para el filtro en la línea %d de %s."
+msgstr ""
+"ppdc: Nombre de programa vacío incorrecto para el filtro en la línea %d de "
+"%s."
 
-#: ppdc/ppdc-source.cxx:1628
 #, c-format
 msgid "ppdc: Invalid option section \"%s\" on line %d of %s."
 msgstr "ppdc: Sección de opción incorrecta \"%s\" en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:1600
 #, c-format
 msgid "ppdc: Invalid option type \"%s\" on line %d of %s."
 msgstr "ppdc: Tipo de opción incorrecta \"%s\" en la línea %d de %s."
 
-#: ppdc/ppdc.cxx:251
-#: ppdc/ppdpo.cxx:123
 #, c-format
 msgid "ppdc: Loading driver information file \"%s\"."
 msgstr "ppdc: Cargando archivo de información de controlador \"%s\"."
 
-#: ppdc/ppdc.cxx:187
 #, c-format
 msgid "ppdc: Loading messages for locale \"%s\"."
 msgstr "ppdc: Cargando mensajes del idioma \"%s\"."
 
-#: ppdc/ppdc.cxx:126
 #, c-format
 msgid "ppdc: Loading messages from \"%s\"."
 msgstr "ppdc: Cargando mensajes desde \"%s\"."
 
-#: ppdc/ppdc-source.cxx:2412
-#: ppdc/ppdc-source.cxx:2644
 #, c-format
 msgid "ppdc: Missing #endif at end of \"%s\"."
 msgstr "ppdc: Falta un #endif al final de \"%s\"."
 
-#: ppdc/ppdc-source.cxx:2513
-#: ppdc/ppdc-source.cxx:2548
-#: ppdc/ppdc-source.cxx:2578
 #, c-format
 msgid "ppdc: Missing #if on line %d of %s."
 msgstr "ppdc: Falta un #if en la línea %d de %s."
 
-#: ppdc/ppdc-catalog.cxx:418
 #, c-format
-msgid "ppdc: Need a msgid line before any translation strings on line %d of %s."
-msgstr "ppdc: Se necesita una línea msgid antes de cualquier cadena de traducción en línea %d de %s."
+msgid ""
+"ppdc: Need a msgid line before any translation strings on line %d of %s."
+msgstr ""
+"ppdc: Se necesita una línea msgid antes de cualquier cadena de traducción en "
+"línea %d de %s."
 
-#: ppdc/ppdc-driver.cxx:730
 #, c-format
 msgid "ppdc: No message catalog provided for locale %s."
 msgstr "ppdc: No se ha proporcionado catálogo de mensajes para el idioma %s."
 
-#: ppdc/ppdc-source.cxx:1651
-#: ppdc/ppdc-source.cxx:2882
-#: ppdc/ppdc-source.cxx:2968
-#: ppdc/ppdc-source.cxx:3061
-#: ppdc/ppdc-source.cxx:3194
-#: ppdc/ppdc-source.cxx:3327
 #, c-format
 msgid "ppdc: Option %s defined in two different groups on line %d of %s."
-msgstr "ppdc: Opción %s definida en dos diferentes grupos en la línea %d de %s."
+msgstr ""
+"ppdc: Opción %s definida en dos diferentes grupos en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:1644
 #, c-format
 msgid "ppdc: Option %s redefined with a different type on line %d of %s."
 msgstr "ppdc: Opción %s redefinida con un tipo diferente en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:705
 #, c-format
 msgid "ppdc: Option constraint must *name on line %d of %s."
 msgstr "ppdc: Opción de restricción debe *name en línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:2495
 #, c-format
 msgid "ppdc: Too many nested #if's on line %d of %s."
 msgstr "ppdc: Demasiados #if anidados en la línea %d de %s."
 
-#: ppdc/ppdc.cxx:374
 #, c-format
 msgid "ppdc: Unable to create PPD file \"%s\" - %s."
 msgstr "ppdc: No se ha podido crear el archivo PPD \"%s\" - %s."
 
-#: ppdc/ppdc.cxx:266
 #, c-format
 msgid "ppdc: Unable to create output directory %s: %s"
 msgstr "ppdc: No se ha podido crear el directorio de salida %s: %s"
 
-#: ppdc/ppdc.cxx:287
 #, c-format
 msgid "ppdc: Unable to create output pipes: %s"
 msgstr "ppdc: No se han podido crear canales (pipes) de salida: %s"
 
-#: ppdc/ppdc.cxx:303
-#: ppdc/ppdc.cxx:309
 #, c-format
 msgid "ppdc: Unable to execute cupstestppd: %s"
 msgstr "ppdc: No se ha podido ejecutar cupstestppd: %s"
 
-#: ppdc/ppdc-source.cxx:1730
 #, c-format
 msgid "ppdc: Unable to find #po file %s on line %d of %s."
-msgstr "ppdc: No se ha podido encontrar el archivo #po %s en la línea %d de %s."
+msgstr ""
+"ppdc: No se ha podido encontrar el archivo #po %s en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:2651
 #, c-format
 msgid "ppdc: Unable to find include file \"%s\" on line %d of %s."
-msgstr "ppdc: No se ha podido encontrar el archivo include \"%s\" en la línea %d de %s."
+msgstr ""
+"ppdc: No se ha podido encontrar el archivo include \"%s\" en la línea %d de "
+"%s."
 
-#: ppdc/ppdc.cxx:198
 #, c-format
 msgid "ppdc: Unable to find localization for \"%s\" - %s"
 msgstr "ppdc: No se ha podido encontrar localización para \"%s\" - %s"
 
-#: ppdc/ppdc.cxx:135
 #, c-format
 msgid "ppdc: Unable to load localization file \"%s\" - %s"
 msgstr "ppdc: No se ha podido cargar el archivo de localización \"%s\" - %s"
 
-#: ppdc/ppdc-file.cxx:50
 #, c-format
 msgid "ppdc: Unable to open %s: %s"
 msgstr "ppdc: No se pudo abrir %s: %s"
 
-#: ppdc/ppdc-source.cxx:2054
 #, c-format
 msgid "ppdc: Undefined variable (%s) on line %d of %s."
 msgstr "ppdc: Variable no definida (%s) en la línea %d de %s."
 
-#: ppdc/ppdc-catalog.cxx:435
 #, c-format
 msgid "ppdc: Unexpected text on line %d of %s."
 msgstr "ppdc: Texto inesperado en la línea %d del %s."
 
-#: ppdc/ppdc-source.cxx:2924
 #, c-format
 msgid "ppdc: Unknown driver type %s on line %d of %s."
 msgstr "ppdc: Tipo de controlador desconocido %s en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:906
 #, c-format
 msgid "ppdc: Unknown duplex type \"%s\" on line %d of %s."
 msgstr "ppdc: Tipo dúplex desconocido \"%s\" en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:3154
 #, c-format
 msgid "ppdc: Unknown media size \"%s\" on line %d of %s."
 msgstr "ppdc: Tamaño de papel desconocido \"%s\" en la línea %d de %s."
 
-#: ppdc/ppdc-catalog.cxx:463
 #, c-format
 msgid "ppdc: Unknown message catalog format for \"%s\"."
 msgstr "ppdc: Formato del catálogo de mensajes para \"%s\" desconocido."
 
-#: ppdc/ppdc-source.cxx:3408
 #, c-format
 msgid "ppdc: Unknown token \"%s\" seen on line %d of %s."
 msgstr "ppdc: Elemento desconocido \"%s\" visto en la línea %d de %s."
 
-#: ppdc/ppdc-source.cxx:1014
 #, c-format
-msgid "ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s."
-msgstr "ppdc: Caracteres finales desconocidos en el número real \"%s\" en la línea %d de %s."
+msgid ""
+"ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s."
+msgstr ""
+"ppdc: Caracteres finales desconocidos en el número real \"%s\" en la línea "
+"%d de %s."
 
-#: ppdc/ppdc-source.cxx:2164
 #, c-format
 msgid "ppdc: Unterminated string starting with %c on line %d of %s."
 msgstr "ppdc: Cadena que comienza por %c sin terminar en la línea %d de %s."
 
-#: ppdc/ppdc.cxx:365
 #, c-format
 msgid "ppdc: Warning - overlapping filename \"%s\"."
 msgstr "ppdc: Advertencia - nombre de archivo superpuesto \"%s\"."
 
-#: ppdc/ppdc.cxx:380
 #, c-format
 msgid "ppdc: Writing %s."
 msgstr "ppdc: Escribiendo %s."
 
-#: ppdc/ppdc.cxx:148
 #, c-format
 msgid "ppdc: Writing PPD files to directory \"%s\"."
 msgstr "ppdc: Escribiendo archivos PPD al directorio \"%s\"."
 
-#: ppdc/ppdmerge.cxx:136
 #, c-format
 msgid "ppdmerge: Bad LanguageVersion \"%s\" in %s."
 msgstr "ppdmerge: LanguageVersion \"%s\" incorrecto en %s."
 
-#: ppdc/ppdmerge.cxx:176
 #, c-format
 msgid "ppdmerge: Ignoring PPD file %s."
 msgstr "ppdmerge: Ignorando archivo PPD %s."
 
-#: ppdc/ppdmerge.cxx:160
 #, c-format
 msgid "ppdmerge: Unable to backup %s to %s - %s"
 msgstr "ppdmerge: No se ha podido hacer copia de seguridad de %s a %s- %s"
 
-#: systemv/lpstat.c:1784
 #, c-format
 msgid "printer %s disabled since %s -"
 msgstr "la impresora %s está deshabilitada desde %s -"
 
-#: systemv/lpstat.c:1773
 #, c-format
 msgid "printer %s is idle.  enabled since %s"
 msgstr "la impresora %s está inactiva.  activada desde %s"
 
-#: systemv/lpstat.c:1778
 #, c-format
 msgid "printer %s now printing %s-%d.  enabled since %s"
 msgstr "la impresora %s está imprimiendo %s-%d.  activada desde %s"
 
-#: systemv/lpstat.c:1909
 #, c-format
 msgid "printer %s/%s disabled since %s -"
 msgstr "la impresora %s/%s está desactivada desde %s -"
 
-#: systemv/lpstat.c:1895
 #, c-format
 msgid "printer %s/%s is idle.  enabled since %s"
 msgstr "la impresora %s/%s está inactiva.  activada desde %s"
 
-#: systemv/lpstat.c:1902
 #, c-format
 msgid "printer %s/%s now printing %s-%d.  enabled since %s"
 msgstr "la impresora %s/%s está imprimiendo %s-%d.  activada desde %s"
 
-#: cups/notify.c:93
-#: cups/notify.c:134
 msgid "processing"
 msgstr "en proceso"
 
-#: systemv/lp.c:644
 #, c-format
 msgid "request id is %s-%d (%d file(s))"
 msgstr "la id solicitada es %s-%d (%d archivo(s))"
 
-#: cups/snmp.c:1020
 msgid "request-id uses indefinite length"
 msgstr "request-id usa una longitud indefinida"
 
-#: systemv/lpstat.c:2048
 msgid "scheduler is not running"
 msgstr "el planificador de tareas no se está ejecutando"
 
-#: systemv/lpstat.c:2044
 msgid "scheduler is running"
 msgstr "el planificador de tareas se está ejecutando"
 
-#: cups/adminutil.c:2159
 #, c-format
 msgid "stat of %s failed: %s"
 msgstr "estado de %s ha fallado: %s"
 
-#: berkeley/lpc.c:211
 msgid "status\t\tShow status of daemon and queue."
 msgstr "status\t\tMuestra el estado del demonio (daemon) y la cola."
 
-#: cups/notify.c:96
-#: cups/notify.c:137
 msgid "stopped"
 msgstr "parada"
 
-#: systemv/lpstat.c:1017
 #, c-format
 msgid "system default destination: %s"
 msgstr "destino predeterminado del sistema: %s"
 
-#: systemv/lpstat.c:1014
 #, c-format
 msgid "system default destination: %s/%s"
 msgstr "destino predeterminado del sistema: %s/%s"
 
-#: cups/notify.c:108
-#: cups/notify.c:140
 msgid "unknown"
 msgstr "desconocido"
 
-#: cups/notify.c:117
 msgid "untitled"
 msgstr "sin título"
 
-#: cups/snmp.c:1045
 msgid "variable-bindings uses indefinite length"
 msgstr "variable-bindings usa una longitud indefinida"
 
+#~ msgid "%s: Error - expected destination after \"-b\" option."
+#~ msgstr "%s: Error - se esperaba un destino tras la opción \"-b\"."
+
+#~ msgid "Print file accepted - job ID %d."
+#~ msgstr "Archivo de impresión aceptado: ID de trabajo %d."
+
+#~ msgid "Print file accepted - job ID unknown."
+#~ msgstr "Archivo de impresión aceptado: ID de trabajo desconocido."
+
+#~ msgid "Print file was not accepted."
+#~ msgstr "No se ha aceptado el archivo de impresión."
+
+#~ msgid "The printer URI is incorrect or no longer exists."
+#~ msgstr "El URI de la impresora es incorrecto o ya no existe."
+
+#~ msgid "The printer does not support IPP/%d.%d, trying IPP/%s."
+#~ msgstr "La impresora no es compatible con IPP/%d.%d, probando IPP/%s."
index 4982be5f937933289746fa76a6855841a95321b9..7a49ad5c8c279b76e5dfff853beb45042473cb51 100644 (file)
@@ -12,7 +12,6 @@
 #   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/".
 #
-
 #
 # Notes for Translators:
 #
@@ -29,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: 2012-05-23 16:24-0700\n"
+"POT-Creation-Date: 2012-10-22 11:09-0400\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"
@@ -38,293 +37,225 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: systemv/lpstat.c:1876 systemv/lpstat.c:2001
 msgid "\t\t(all)"
 msgstr "\t\t(すべて)"
 
-#: systemv/lpstat.c:1879 systemv/lpstat.c:1882 systemv/lpstat.c:2004
-#: systemv/lpstat.c:2007
 msgid "\t\t(none)"
 msgstr "\t\t(なし)"
 
-#: berkeley/lpc.c:434
 #, c-format
 msgid "\t%d entries"
 msgstr "\t%d エントリー"
 
-#: systemv/lpstat.c:756 systemv/lpstat.c:772
 #, c-format
 msgid "\t%s"
 msgstr "\t%s"
 
-#: systemv/lpstat.c:1857 systemv/lpstat.c:1982
 msgid "\tAfter fault: continue"
 msgstr "\t失敗後: 継続"
 
-#: systemv/lpstat.c:1481 systemv/lpstat.c:1826 systemv/lpstat.c:1952
 #, c-format
 msgid "\tAlerts: %s"
 msgstr "\t警告: %s"
 
-#: systemv/lpstat.c:1880 systemv/lpstat.c:2005
 msgid "\tBanner required"
 msgstr "\tバナーが必要"
 
-#: systemv/lpstat.c:1881 systemv/lpstat.c:2006
 msgid "\tCharset sets:"
 msgstr "\t文字セット:"
 
-#: systemv/lpstat.c:1845 systemv/lpstat.c:1970
 msgid "\tConnection: direct"
 msgstr "\t接続: 直結"
 
-#: systemv/lpstat.c:1836 systemv/lpstat.c:1962
 msgid "\tConnection: remote"
 msgstr "\t接続: リモート"
 
-#: systemv/lpstat.c:1800 systemv/lpstat.c:1926
 msgid "\tContent types: any"
 msgstr "\tコンテンツの種類: すべて"
 
-#: systemv/lpstat.c:1884 systemv/lpstat.c:2009
 msgid "\tDefault page size:"
 msgstr "\tデフォルト用紙サイズ:"
 
-#: systemv/lpstat.c:1883 systemv/lpstat.c:2008
 msgid "\tDefault pitch:"
 msgstr "\tデフォルトピッチ:"
 
-#: systemv/lpstat.c:1885 systemv/lpstat.c:2010
 msgid "\tDefault port settings:"
 msgstr "\tデフォルトポート設定:"
 
-#: systemv/lpstat.c:1806 systemv/lpstat.c:1932
 #, c-format
 msgid "\tDescription: %s"
 msgstr "\t説明: %s"
 
-#: systemv/lpstat.c:1799 systemv/lpstat.c:1925
 msgid "\tForm mounted:"
 msgstr "\t設定されたフォーム:"
 
-#: systemv/lpstat.c:1878 systemv/lpstat.c:2003
 msgid "\tForms allowed:"
 msgstr "\t許可されているフォーム:"
 
-#: systemv/lpstat.c:1840 systemv/lpstat.c:1966
 #, c-format
 msgid "\tInterface: %s.ppd"
 msgstr "\tインターフェイス: %s.ppd"
 
-#: systemv/lpstat.c:1849 systemv/lpstat.c:1974
 #, c-format
 msgid "\tInterface: %s/interfaces/%s"
 msgstr "\tインターフェイス: %s/interfaces/%s"
 
-#: systemv/lpstat.c:1853 systemv/lpstat.c:1978
 #, c-format
 msgid "\tInterface: %s/ppd/%s.ppd"
 msgstr "\tインターフェイス: %s/ppd/%s.ppd"
 
-#: systemv/lpstat.c:1831 systemv/lpstat.c:1957
 #, c-format
 msgid "\tLocation: %s"
 msgstr "\t場所: %s"
 
-#: systemv/lpstat.c:1856 systemv/lpstat.c:1981
 msgid "\tOn fault: no alert"
 msgstr "\t失敗時: 警告なし"
 
-#: systemv/lpstat.c:1801 systemv/lpstat.c:1927
 msgid "\tPrinter types: unknown"
 msgstr "\tプリンターの種類: 不明"
 
-#: systemv/lpstat.c:1462
 #, c-format
 msgid "\tStatus: %s"
 msgstr "\tステータス: %s"
 
-#: systemv/lpstat.c:1861 systemv/lpstat.c:1875 systemv/lpstat.c:1986
-#: systemv/lpstat.c:2000
 msgid "\tUsers allowed:"
 msgstr "\t許可されているユーザー:"
 
-#: systemv/lpstat.c:1868 systemv/lpstat.c:1993
 msgid "\tUsers denied:"
 msgstr "\t禁止されているユーザー:"
 
-#: berkeley/lpc.c:436
 msgid "\tdaemon present"
 msgstr "\tデーモンは提供されています"
 
-#: berkeley/lpc.c:432
 msgid "\tno entries"
 msgstr "\tエントリーがありません"
 
-#: berkeley/lpc.c:404 berkeley/lpc.c:416
 #, c-format
 msgid "\tprinter is on device '%s' speed -1"
 msgstr "\tデバイス '%s' 上のプリンター 速度 -1"
 
-#: berkeley/lpc.c:429
 msgid "\tprinting is disabled"
 msgstr "\t印刷は無効です"
 
-#: berkeley/lpc.c:427
 msgid "\tprinting is enabled"
 msgstr "\t印刷は有効です"
 
-#: systemv/lpstat.c:1484
 #, c-format
 msgid "\tqueued for %s"
 msgstr "\t%s にキューしました"
 
-#: berkeley/lpc.c:424
 msgid "\tqueuing is disabled"
 msgstr "\tキューは無効です"
 
-#: berkeley/lpc.c:422
 msgid "\tqueuing is enabled"
 msgstr "\tキューは有効です"
 
-#: systemv/lpstat.c:1792 systemv/lpstat.c:1918
 msgid "\treason unknown"
 msgstr "\t未知の理由"
 
-#: systemv/cupstestppd.c:454
 msgid ""
 "\n"
 "    DETAILED CONFORMANCE TEST RESULTS"
-msgstr "\n    適合テスト結果詳細"
+msgstr ""
+"\n"
+"    適合テスト結果詳細"
 
-#: systemv/cupstestppd.c:3800
 msgid "                          Ignore specific warnings."
 msgstr "                          指定された警告を無視する。"
 
-#: systemv/cupstestppd.c:3804
 msgid "                          Issue warnings instead of errors."
 msgstr "                          エラーを警告として扱う。"
 
-#: systemv/cupstestppd.c:410 systemv/cupstestppd.c:415
 msgid "                REF: Page 15, section 3.1."
 msgstr "                参照: 15 ページ、セクション 3.1。"
 
-#: systemv/cupstestppd.c:405
 msgid "                REF: Page 15, section 3.2."
 msgstr "                参照: 15 ページ、セクション 3.2。"
 
-#: systemv/cupstestppd.c:425
 msgid "                REF: Page 19, section 3.3."
 msgstr "                参照: 19 ページ、セクション 3.3。"
 
-#: systemv/cupstestppd.c:378
 msgid "                REF: Page 20, section 3.4."
 msgstr "                参照: 20 ページ、セクション 3.4。"
 
-#: systemv/cupstestppd.c:430
 msgid "                REF: Page 27, section 3.5."
 msgstr "                参照: 27 ページ、セクション 3.5。"
 
-#: systemv/cupstestppd.c:373
 msgid "                REF: Page 42, section 5.2."
 msgstr "                参照: 42 ページ、セクション 5.2。"
 
-#: systemv/cupstestppd.c:420
 msgid "                REF: Pages 16-17, section 3.2."
 msgstr "                参照: 16-17 ページ、セクション 3.2。"
 
-#: systemv/cupstestppd.c:390
 msgid "                REF: Pages 42-45, section 5.2."
 msgstr "                参照: 42-45 ページ、セクション 5.2。"
 
-#: systemv/cupstestppd.c:384
 msgid "                REF: Pages 45-46, section 5.2."
 msgstr "                参照: 45-46 ページ、セクション 5.2。"
 
-#: systemv/cupstestppd.c:395
 msgid "                REF: Pages 48-49, section 5.2."
 msgstr "                参照: 48-49 ページ、セクション 5.2。"
 
-#: systemv/cupstestppd.c:400
 msgid "                REF: Pages 52-54, section 5.2."
 msgstr "                参照: 52-54 ページ、セクション 5.2。"
 
-#: berkeley/lpq.c:554
 #, c-format
 msgid "        %-39.39s %.0f bytes"
 msgstr "        %-39.39s %.0f バイト"
 
-#: systemv/cupstestppd.c:589
 #, c-format
 msgid "        PASS    Default%s"
 msgstr "        合格    Default%s"
 
-#: systemv/cupstestppd.c:524
 msgid "        PASS    DefaultImageableArea"
 msgstr "        合格    DefaultImageableArea"
 
-#: systemv/cupstestppd.c:558
 msgid "        PASS    DefaultPaperDimension"
 msgstr "        合格    DefaultPaperDimension"
 
-#: systemv/cupstestppd.c:631
 msgid "        PASS    FileVersion"
 msgstr "        合格    FileVersion"
 
-#: systemv/cupstestppd.c:675
 msgid "        PASS    FormatVersion"
 msgstr "        合格    FormatVersion"
 
-#: systemv/cupstestppd.c:695
 msgid "        PASS    LanguageEncoding"
 msgstr "        合格    LanguageEncoding"
 
-#: systemv/cupstestppd.c:715
 msgid "        PASS    LanguageVersion"
 msgstr "        合格    LanguageVersion"
 
-#: systemv/cupstestppd.c:769
 msgid "        PASS    Manufacturer"
 msgstr "        合格    Manufacturer"
 
-#: systemv/cupstestppd.c:809
 msgid "        PASS    ModelName"
 msgstr "        合格    ModelName"
 
-#: systemv/cupstestppd.c:829
 msgid "        PASS    NickName"
 msgstr "        合格    NickName"
 
-#: systemv/cupstestppd.c:889
 msgid "        PASS    PCFileName"
 msgstr "        合格    PCFileName"
 
-#: systemv/cupstestppd.c:964
 msgid "        PASS    PSVersion"
 msgstr "        合格    PSVersion"
 
-#: systemv/cupstestppd.c:869
 msgid "        PASS    PageRegion"
 msgstr "        合格    PageRegion"
 
-#: systemv/cupstestppd.c:849
 msgid "        PASS    PageSize"
 msgstr "        合格    PageSize"
 
-#: systemv/cupstestppd.c:924
 msgid "        PASS    Product"
 msgstr "        合格    Product"
 
-#: systemv/cupstestppd.c:999
 msgid "        PASS    ShortNickName"
 msgstr "        合格    ShortNickName"
 
-#: systemv/cupstestppd.c:1374
 #, c-format
 msgid "        WARN    %s has no corresponding options."
 msgstr "        警告    %s は相当するオプションがありません。"
 
-#: systemv/cupstestppd.c:1486
 #, c-format
 msgid ""
 "        WARN    %s shares a common prefix with %s\n"
@@ -333,21 +264,20 @@ msgstr ""
 "        警告    %s は %s と一般プレフィックスを共有します。\n"
 "                参照: 15 ページ、セクション 3.2。"
 
-#: systemv/cupstestppd.c:1345
 #, 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 ""
-"        警告    Duplex オプションキーワード %s は期待通りに動作しないかもしれません。また、Duplex という名前であるべきです。"
-"                参照: 122 ページ、セクション 5.17"
+"        警告    Duplex オプションキーワード %s は期待通りに動作しないかもしれ"
+"ません。また、Duplex という名前であるべきです。                参照: 122 ペー"
+"ジ、セクション 5.17"
 
-#: systemv/cupstestppd.c:1744
 msgid "        WARN    File contains a mix of CR, LF, and CR LF line endings."
-msgstr "        警告    ファイルが CR、LF、CR LF の行末を混在して含んでいます。"
+msgstr ""
+"        警告    ファイルが CR、LF、CR LF の行末を混在して含んでいます。"
 
-#: systemv/cupstestppd.c:1390
 msgid ""
 "        WARN    LanguageEncoding required by PPD 4.3 spec.\n"
 "                REF: Pages 56-57, section 5.3."
@@ -355,12 +285,10 @@ msgstr ""
 "        警告    LanguageEncoding は PPD 4.3 仕様で必須です。\n"
 "                参照: 56-57 ページ、セクション 5.3。"
 
-#: systemv/cupstestppd.c:1726
 #, c-format
 msgid "        WARN    Line %d only contains whitespace."
 msgstr "        警告    %d 行が空白だけです。"
 
-#: systemv/cupstestppd.c:1398
 msgid ""
 "        WARN    Manufacturer required by PPD 4.3 spec.\n"
 "                REF: Pages 58-59, section 5.3."
@@ -368,13 +296,13 @@ msgstr ""
 "        警告    Manufacturer は PPD 4.3 仕様で必須です。\n"
 "                参照: 58-59 ページ、セクション 5.3。"
 
-#: systemv/cupstestppd.c:1749
 msgid ""
 "        WARN    Non-Windows PPD files should use lines ending with only LF, "
 "not CR LF."
-msgstr "        警告    非 Windows PPD ファイルは、CR LF でなく LF のみを行末に使うべきです。"
+msgstr ""
+"        警告    非 Windows PPD ファイルは、CR LF でなく LF のみを行末に使うべ"
+"きです。"
 
-#: systemv/cupstestppd.c:1382
 #, c-format
 msgid ""
 "        WARN    Obsolete PPD version %.1f.\n"
@@ -383,7 +311,6 @@ msgstr ""
 "        警告    PPD バージョン %.1f は現在使われていません。\n"
 "                参照: 42 ページ、セクション 5.2。"
 
-#: systemv/cupstestppd.c:1413
 msgid ""
 "        WARN    PCFileName longer than 8.3 in violation of PPD spec.\n"
 "                REF: Pages 61-62, section 5.3."
@@ -391,7 +318,6 @@ msgstr ""
 "        警告    8.3 文字より長い PCFileName は PPD 仕様違反です。\n"
 "                参照: 61-62 ページ、セクション 5.3。"
 
-#: systemv/cupstestppd.c:1421
 msgid ""
 "        WARN    PCFileName should contain a unique filename.\n"
 "                REF: Pages 61-62, section 5.3."
@@ -399,23 +325,22 @@ msgstr ""
 "        警告    PCFileName はユニークなファイル名でなければなりません。\n"
 "                参照: 61-62 ページ、セクション 5.3。"
 
-#: systemv/cupstestppd.c:1456
 msgid ""
 "        WARN    Protocols contains PJL but JCL attributes are not set.\n"
 "                REF: Pages 78-79, section 5.7."
 msgstr ""
-"        警告    プロトコルが PJL を含んでいますが JCL 属性が設定されていません。\n"
+"        警告    プロトコルが PJL を含んでいますが JCL 属性が設定されていませ"
+"ん。\n"
 "                参照: 78-79 ページ、セクション 5.7。"
 
-#: systemv/cupstestppd.c:1447
 msgid ""
 "        WARN    Protocols contains both PJL and BCP; expected TBCP.\n"
 "                REF: Pages 78-79, section 5.7."
 msgstr ""
-"        警告    プロトコルが PJL と BCP の両方を含んでいます; TBCP を想定します。\n"
+"        警告    プロトコルが PJL と BCP の両方を含んでいます; TBCP を想定しま"
+"す。\n"
 "                参照: 78-79 ページ、セクション 5.7。"
 
-#: systemv/cupstestppd.c:1430
 msgid ""
 "        WARN    ShortNickName required by PPD 4.3 spec.\n"
 "                REF: Pages 64-65, section 5.3."
@@ -423,19 +348,15 @@ msgstr ""
 "        警告    ShortNickName は PPD 4.3 仕様で必須です。\n"
 "                参照: 64-65 ページ、セクション 5.3。"
 
-#: systemv/cupsaddsmb.c:282
 msgid "       cupsaddsmb [options] -a"
 msgstr "       cupsaddsmb [オプション] -a"
 
-#: systemv/cupstestdsc.c:427
 msgid "       cupstestdsc [options] -"
 msgstr "       cupstestdsc [オプション] -"
 
-#: systemv/cupstestppd.c:3795
 msgid "       program | cupstestppd [options] -"
 msgstr "       program | cupstestppd [オプション] -"
 
-#: systemv/cupstestppd.c:3727
 #, c-format
 msgid ""
 "      %s  \"%s %s\" conflicts with \"%s %s\"\n"
@@ -444,17 +365,15 @@ msgstr ""
 "      %s  \"%s %s\" は \"%s %s\" と競合します\n"
 "                (禁則=\"%s %s %s %s\")。"
 
-#: systemv/cupstestppd.c:2248
 #, c-format
 msgid "      %s  %s %s does not exist."
 msgstr "      %s  %s %s が存在しません。"
 
-#: systemv/cupstestppd.c:3884
 #, c-format
 msgid "      %s  %s file \"%s\" has the wrong capitalization."
-msgstr "      %s  %s ファイル \"%s\" は不正な大文字で始まるワードを含んでいます。"
+msgstr ""
+"      %s  %s ファイル \"%s\" は不正な大文字で始まるワードを含んでいます。"
 
-#: systemv/cupstestppd.c:2318
 #, c-format
 msgid ""
 "      %s  Bad %s choice %s.\n"
@@ -463,99 +382,72 @@ msgstr ""
 "      %s  不正な %s が %s を選んでいます。\n"
 "                参照: 122 ページ、セクション 5.17"
 
-#: systemv/cupstestppd.c:3487 systemv/cupstestppd.c:3536
-#: systemv/cupstestppd.c:3575
 #, c-format
 msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s, choice %s."
-msgstr "      %s  不正な UTF-8 \"%s\" 翻訳文字列 (オプション %s 、選択 %s) です。"
+msgstr ""
+"      %s  不正な UTF-8 \"%s\" 翻訳文字列 (オプション %s 、選択 %s) です。"
 
-#: systemv/cupstestppd.c:3441
 #, c-format
 msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s."
 msgstr "      %s  不正な UTF-8 \"%s\" 翻訳文字列 (オプション %s 用) です。"
 
-#: systemv/cupstestppd.c:2389
 #, c-format
 msgid "      %s  Bad cupsFilter value \"%s\"."
 msgstr "      %s  不正な値が cupsFilter に設定されています。 \"%s\""
 
-#: systemv/cupstestppd.c:2475
 #, c-format
 msgid "      %s  Bad cupsFilter2 value \"%s\"."
 msgstr "      %s  不正な値が cupsFilter2 に設定されています。 \"%s\""
 
-#: systemv/cupstestppd.c:2964
 #, c-format
 msgid "      %s  Bad cupsICCProfile %s."
 msgstr "      %s  不正な cupsICCProfile %sです。"
 
-#: systemv/cupstestppd.c:2571
 #, c-format
 msgid "      %s  Bad cupsPreFilter value \"%s\"."
 msgstr "      %s  不正な値が cupsPreFilter に設定されています。 \"%s\""
 
-#: systemv/cupstestppd.c:1822
 #, c-format
 msgid "      %s  Bad cupsUIConstraints %s: \"%s\""
 msgstr "      %s  不正な cupsUIConstraints %s: \"%s\"です。"
 
-#: systemv/cupstestppd.c:3391
 #, c-format
 msgid "      %s  Bad language \"%s\"."
 msgstr "      %s  無効な言語 \"%s\"です。"
 
-#: systemv/cupstestppd.c:2433 systemv/cupstestppd.c:2529
-#: systemv/cupstestppd.c:2615 systemv/cupstestppd.c:2673
-#: systemv/cupstestppd.c:2728 systemv/cupstestppd.c:2783
-#: systemv/cupstestppd.c:2838 systemv/cupstestppd.c:2891
-#: systemv/cupstestppd.c:3013
 #, c-format
 msgid "      %s  Bad permissions on %s file \"%s\"."
 msgstr "      %s  不正なパーミッション %s です (ファイル \"%s\")。"
 
-#: systemv/cupstestppd.c:2373 systemv/cupstestppd.c:2459
-#: systemv/cupstestppd.c:2555 systemv/cupstestppd.c:2642
-#: systemv/cupstestppd.c:2697 systemv/cupstestppd.c:2752
-#: systemv/cupstestppd.c:2807 systemv/cupstestppd.c:2862
 #, c-format
 msgid "      %s  Bad spelling of %s - should be %s."
 msgstr "      %s  %s の不正な綴りです - %s であるべきです。"
 
-#: systemv/cupstestppd.c:2907
 #, c-format
 msgid "      %s  Cannot provide both APScanAppPath and APScanAppBundleID."
 msgstr "      %s  APScanAppPath と APScanAppBundleID は同時に指定できません。"
 
-#: systemv/cupstestppd.c:2205
 #, c-format
 msgid "      %s  Default choices conflicting."
 msgstr "      %s  デフォルトの選択肢が競合しています。"
 
-#: systemv/cupstestppd.c:1803
 #, c-format
 msgid "      %s  Empty cupsUIConstraints %s"
 msgstr "      %s 空の cupsUIConstraints %sです。"
 
-#: systemv/cupstestppd.c:3519 systemv/cupstestppd.c:3559
 #, c-format
 msgid "      %s  Missing \"%s\" translation string for option %s, choice %s."
-msgstr "      %s  \"%s\" 翻訳文字列 (オプション %s 、選択 %s) が見つかりません。"
+msgstr ""
+"      %s  \"%s\" 翻訳文字列 (オプション %s 、選択 %s) が見つかりません。"
 
-#: systemv/cupstestppd.c:3427
 #, c-format
 msgid "      %s  Missing \"%s\" translation string for option %s."
 msgstr "      %s  \"%s\" 翻訳文字列 (オプション %s 用) が見つかりません。"
 
-#: systemv/cupstestppd.c:2418 systemv/cupstestppd.c:2514
-#: systemv/cupstestppd.c:2600 systemv/cupstestppd.c:2658
-#: systemv/cupstestppd.c:2713 systemv/cupstestppd.c:2768
-#: systemv/cupstestppd.c:2823 systemv/cupstestppd.c:2875
-#: systemv/cupstestppd.c:2998
 #, c-format
 msgid "      %s  Missing %s file \"%s\"."
 msgstr "      %s  %s が見つかりません (ファイル \"%s\")。"
 
-#: systemv/cupstestppd.c:3121
 #, c-format
 msgid ""
 "      %s  Missing REQUIRED PageRegion option.\n"
@@ -564,7 +456,6 @@ msgstr ""
 "      %s  必須の PageRegion オプションが見つかりません。\n"
 "                参照: 100 ページ、セクション 5.14。"
 
-#: systemv/cupstestppd.c:3106
 #, c-format
 msgid ""
 "      %s  Missing REQUIRED PageSize option.\n"
@@ -573,37 +464,35 @@ msgstr ""
 "      %s  必須の PageSize オプションが見つかりません。\n"
 "                参照: 99 ページ、セクション 5.14。"
 
-#: systemv/cupstestppd.c:2013 systemv/cupstestppd.c:2054
 #, c-format
 msgid "      %s  Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\"."
-msgstr "      %s  選択 *%s %s が UIConstraints \"*%s %s *%s %s\" 内に見つかりません。"
+msgstr ""
+"      %s  選択 *%s %s が UIConstraints \"*%s %s *%s %s\" 内に見つかりませ"
+"ん。"
 
-#: systemv/cupstestppd.c:1908
 #, c-format
 msgid "      %s  Missing choice *%s %s in cupsUIConstraints %s: \"%s\""
-msgstr "      %s  選択 *%s %s が cupsUIConstraints %s: \"%s\" 内に見つかりません。"
+msgstr ""
+"      %s  選択 *%s %s が cupsUIConstraints %s: \"%s\" 内に見つかりません。"
 
-#: systemv/cupstestppd.c:1840
 #, c-format
 msgid "      %s  Missing cupsUIResolver %s"
 msgstr "      %s  cupsUIResolver ファイル %s が見つかりません。"
 
-#: systemv/cupstestppd.c:1999 systemv/cupstestppd.c:2040
 #, c-format
 msgid "      %s  Missing option %s in UIConstraints \"*%s %s *%s %s\"."
-msgstr "      %s  オプション %s がUIConstraints \"*%s %s *%s %s\" に見つかりません。"
+msgstr ""
+"      %s  オプション %s がUIConstraints \"*%s %s *%s %s\" に見つかりません。"
 
-#: systemv/cupstestppd.c:1892
 #, c-format
 msgid "      %s  Missing option %s in cupsUIConstraints %s: \"%s\""
-msgstr "      %s  オプション %s がcupsUIConstraints %s に見つかりません: \"%s\""
+msgstr ""
+"      %s  オプション %s がcupsUIConstraints %s に見つかりません: \"%s\""
 
-#: systemv/cupstestppd.c:3613
 #, c-format
 msgid "      %s  No base translation \"%s\" is included in file."
 msgstr "      %s  ファイルにベース翻訳文字列 \"%s\" がありません。"
 
-#: systemv/cupstestppd.c:2294
 #, c-format
 msgid ""
 "      %s  REQUIRED %s does not define choice None.\n"
@@ -612,43 +501,38 @@ msgstr ""
 "      %s  必須の %s が選択肢 None を定義していません。\n"
 "                参照: 122 ページ、セクション 5.17。"
 
-#: systemv/cupstestppd.c:3180 systemv/cupstestppd.c:3194
 #, c-format
 msgid "      %s  Size \"%s\" defined for %s but not for %s."
-msgstr "      %s  サイズ \"%s\" は %s 向けに定義されていますが、%s にはありません。"
+msgstr ""
+"      %s  サイズ \"%s\" は %s 向けに定義されていますが、%s にはありません。"
 
-#: systemv/cupstestppd.c:3160
 #, c-format
 msgid "      %s  Size \"%s\" has unexpected dimensions (%gx%g)."
 msgstr "      %s  サイズ \"%s\" は規定外の寸法 (%gx%g) を持っています。"
 
-#: systemv/cupstestppd.c:3332
 #, c-format
 msgid "      %s  Size \"%s\" should be \"%s\"."
 msgstr "      %s  サイズ \"%s\" は \"%s\" であるべきです。"
 
-#: systemv/cupstestppd.c:3292
 #, c-format
 msgid "      %s  Size \"%s\" should be the Adobe standard name \"%s\"."
 msgstr "      %s  サイズ \"%s\" は Adobe 標準名称 \"%s\" であるべきです。"
 
-#: systemv/cupstestppd.c:3041
 #, c-format
 msgid "      %s  cupsICCProfile %s hash value collides with %s."
 msgstr "      %s  cupsICCProfileのハッシュ値 %s が %s と一致しません。"
 
-#: systemv/cupstestppd.c:1963
 #, c-format
 msgid "      %s  cupsUIResolver %s causes a loop."
 msgstr "      %s  cupsUIResolverの %s がループしています。"
 
-#: systemv/cupstestppd.c:1945
 #, c-format
 msgid ""
 "      %s  cupsUIResolver %s does not list at least two different options."
-msgstr "      %s  cupsUIResolver %s は最低でも 2 つの異なったオプションを持っていなければなりません。"
+msgstr ""
+"      %s  cupsUIResolver %s は最低でも 2 つの異なったオプションを持っていなけ"
+"ればなりません。"
 
-#: systemv/cupstestppd.c:1168
 #, c-format
 msgid ""
 "      **FAIL**  %s must be 1284DeviceID\n"
@@ -657,7 +541,6 @@ msgstr ""
 "      **失敗**  %s は 1284DeviceID でなければなりません。\n"
 "                参照: 72 ページ、セクション 5.5"
 
-#: systemv/cupstestppd.c:580
 #, c-format
 msgid ""
 "      **FAIL**  Bad Default%s %s\n"
@@ -666,7 +549,6 @@ msgstr ""
 "      **失敗**  不正な Default%s %s\n"
 "                参照: 40 ページ、セクション 4.5。"
 
-#: systemv/cupstestppd.c:514
 #, c-format
 msgid ""
 "      **FAIL**  Bad DefaultImageableArea %s\n"
@@ -675,7 +557,6 @@ msgstr ""
 "      **失敗**  %s は不正な DefaultImageableArea です。\n"
 "                参照: 102 ページ、セクション 5.15。"
 
-#: systemv/cupstestppd.c:550
 #, c-format
 msgid ""
 "      **FAIL**  Bad DefaultPaperDimension %s\n"
@@ -684,7 +565,6 @@ msgstr ""
 "      **失敗**  %s は不正な DefaultPaperDimension です。\n"
 "                参照: 103 ページ、セクション 5.15。"
 
-#: systemv/cupstestppd.c:623
 #, c-format
 msgid ""
 "      **FAIL**  Bad FileVersion \"%s\"\n"
@@ -693,7 +573,6 @@ msgstr ""
 "      **失敗**  不正なFileVersion \"%s\"\n"
 "                参照: 56 ページ、セクション 5.3。"
 
-#: systemv/cupstestppd.c:667
 #, c-format
 msgid ""
 "      **FAIL**  Bad FormatVersion \"%s\"\n"
@@ -702,7 +581,6 @@ msgstr ""
 "      **失敗**  FormatVersion が違います \"%s\"\n"
 "                参照: 56 ページ、セクション 5.3。"
 
-#: systemv/cupstestppd.c:1025
 msgid ""
 "      **FAIL**  Bad JobPatchFile attribute in file\n"
 "                REF: Page 24, section 3.4."
@@ -710,17 +588,16 @@ msgstr ""
 "      **失敗**  ファイルに不正な JobPatchFile 属性があります\n"
 "                参照: 24 ページ、セクション 3.4。"
 
-#: systemv/cupstestppd.c:1213
 #, c-format
 msgid "      **FAIL**  Bad LanguageEncoding %s - must be ISOLatin1."
-msgstr "      **失敗**  無効な LanguageEncoding %s - ISOLatin1 でなければなりません。"
+msgstr ""
+"      **失敗**  無効な LanguageEncoding %s - ISOLatin1 でなければなりません。"
 
-#: systemv/cupstestppd.c:1227
 #, c-format
 msgid "      **FAIL**  Bad LanguageVersion %s - must be English."
-msgstr "      **失敗**  無効な LanguageVersion %s - English でなければなりません。"
+msgstr ""
+"      **失敗**  無効な LanguageVersion %s - English でなければなりません。"
 
-#: systemv/cupstestppd.c:743 systemv/cupstestppd.c:760
 #, c-format
 msgid ""
 "      **FAIL**  Bad Manufacturer (should be \"%s\")\n"
@@ -729,7 +606,6 @@ msgstr ""
 "      **失敗**  不正な Manufacturer (\"%s\" でなければなりません)\n"
 "                参照: 211 ページ、表 D.1。"
 
-#: systemv/cupstestppd.c:800
 #, c-format
 msgid ""
 "      **FAIL**  Bad ModelName - \"%c\" not allowed in string.\n"
@@ -738,7 +614,6 @@ msgstr ""
 "      **失敗**  不正な ModelName - 文字列に \"%c\" は許可されていません。\n"
 "                参照: 59-60 ページ、セクション 5.3。"
 
-#: systemv/cupstestppd.c:956
 msgid ""
 "      **FAIL**  Bad PSVersion - not \"(string) int\".\n"
 "                REF: Pages 62-64, section 5.3."
@@ -746,7 +621,6 @@ msgstr ""
 "      **失敗**  不正な PSVersion - \"(文字列) 整数\" ではありません。\n"
 "                参照: 62-64 ページ、セクション 5.3。"
 
-#: systemv/cupstestppd.c:917
 msgid ""
 "      **FAIL**  Bad Product - not \"(string)\".\n"
 "                REF: Page 62, section 5.3."
@@ -754,7 +628,6 @@ msgstr ""
 "      **失敗**  不正な Product - \"(文字列)\" ではありません。\n"
 "                参照: 62 ページ、セクション 5.3。"
 
-#: systemv/cupstestppd.c:991
 msgid ""
 "      **FAIL**  Bad ShortNickName - longer than 31 chars.\n"
 "                REF: Pages 64-65, section 5.3."
@@ -762,7 +635,6 @@ msgstr ""
 "      **失敗**  不正な ShortNickName - 31 文字を超えています。\n"
 "                参照: 64-65 ページ、セクション 5.3。"
 
-#: systemv/cupstestppd.c:1149
 #, c-format
 msgid ""
 "      **FAIL**  Bad option %s choice %s\n"
@@ -771,46 +643,43 @@ msgstr ""
 "      **失敗**  不正な %s が %s を選んでいます。\n"
 "                参照: 84 ページ、セクション 5.9"
 
-#: systemv/cupstestppd.c:3754 systemv/cupstestppd.c:3776
 #, c-format
 msgid "      **FAIL**  Default option code cannot be interpreted: %s"
 msgstr "      **失敗**  デフォルトのオプションコードが解釈できません: %s"
 
-#: systemv/cupstestppd.c:1286
 #, c-format
 msgid ""
 "      **FAIL**  Default translation string for option %s choice %s contains "
 "8-bit characters."
-msgstr "      **失敗**  オプション %s、選択肢 %s のデフォルトの翻訳文字列が 8 ビット文字を含んでいます。"
+msgstr ""
+"      **失敗**  オプション %s、選択肢 %s のデフォルトの翻訳文字列が 8 ビット"
+"文字を含んでいます。"
 
-#: systemv/cupstestppd.c:1259
 #, c-format
 msgid ""
 "      **FAIL**  Default translation string for option %s contains 8-bit "
 "characters."
-msgstr "      **失敗**  オプション %s のデフォルトの翻訳文字列が 8 ビット文字を含んでいます。"
+msgstr ""
+"      **失敗**  オプション %s のデフォルトの翻訳文字列が 8 ビット文字を含んで"
+"います。"
 
-#: systemv/cupstestppd.c:2101
 #, c-format
 msgid "      **FAIL**  Group names %s and %s differ only by case."
 msgstr "      **失敗**  グループ名 %s と %s は大文字/小文字が違うだけです。"
 
-#: systemv/cupstestppd.c:2146
 #, c-format
 msgid "      **FAIL**  Multiple occurrences of option %s choice name %s."
 msgstr "      **失敗**  %s で複数のオプション %s が選択されています。"
 
-#: systemv/cupstestppd.c:2163
 #, c-format
 msgid "      **FAIL**  Option %s choice names %s and %s differ only by case."
-msgstr "      **失敗**  %s が選択した %s と %s は大文字/小文字のみが違うだけです。"
+msgstr ""
+"      **失敗**  %s が選択した %s と %s は大文字/小文字のみが違うだけです。"
 
-#: systemv/cupstestppd.c:2123
 #, c-format
 msgid "      **FAIL**  Option names %s and %s differ only by case."
 msgstr "      **失敗**  オプション名 %s と %s は大文字/小文字が違うだけです。"
 
-#: systemv/cupstestppd.c:600
 #, c-format
 msgid ""
 "      **FAIL**  REQUIRED Default%s\n"
@@ -819,7 +688,6 @@ msgstr ""
 "      **失敗**  Default%s は必須\n"
 "                参照: 40 ページ、セクション 4.5。"
 
-#: systemv/cupstestppd.c:499
 msgid ""
 "      **FAIL**  REQUIRED DefaultImageableArea\n"
 "                REF: Page 102, section 5.15."
@@ -827,7 +695,6 @@ msgstr ""
 "      **失敗**  DefaultImageableArea は必須\n"
 "                参照: 102 ページ、セクション 5.15。"
 
-#: systemv/cupstestppd.c:535
 msgid ""
 "      **FAIL**  REQUIRED DefaultPaperDimension\n"
 "                REF: Page 103, section 5.15."
@@ -835,7 +702,6 @@ msgstr ""
 "      **失敗**  DefaultPaperDimension は必須\n"
 "                参照: 103 ページ、セクション 5.15。"
 
-#: systemv/cupstestppd.c:641
 msgid ""
 "      **FAIL**  REQUIRED FileVersion\n"
 "                REF: Page 56, section 5.3."
@@ -843,7 +709,6 @@ msgstr ""
 "      **失敗**  FileVersion は必須\n"
 "                参照: 56 ページ、セクション 5.3。"
 
-#: systemv/cupstestppd.c:685
 msgid ""
 "      **FAIL**  REQUIRED FormatVersion\n"
 "                REF: Page 56, section 5.3."
@@ -851,7 +716,6 @@ msgstr ""
 "      **失敗**  FormatVersion は必須\n"
 "                参照: 56 ページ、セクション 5.3。"
 
-#: systemv/cupstestppd.c:1076
 #, c-format
 msgid ""
 "      **FAIL**  REQUIRED ImageableArea for PageSize %s\n"
@@ -862,7 +726,6 @@ msgstr ""
 "                参照: 41 ページ、セクション 5。\n"
 "                参照: 102 ページ、セクション 5.15。"
 
-#: systemv/cupstestppd.c:705
 msgid ""
 "      **FAIL**  REQUIRED LanguageEncoding\n"
 "                REF: Pages 56-57, section 5.3."
@@ -870,7 +733,6 @@ msgstr ""
 "      **失敗**  LanguageEncoding は必須\n"
 "                参照: 56-57 ページ、セクション 5.3。"
 
-#: systemv/cupstestppd.c:725
 msgid ""
 "      **FAIL**  REQUIRED LanguageVersion\n"
 "                REF: Pages 57-58, section 5.3."
@@ -878,7 +740,6 @@ msgstr ""
 "      **失敗**  LanguageVersion は必須\n"
 "                参照: 57-58 ページ、セクション 5.3。"
 
-#: systemv/cupstestppd.c:779
 msgid ""
 "      **FAIL**  REQUIRED Manufacturer\n"
 "                REF: Pages 58-59, section 5.3."
@@ -886,7 +747,6 @@ msgstr ""
 "      **失敗**  Manufacturer は必須\n"
 "                参照: 58-59 ページ、セクション 5.3。"
 
-#: systemv/cupstestppd.c:819
 msgid ""
 "      **FAIL**  REQUIRED ModelName\n"
 "                REF: Pages 59-60, section 5.3."
@@ -894,7 +754,6 @@ msgstr ""
 "      **失敗**  ModelName は必須\n"
 "                参照: 59-60 ページ、セクション 5.3。"
 
-#: systemv/cupstestppd.c:839
 msgid ""
 "      **FAIL**  REQUIRED NickName\n"
 "                REF: Page 60, section 5.3."
@@ -902,7 +761,6 @@ msgstr ""
 "      **失敗**  NickName は必須\n"
 "                参照: 60 ページ、セクション 5.3。"
 
-#: systemv/cupstestppd.c:899
 msgid ""
 "      **FAIL**  REQUIRED PCFileName\n"
 "                REF: Pages 61-62, section 5.3."
@@ -910,7 +768,6 @@ msgstr ""
 "      **失敗**  PCFileName は必須\n"
 "                参照: 61-62 ページ、セクション 5.3。"
 
-#: systemv/cupstestppd.c:974
 msgid ""
 "      **FAIL**  REQUIRED PSVersion\n"
 "                REF: Pages 62-64, section 5.3."
@@ -918,7 +775,6 @@ msgstr ""
 "      **失敗**  PSVersion は必須\n"
 "                参照: 62-64 ページ、セクション 5.3。"
 
-#: systemv/cupstestppd.c:879
 msgid ""
 "      **FAIL**  REQUIRED PageRegion\n"
 "                REF: Page 100, section 5.14."
@@ -926,7 +782,6 @@ msgstr ""
 "      **失敗**  PageRegion は必須\n"
 "                参照: 100 ページ、セクション 5.14。"
 
-#: systemv/cupstestppd.c:1045
 msgid ""
 "      **FAIL**  REQUIRED PageSize\n"
 "                REF: Page 41, section 5.\n"
@@ -936,7 +791,6 @@ msgstr ""
 "                参照: 41 ページ、セクション 5。\n"
 "                参照: 99 ページ、セクション 5.14。"
 
-#: systemv/cupstestppd.c:859
 msgid ""
 "      **FAIL**  REQUIRED PageSize\n"
 "                REF: Pages 99-100, section 5.14."
@@ -944,7 +798,6 @@ msgstr ""
 "      **失敗**  PageSize は必須\n"
 "                参照: 99-100 ページ、セクション 5.14。"
 
-#: systemv/cupstestppd.c:1098
 #, c-format
 msgid ""
 "      **FAIL**  REQUIRED PaperDimension for PageSize %s\n"
@@ -955,7 +808,6 @@ msgstr ""
 "                参照: 41 ページ、セクション 5。\n"
 "                参照: 103 ページ、セクション 5.15。"
 
-#: systemv/cupstestppd.c:934
 msgid ""
 "      **FAIL**  REQUIRED Product\n"
 "                REF: Page 62, section 5.3."
@@ -963,7 +815,6 @@ msgstr ""
 "      **失敗**  Product は必須\n"
 "                参照: 62 ページ、セクション 5.3。"
 
-#: systemv/cupstestppd.c:1009
 msgid ""
 "      **FAIL**  REQUIRED ShortNickName\n"
 "                REF: Page 64-65, section 5.3."
@@ -971,24 +822,19 @@ msgstr ""
 "      **失敗**  ShortNickName は必須\n"
 "                参照: 64-65 ページ、セクション 5.3。"
 
-#: systemv/cupstestppd.c:334 systemv/cupstestppd.c:353
-#: systemv/cupstestppd.c:365
 #, c-format
 msgid "      **FAIL**  Unable to open PPD file - %s on line %d."
 msgstr ""
 " 失敗\n"
 "      **失敗**  PPD ファイルを開けません - %s (%d 行)。"
 
-#: systemv/cupstestppd.c:1498
 #, c-format
 msgid "    %d ERRORS FOUND"
 msgstr "    %d 個のエラーが見つかりました"
 
-#: systemv/cupstestdsc.c:431
 msgid "    -h       Show program usage"
 msgstr "    -h       このプログラムの利用法を表示する"
 
-#: systemv/cupstestdsc.c:234 systemv/cupstestdsc.c:276
 #, c-format
 msgid ""
 "    Bad %%%%BoundingBox: on line %d.\n"
@@ -997,7 +843,6 @@ msgstr ""
 "    不正な %%%%BoundingBox: (%d 行)。\n"
 "        参照: 39 ページ、%%%%BoundingBox:"
 
-#: systemv/cupstestdsc.c:305
 #, c-format
 msgid ""
 "    Bad %%%%Page: on line %d.\n"
@@ -1006,7 +851,6 @@ msgstr ""
 "    不正な %%%%Page: (%d 行)。\n"
 "        参照: 53 ページ、%%%%Page:"
 
-#: systemv/cupstestdsc.c:218 systemv/cupstestdsc.c:258
 #, c-format
 msgid ""
 "    Bad %%%%Pages: on line %d.\n"
@@ -1015,7 +859,6 @@ msgstr ""
 "    不正な %%%%Pages: (%d 行)。\n"
 "        REF: Page 43, %%%%Pages:"
 
-#: systemv/cupstestdsc.c:176
 #, c-format
 msgid ""
 "    Line %d is longer than 255 characters (%d).\n"
@@ -1024,7 +867,6 @@ msgstr ""
 "    %d 行が 255文字より長くなっています (%d)。\n"
 "        参照: 25 ページ、Line Length"
 
-#: systemv/cupstestdsc.c:192
 msgid ""
 "    Missing %!PS-Adobe-3.0 on first line.\n"
 "        REF: Page 17, 3.1 Conforming Documents"
@@ -1032,14 +874,12 @@ msgstr ""
 "    先頭行に %!PS-Adobe-3.0 がありません。\n"
 "        参照: 17 ページ、3.1 Conforming Documents"
 
-#: systemv/cupstestdsc.c:362
 #, c-format
 msgid "    Missing %%EndComments comment.        REF: Page 41, %%EndComments"
 msgstr ""
 "    %%EndComments コメントが見つかりません。\n"
 "        参照: 41 ページ、%%EndComments"
 
-#: systemv/cupstestdsc.c:342
 #, c-format
 msgid ""
 "    Missing or bad %%BoundingBox: comment.\n"
@@ -1048,7 +888,6 @@ msgstr ""
 "    %%BoundingBox: コメントが見つからないか不正です。\n"
 "        参照: 39 ページ、%%BoundingBox:"
 
-#: systemv/cupstestdsc.c:372
 #, c-format
 msgid ""
 "    Missing or bad %%Page: comments.\n"
@@ -1057,7 +896,6 @@ msgstr ""
 "    %%Page: コメントが見つからないか不正です。\n"
 "        参照: 53 ページ、%%Page:"
 
-#: systemv/cupstestdsc.c:352
 #, c-format
 msgid ""
 "    Missing or bad %%Pages: comment.\n"
@@ -1066,2033 +904,1526 @@ msgstr ""
 "    %%Pages: コメントが見つからないか不正です。\n"
 "        参照: 43 ページ、%%Pages:"
 
-#: systemv/cupstestppd.c:1500
 msgid "    NO ERRORS FOUND"
 msgstr "    エラーは見つかりませんでした"
 
-#: systemv/cupstestdsc.c:395
 #, c-format
 msgid "    Saw %d lines that exceeded 255 characters."
 msgstr "    255文字を超える %d 行が見つかりました。"
 
-#: systemv/cupstestdsc.c:390
 #, c-format
 msgid "    Too many %%BeginDocument comments."
 msgstr "    %%BeginDocument コメントが多すぎます。"
 
-#: systemv/cupstestdsc.c:382
 #, c-format
 msgid "    Too many %%EndDocument comments."
 msgstr "    %%EndDocument コメントが多すぎます。"
 
-#: systemv/cupstestdsc.c:402
 msgid "    Warning: file contains binary data."
 msgstr "    警告: ファイルにバイナリデータが含まれています。"
 
-#: systemv/cupstestdsc.c:410
 #, c-format
 msgid "    Warning: no %%EndComments comment in file."
 msgstr "    警告: ファイルに %%EndComments コメントがありません。"
 
-#: systemv/cupstestdsc.c:406
 #, c-format
 msgid "    Warning: obsolete DSC version %.1f in file."
 msgstr "    警告: ファイルは時代遅れの DSC バージョン %.1f です。"
 
-#: systemv/cupsctl.c:210
 msgid "  --[no-]debug-logging    Turn debug logging on/off."
 msgstr "  --[no-]debug-logging    デバッグログの有効/無効を切り替える。"
 
-#: systemv/cupsctl.c:212
 msgid "  --[no-]remote-admin     Turn remote administration on/off."
 msgstr "  --[no-]remote-admin     リモート管理の有効/無効を切り替える。"
 
-#: systemv/cupsctl.c:214
 msgid "  --[no-]remote-any       Allow/prevent access from the Internet."
-msgstr "  --[no-]remote-any       インターネットからのアクセスを許可/禁止する。"
+msgstr ""
+"  --[no-]remote-any       インターネットからのアクセスを許可/禁止する。"
 
-#: systemv/cupsctl.c:216
 msgid "  --[no-]share-printers   Turn printer sharing on/off."
 msgstr "  --[no-]share-printers   プリンター共有の有効/無効を切り替える。"
 
-#: systemv/cupsctl.c:218
 msgid "  --[no-]user-cancel-any  Allow/prevent users to cancel any job."
-msgstr "  --[no-]user-cancel-any  あらゆるジョブのキャンセルをユーザーに許可/禁止する"
+msgstr ""
+"  --[no-]user-cancel-any  あらゆるジョブのキャンセルをユーザーに許可/禁止する"
 
-#: ppdc/ppdc.cxx:455
 msgid "  --cr                    End lines with CR (Mac OS 9)."
 msgstr "  --cr                    行末を CR とする (Mac OS 9)。"
 
-#: ppdc/ppdc.cxx:457
 msgid "  --crlf                  End lines with CR + LF (Windows)."
 msgstr "  --crlf                  行末を CR + LF とする (Windows)。"
 
-#: ppdc/ppdc.cxx:459
 msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
 msgstr "  --lf                    行末を LF とする (UNIX/Linux/OS X)。"
 
-#: test/ipptool.c:4404
 msgid "  -4                      Connect using IPv4."
 msgstr "  -4                      IPv4 で接続する。"
 
-#: test/ipptool.c:4405
 msgid "  -6                      Connect using IPv6."
 msgstr "  -6                      IPv6 で接続する。"
 
-#: test/ipptool.c:4406
 msgid "  -C                      Send requests using chunking (default)."
-msgstr "  -C                      chunking を用いてリクエストを送る (デフォルト)。"
+msgstr ""
+"  -C                      chunking を用いてリクエストを送る (デフォルト)。"
 
-#: scheduler/cupsfilter.c:1431
 msgid "  -D                      Remove the input file when finished."
 msgstr "  -D                      終了したときに入力ファイルを削除する。"
 
-#: ppdc/ppdc.cxx:438 ppdc/ppdhtml.cxx:175 ppdc/ppdpo.cxx:255
 msgid "  -D name=value           Set named variable to value."
-msgstr "  -D name=value           name で指定された変数に値 value をセットする。"
+msgstr ""
+"  -D name=value           name で指定された変数に値 value をセットする。"
 
-#: systemv/cupsaddsmb.c:285 systemv/cupsctl.c:205
 msgid "  -E                      Encrypt the connection."
 msgstr "  -E                      接続を暗号化する。"
 
-#: test/ipptool.c:4408
 msgid "  -E                      Test with HTTP Upgrade to TLS."
-msgstr "  -E                      HTTP から TLS へのアップグレードでテストする。"
+msgstr ""
+"  -E                      HTTP から TLS へのアップグレードでテストする。"
 
-#: scheduler/main.c:2021
 msgid ""
 "  -F                      Run in the foreground but detach from console."
-msgstr "  -F                      フォアグラウンドで実行するがコンソールからはデタッチする。"
+msgstr ""
+"  -F                      フォアグラウンドで実行するがコンソールからはデタッ"
+"チする。"
 
-#: systemv/cupsaddsmb.c:286
 msgid "  -H samba-server         Use the named SAMBA server."
 msgstr "  -H sambaサーバー        指定の SAMBA サーバーを使う。"
 
-#: test/ipptool.c:4410
 msgid "  -I                      Ignore errors."
 msgstr "  -I                      エラーを無視する。"
 
-#: ppdc/ppdc.cxx:440 ppdc/ppdhtml.cxx:177 ppdc/ppdi.cxx:131 ppdc/ppdpo.cxx:257
 msgid "  -I include-dir          Add include directory to search path."
-msgstr "  -I include-dir          インクルードディレクトリーを検索パスに含める。"
+msgstr ""
+"  -I include-dir          インクルードディレクトリーを検索パスに含める。"
 
-#: systemv/cupstestppd.c:3799
 msgid "  -I {filename,filters,none,profiles}"
 msgstr "  -I {filename,filters,none,profiles}"
 
-#: test/ipptool.c:4411
 msgid "  -L                      Send requests using content-length."
 msgstr "  -L                      content-length を用いてリクエストを送る。"
 
-#: scheduler/cupsfilter.c:1433
 msgid "  -P filename.ppd         Set PPD file."
 msgstr "  -P filename.ppd         PPD ファイルを指定する。"
 
-#: systemv/cupstestppd.c:3801
 msgid "  -R root-directory       Set alternate root."
 msgstr "  -R root-directory       別のルートディレクトリーを指定する。"
 
-#: test/ipptool.c:4413
 msgid "  -S                      Test with SSL encryption."
 msgstr "  -S                      SSL 暗号化でテストする。"
 
-#: test/ipptool.c:4415
 msgid "  -T seconds              Set the receive/send timeout in seconds."
 msgstr "  -T seconds              受信/送信タイムアウトを秒で指定する。"
 
-#: scheduler/cupsfilter.c:1434 systemv/cupsaddsmb.c:288 systemv/cupsctl.c:206
 msgid "  -U username             Specify username."
 msgstr "  -U username             ユーザー名を指定する。"
 
-#: test/ipptool.c:4417
 msgid "  -V version              Set default IPP version."
 msgstr "  -V version              デフォルトの IPP バージョンを指定する。"
 
-#: systemv/cupstestppd.c:3802
 msgid ""
 "  -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,"
 "translations}"
-msgstr "  -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,translations}"
+msgstr ""
+"  -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,"
+"translations}"
 
-#: test/ipptool.c:4419
 msgid "  -X                      Produce XML plist instead of plain text."
 msgstr "  -X                      プレーンテキストの代わりに XML を用いる。"
 
-#: systemv/cupsaddsmb.c:289
 msgid "  -a                      Export all printers."
 msgstr "  -a                      すべてのプリンターをエクスポートする。"
 
-#: ppdc/ppdc.cxx:442
 msgid "  -c catalog.po           Load the specified message catalog."
 msgstr "  -c catalog.po           指定したメッセージカタログをロードする。"
 
-#: scheduler/cupsfilter.c:1435 scheduler/main.c:2019
 msgid "  -c cupsd.conf           Set cupsd.conf file to use."
 msgstr "  -c cupsd.conf           使用する cupsd.conf ファイルを指定する。"
 
-#: test/ipptool.c:4421
 msgid "  -d name=value           Set named variable to value."
-msgstr "  -d name=value           name で指定された変数に値 value をセットする。"
+msgstr ""
+"  -d name=value           name で指定された変数に値 value をセットする。"
 
-#: ppdc/ppdc.cxx:444
 msgid "  -d output-dir           Specify the output directory."
 msgstr "  -d output-dir           出力先ディレクトリーを指定する。"
 
-#: scheduler/cupsfilter.c:1437
 msgid "  -d printer              Use the named printer."
 msgstr "  -d printer              指定されたプリンターを利用する。"
 
-#: scheduler/cupsfilter.c:1439
 msgid "  -e                      Use every filter from the PPD file."
-msgstr "  -e                      PPD ファイルからすべてのフィルターを使用する。"
+msgstr ""
+"  -e                      PPD ファイルからすべてのフィルターを使用する。"
 
-#: scheduler/main.c:2020
 msgid "  -f                      Run in the foreground."
 msgstr "  -f                      フォアグラウンドで実行する。"
 
-#: test/ipptool.c:4423
 msgid "  -f filename             Set default request filename."
 msgstr "  -f filename             デフォルトのリクエストファイル名を指定する。"
 
-#: scheduler/main.c:2023
 msgid "  -h                      Show this usage message."
 msgstr "  -h                      このヘルプメッセージを表示する。"
 
-#: systemv/cupsaddsmb.c:290 systemv/cupsctl.c:207
 msgid "  -h server[:port]        Specify server address."
 msgstr "  -h server[:port]        サーバーアドレスを指定する。"
 
-#: scheduler/cupsfilter.c:1441
 msgid "  -i mime/type            Set input MIME type (otherwise auto-typed)."
-msgstr "  -i mime/type            入力の MIME タイプを指定する (指定がなければ自動タイプ)。"
+msgstr ""
+"  -i mime/type            入力の MIME タイプを指定する (指定がなければ自動タ"
+"イプ)。"
 
-#: test/ipptool.c:4425
 msgid ""
 "  -i seconds              Repeat the last file with the given time interval."
-msgstr "  -i seconds              最後のファイルを与えられた時間間隔で繰り返す。"
+msgstr ""
+"  -i seconds              最後のファイルを与えられた時間間隔で繰り返す。"
 
-#: scheduler/cupsfilter.c:1443
 msgid ""
 "  -j job-id[,N]           Filter file N from the specified job (default is "
 "file 1)."
-msgstr "  -j job-id[,N]           フィルターファイル N を指定されたジョブから使用する (デフォルトは ファイル 1)。"
+msgstr ""
+"  -j job-id[,N]           フィルターファイル N を指定されたジョブから使用す"
+"る (デフォルトは ファイル 1)。"
 
-#: scheduler/main.c:2024
 msgid "  -l                      Run cupsd from launchd(8)."
 msgstr "  -l                      launchd(8) から cupsd を実行する。"
 
-#: ppdc/ppdc.cxx:446
 msgid "  -l lang[,lang,...]      Specify the output language(s) (locale)."
 msgstr "  -l lang[,lang,...]      出力言語を指定する。(複数可能)"
 
-#: ppdc/ppdc.cxx:448
 msgid "  -m                      Use the ModelName value as the filename."
 msgstr "  -m                      ModelName の値をファイル名として使用する。"
 
-#: scheduler/cupsfilter.c:1445
 msgid ""
 "  -m mime/type            Set output MIME type (otherwise application/pdf)."
-msgstr "  -m mime/type            出力の MIME タイプを指定する (指定がなければ application/pdf)。"
+msgstr ""
+"  -m mime/type            出力の MIME タイプを指定する (指定がなければ "
+"application/pdf)。"
 
-#: scheduler/cupsfilter.c:1447
 msgid "  -n copies               Set number of copies."
 msgstr "  -n copies               部数を指定する。"
 
-#: test/ipptool.c:4427
 msgid ""
 "  -n count                Repeat the last file the given number of times."
 msgstr "  -n count                最後のファイルを与えられた回数だけ繰り返す。"
 
-#: ppdc/ppdi.cxx:133
 msgid ""
 "  -o filename.drv         Set driver information file (otherwise ppdi.drv)."
-msgstr "  -o filename.drv         ドライバー情報ファイルを指定する (指定がなければ ppdi.drv)。"
+msgstr ""
+"  -o filename.drv         ドライバー情報ファイルを指定する (指定がなければ "
+"ppdi.drv)。"
 
-#: ppdc/ppdmerge.cxx:370
 msgid "  -o filename.ppd[.gz]    Set output file (otherwise stdout)."
-msgstr "  -o filename.ppd[.gz]    出力ファイルを指定する (指定がなければ標準出力)。"
+msgstr ""
+"  -o filename.ppd[.gz]    出力ファイルを指定する (指定がなければ標準出力)。"
 
-#: scheduler/cupsfilter.c:1448
 msgid "  -o name=value           Set option(s)."
 msgstr "  -o name=value           オプションを指定する。"
 
-#: scheduler/cupsfilter.c:1449
 msgid "  -p filename.ppd         Set PPD file."
 msgstr "  -p filename.ppd         PPD ファイルを指定する。"
 
-#: systemv/cupstestppd.c:3806 test/ipptool.c:4429
 msgid "  -q                      Run silently."
 msgstr "  -q                      詳細は表示しない。"
 
-#: systemv/cupstestppd.c:3807
 msgid "  -r                      Use 'relaxed' open mode."
 msgstr "  -r                      寛容モードを用いる。"
 
-#: test/ipptool.c:4430
 msgid "  -t                      Produce a test report."
 msgstr "  -t                      テストリポートを出力する。"
 
-#: ppdc/ppdc.cxx:450
 msgid "  -t                      Test PPDs instead of generating them."
 msgstr "  -t                      PPD を出力しないでテストする。"
 
-#: scheduler/main.c:2025
 msgid "  -t                      Test the configuration file."
 msgstr "  -t                      設定ファイルをテストする。"
 
-#: scheduler/cupsfilter.c:1450
 msgid "  -t title                Set title."
 msgstr "  -t title                タイトルを指定する。"
 
-#: scheduler/cupsfilter.c:1451
 msgid "  -u                      Remove the PPD file when finished."
 msgstr "  -u                      終了したときに PPD ファイルを削除する。"
 
-#: systemv/cupsaddsmb.c:291 systemv/cupstestppd.c:3808 test/ipptool.c:4431
-#: ppdc/ppdc.cxx:452 ppdc/ppdpo.cxx:259
 msgid "  -v                      Be verbose."
 msgstr "  -v                      冗長出力を行う。"
 
-#: systemv/cupstestppd.c:3809
 msgid "  -vv                     Be very verbose."
 msgstr "  -vv                     より冗長な出力を行う。"
 
-#: ppdc/ppdc.cxx:453
 msgid "  -z                      Compress PPD files using GNU zip."
 msgstr "  -z                      PPD ファイルを GNU zip を使って圧縮する。"
 
-#: systemv/cupstestppd.c:332 systemv/cupstestppd.c:351
-#: systemv/cupstestppd.c:363 systemv/cupstestppd.c:496
-#: systemv/cupstestppd.c:511 systemv/cupstestppd.c:532
-#: systemv/cupstestppd.c:547 systemv/cupstestppd.c:577
-#: systemv/cupstestppd.c:597 systemv/cupstestppd.c:620
-#: systemv/cupstestppd.c:638 systemv/cupstestppd.c:664
-#: systemv/cupstestppd.c:682 systemv/cupstestppd.c:702
-#: systemv/cupstestppd.c:722 systemv/cupstestppd.c:740
-#: systemv/cupstestppd.c:757 systemv/cupstestppd.c:776
-#: systemv/cupstestppd.c:797 systemv/cupstestppd.c:816
-#: systemv/cupstestppd.c:836 systemv/cupstestppd.c:856
-#: systemv/cupstestppd.c:876 systemv/cupstestppd.c:896
-#: systemv/cupstestppd.c:914 systemv/cupstestppd.c:931
-#: systemv/cupstestppd.c:953 systemv/cupstestppd.c:971
-#: systemv/cupstestppd.c:988 systemv/cupstestppd.c:1006
-#: systemv/cupstestppd.c:1022 systemv/cupstestppd.c:1042
-#: systemv/cupstestppd.c:1073 systemv/cupstestppd.c:1095
-#: systemv/cupstestppd.c:1146 systemv/cupstestppd.c:1165
-#: systemv/cupstestppd.c:1209 systemv/cupstestppd.c:1223
-#: systemv/cupstestppd.c:1255 systemv/cupstestppd.c:1282
-#: systemv/cupstestppd.c:1800 systemv/cupstestppd.c:1819
-#: systemv/cupstestppd.c:1837 systemv/cupstestppd.c:1889
-#: systemv/cupstestppd.c:1905 systemv/cupstestppd.c:1942
-#: systemv/cupstestppd.c:1960 systemv/cupstestppd.c:1996
-#: systemv/cupstestppd.c:2010 systemv/cupstestppd.c:2037
-#: systemv/cupstestppd.c:2051 systemv/cupstestppd.c:2097
-#: systemv/cupstestppd.c:2119 systemv/cupstestppd.c:2142
-#: systemv/cupstestppd.c:2159 systemv/cupstestppd.c:2201
-#: systemv/cupstestppd.c:2244 systemv/cupstestppd.c:2291
-#: systemv/cupstestppd.c:2315 systemv/cupstestppd.c:2369
-#: systemv/cupstestppd.c:2385 systemv/cupstestppd.c:2415
-#: systemv/cupstestppd.c:2429 systemv/cupstestppd.c:2455
-#: systemv/cupstestppd.c:2471 systemv/cupstestppd.c:2511
-#: systemv/cupstestppd.c:2525 systemv/cupstestppd.c:2551
-#: systemv/cupstestppd.c:2567 systemv/cupstestppd.c:2597
-#: systemv/cupstestppd.c:2611 systemv/cupstestppd.c:2638
-#: systemv/cupstestppd.c:2655 systemv/cupstestppd.c:2669
-#: systemv/cupstestppd.c:2693 systemv/cupstestppd.c:2710
-#: systemv/cupstestppd.c:2724 systemv/cupstestppd.c:2748
-#: systemv/cupstestppd.c:2765 systemv/cupstestppd.c:2779
-#: systemv/cupstestppd.c:2803 systemv/cupstestppd.c:2820
-#: systemv/cupstestppd.c:2834 systemv/cupstestppd.c:2858
-#: systemv/cupstestppd.c:2872 systemv/cupstestppd.c:2887
-#: systemv/cupstestppd.c:2904 systemv/cupstestppd.c:2960
-#: systemv/cupstestppd.c:2995 systemv/cupstestppd.c:3009
-#: systemv/cupstestppd.c:3037 systemv/cupstestppd.c:3102
-#: systemv/cupstestppd.c:3117 systemv/cupstestppd.c:3156
-#: systemv/cupstestppd.c:3176 systemv/cupstestppd.c:3190
-#: systemv/cupstestppd.c:3387 systemv/cupstestppd.c:3423
-#: systemv/cupstestppd.c:3437 systemv/cupstestppd.c:3483
-#: systemv/cupstestppd.c:3515 systemv/cupstestppd.c:3532
-#: systemv/cupstestppd.c:3555 systemv/cupstestppd.c:3571
-#: systemv/cupstestppd.c:3609 systemv/cupstestppd.c:3750
-#: systemv/cupstestppd.c:3772 systemv/cupstestppd.c:3880
 msgid " FAIL"
 msgstr " 失敗"
 
-#: systemv/cupstestppd.c:1306
 msgid " PASS"
 msgstr " 合格"
 
-#: berkeley/lpq.c:560
 #, c-format
 msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
 msgstr "%-6s %-10.10s %-4d %-10d %-27.27s %.0f バイト"
 
-#: berkeley/lpq.c:565
 #, c-format
 msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
 msgstr "%-7s %-7.7s %-7d %-31.31s %.0f バイト"
 
-#: systemv/lpstat.c:750
 #, c-format
 msgid "%s accepting requests since %s"
 msgstr "%s は %s からリクエストを受け付けています"
 
-#: scheduler/ipp.c:10045
 #, c-format
 msgid "%s cannot be changed."
 msgstr "%s は変更できません。"
 
-#: berkeley/lpc.c:189
 #, c-format
 msgid "%s is not implemented by the CUPS version of lpc."
 msgstr "%s は lpc の CUPS バージョンでは実装されていません。"
 
-#: berkeley/lpq.c:651
 #, c-format
 msgid "%s is not ready"
 msgstr "%s は準備ができていません"
 
-#: berkeley/lpq.c:644
 #, c-format
 msgid "%s is ready"
 msgstr "%s は準備ができています"
 
-#: berkeley/lpq.c:647
 #, c-format
 msgid "%s is ready and printing"
 msgstr "%s は準備ができており印刷しています"
 
-#: filter/rastertoepson.c:985 filter/rastertohp.c:711
-#: filter/rastertolabel.c:1134
 #, c-format
 msgid "%s job-id user title copies options [file]"
 msgstr "%s ジョブID ユーザー タイトル コピー数 オプション [ファイル]"
 
-#: systemv/lpstat.c:754
 #, c-format
 msgid "%s not accepting requests since %s -"
 msgstr "%s は %s からリクエストを受け付けていません -"
 
-#: scheduler/ipp.c:691
 #, c-format
 msgid "%s not supported."
 msgstr "%s はサポートされていません。"
 
-#: systemv/lpstat.c:765
 #, c-format
 msgid "%s/%s accepting requests since %s"
 msgstr "%s/%s は %s からリクエストを受け付けています"
 
-#: systemv/lpstat.c:770
 #, c-format
 msgid "%s/%s not accepting requests since %s -"
 msgstr "%s/%s は %s からリクエストを受け付けていません - "
 
-#: berkeley/lpq.c:552
 #, c-format
 msgid "%s: %-33.33s [job %d localhost]"
 msgstr "%s:%-33.33s [ジョブ %d localhost]"
 
 #. TRANSLATORS: Message is "subject: error"
-#: cups/langprintf.c:86 scheduler/cupsfilter.c:714 systemv/lpadmin.c:805
-#: systemv/lpadmin.c:856 systemv/lpadmin.c:906 systemv/lpadmin.c:962
-#: systemv/lpadmin.c:1060 systemv/lpadmin.c:1112 systemv/lpadmin.c:1168
-#: systemv/lpadmin.c:1478
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: systemv/cancel.c:294 systemv/cancel.c:357
 #, c-format
 msgid "%s: %s failed: %s"
 msgstr "%s: %s に失敗しました: %s"
 
-#: systemv/cupsaccept.c:68
 #, c-format
 msgid "%s: Don't know what to do."
 msgstr "%s: 何が起きているか不明です。"
 
-#: berkeley/lpq.c:236 berkeley/lpr.c:344 systemv/lp.c:584
 #, c-format
 msgid ""
 "%s: Error - %s environment variable names non-existent destination \"%s\"."
 msgstr "%s: エラー - 環境変数 %s が存在しない宛先 \"%s\" を指しています。"
 
-#: systemv/lp.c:231
 #, c-format
 msgid "%s: Error - bad job ID."
 msgstr "%s: エラー - 不正なジョブ ID です。"
 
-#: systemv/lp.c:219
 #, c-format
 msgid "%s: Error - cannot print files and alter jobs simultaneously."
-msgstr "%s: エラー - ファイルを印刷できず、ジョブを同時に変えることができません。"
+msgstr ""
+"%s: エラー - ファイルを印刷できず、ジョブを同時に変えることができません。"
 
-#: systemv/lp.c:505
 #, c-format
 msgid "%s: Error - cannot print from stdin if files or a job ID are provided."
-msgstr "%s: エラー - ファイルまたはジョブ ID が提供されている場合、標準入力から印刷できません。 "
+msgstr ""
+"%s: エラー - ファイルまたはジョブ ID が提供されている場合、標準入力から印刷で"
+"きません。 "
 
-#: systemv/lp.c:461
 #, c-format
 msgid "%s: Error - expected character set after \"-S\" option."
 msgstr "%s: エラー - \"-S\" オプションのあとには文字セットが必要です。"
 
-#: systemv/lp.c:480
 #, c-format
 msgid "%s: Error - expected content type after \"-T\" option."
 msgstr "%s: エラー - \"-T\" オプションのあとにはコンテンツタイプが必要です。"
 
-#: berkeley/lpr.c:240
 #, c-format
 msgid "%s: Error - expected copies after \"-#\" option."
 msgstr "%s: エラー - \"-#\" オプションのあとにはコピー数が必要です。"
 
-#: systemv/lp.c:264
 #, c-format
 msgid "%s: Error - expected copies after \"-n\" option."
 msgstr "%s: エラー - \"-n\" オプションのあとにはコピー数が必要です。"
 
-#: berkeley/lpr.c:209
 #, c-format
 msgid "%s: Error - expected destination after \"-P\" option."
 msgstr "%s: エラー - \"-P\" オプションのあとには宛先が必要です。"
 
-#: systemv/lpstat.c:231
-#, c-format
-msgid "%s: Error - expected destination after \"-b\" option."
-msgstr "%s: エラー - \"-b\" オプションのあとに宛先が必要です。"
-
-#: systemv/lp.c:138
 #, c-format
 msgid "%s: Error - expected destination after \"-d\" option."
 msgstr "%s: エラー - \"-d\" オプションのあとにはプリンター名が必要です。"
 
-#: systemv/lp.c:168
 #, c-format
 msgid "%s: Error - expected form after \"-f\" option."
 msgstr "%s: エラー - \"-f\" オプションのあとには用紙名が必要です。"
 
-#: systemv/lp.c:391
 #, c-format
 msgid "%s: Error - expected hold name after \"-H\" option."
 msgstr "%s: エラー - \"-H\" オプションのあとにはホールド名が必要です。"
 
-#: berkeley/lpr.c:103
 #, c-format
 msgid "%s: Error - expected hostname after \"-H\" option."
 msgstr "%s: エラー - \"-H\" オプションのあとにはホスト名が必要です。"
 
-#: berkeley/lpq.c:180 berkeley/lprm.c:123 systemv/cancel.c:124
-#: systemv/cupsaccept.c:123 systemv/lp.c:189 systemv/lpstat.c:291
 #, c-format
 msgid "%s: Error - expected hostname after \"-h\" option."
 msgstr "%s: エラー -  \"-h\" オプションのあとにはホスト名が必要です。"
 
-#: systemv/lp.c:371
 #, c-format
 msgid "%s: Error - expected mode list after \"-y\" option."
 msgstr "%s: エラー - \"-y\" オプションのあとにはモードリストが必要です。"
 
-#: berkeley/lpr.c:263
 #, c-format
 msgid "%s: Error - expected name after \"-%c\" option."
 msgstr "%s: エラー - \"-%c\" オプションのあとには名前が必要です。"
 
-#: berkeley/lpr.c:153 systemv/lp.c:288
 #, c-format
 msgid "%s: Error - expected option=value after \"-o\" option."
 msgstr "%s: エラー - \"-o\" オプションのあとには オプション=値 が必要です。"
 
-#: systemv/lp.c:441
 #, c-format
 msgid "%s: Error - expected page list after \"-P\" option."
 msgstr "%s: エラー - \"-P\" オプションのあとにはページリストが必要です。"
 
-#: systemv/lp.c:308
 #, c-format
 msgid "%s: Error - expected priority after \"-%c\" option."
 msgstr "%s: エラー - \"-%c\" オプションのあとには優先度が必要です。"
 
-#: systemv/cupsaccept.c:141
 #, c-format
 msgid "%s: Error - expected reason text after \"-r\" option."
 msgstr "%s: エラー - \"-r\" のあとには理由のテキストが必要です。"
 
-#: systemv/lp.c:354
 #, c-format
 msgid "%s: Error - expected title after \"-t\" option."
 msgstr "%s: エラー - \"-t\" オプションのあとにはタイトルが必要です。"
 
-#: berkeley/lpq.c:111 berkeley/lpr.c:84 berkeley/lprm.c:104
-#: systemv/cancel.c:94 systemv/cupsaccept.c:101 systemv/lp.c:116
-#: systemv/lpadmin.c:438 systemv/lpstat.c:137
 #, c-format
 msgid "%s: Error - expected username after \"-U\" option."
 msgstr "%s: エラー - \"-U\" オプションのあとにはユーザー名が必要です。"
 
-#: systemv/cancel.c:145
 #, c-format
 msgid "%s: Error - expected username after \"-u\" option."
 msgstr "%s: エラー - \"-u\" オプションのあとにはユーザー名が必要です。"
 
-#: berkeley/lpr.c:125
 #, c-format
 msgid "%s: Error - expected value after \"-%c\" option."
 msgstr "%s: エラー -  \"-%c\" オプションのあとには値が必要です。"
 
-#: systemv/lpstat.c:157 systemv/lpstat.c:171
 #, c-format
 msgid ""
 "%s: Error - need \"completed\", \"not-completed\", or \"all\" after \"-W\" "
 "option."
-msgstr "%s: エラー - \"-W\" オプションのあとには、\"completed\"、\"not-completed\"、\"all\" のいずれかが必要です。"
+msgstr ""
+"%s: エラー - \"-W\" オプションのあとには、\"completed\"、\"not-completed"
+"\"、\"all\" のいずれかが必要です。"
 
-#: berkeley/lpq.c:241 berkeley/lpr.c:349 systemv/lp.c:589
 #, c-format
 msgid "%s: Error - no default destination available."
 msgstr "%s: エラー - 利用可能なデフォルトの宛先がありません。"
 
-#: systemv/lp.c:330
 #, c-format
 msgid "%s: Error - priority must be between 1 and 100."
 msgstr "%s: エラー - 優先度は 1 から 100 の間である必要があります。"
 
-#: berkeley/lpr.c:352 systemv/lp.c:592
 #, c-format
 msgid "%s: Error - scheduler not responding."
 msgstr "%s: エラー - スケジューラーが応答していません。"
 
-#: berkeley/lpr.c:305 systemv/lp.c:537
 #, c-format
 msgid "%s: Error - too many files - \"%s\"."
 msgstr "%s: エラー - ファイルが多すぎます - \"%s\""
 
-#: berkeley/lpr.c:287 systemv/lp.c:520
 #, c-format
 msgid "%s: Error - unable to access \"%s\" - %s"
 msgstr "%s: エラー - \"%s\" にアクセスできません - %s"
 
-#: berkeley/lpr.c:395 systemv/lp.c:623
 #, c-format
 msgid "%s: Error - unable to queue from stdin - %s."
 msgstr "%s: エラー - 標準入力からキューにデータを入力できません。 - %s"
 
-#: berkeley/lprm.c:87 berkeley/lprm.c:172 systemv/cancel.c:214
 #, c-format
 msgid "%s: Error - unknown destination \"%s\"."
 msgstr "%s: エラー - \"%s\" は未知の宛先です。"
 
-#: berkeley/lpq.c:150
 #, c-format
 msgid "%s: Error - unknown destination \"%s/%s\"."
 msgstr "%s: エラー - \"%s/%s\" は未知の宛先です。"
 
-#: berkeley/lpr.c:274 berkeley/lprm.c:139 systemv/cancel.c:156
-#: systemv/cupsaccept.c:164 systemv/lp.c:496 systemv/lpstat.c:452
 #, c-format
 msgid "%s: Error - unknown option \"%c\"."
 msgstr "%s: エラー - '%c' は未知のオプションです。"
 
-#: systemv/cupsaccept.c:157
 #, c-format
 msgid "%s: Error - unknown option \"%s\"."
 msgstr "%s: エラー - '%s' は未知のオプションです。"
 
-#: systemv/lp.c:208
 #, c-format
 msgid "%s: Expected job ID after \"-i\" option."
 msgstr "%s: '-i' オプションのあとにはジョブ ID が必要です。"
 
-#: systemv/lpstat.c:504 systemv/lpstat.c:543
 #, c-format
 msgid "%s: Invalid destination name in list \"%s\"."
 msgstr "%s: リスト \"%s\" に無効な宛先名があります。"
 
-#: scheduler/cupsfilter.c:567
 #, c-format
 msgid "%s: Invalid filter string \"%s\"."
 msgstr "%s: 無効なフィルター文字列です \"%s\""
 
-#: systemv/lp.c:418
 #, c-format
 msgid "%s: Need job ID (\"-i jobid\") before \"-H restart\"."
 msgstr "%s: '-H restart' の前にはジョブ ID ('-i ジョブID') が必要です。"
 
-#: scheduler/cupsfilter.c:458
 #, c-format
 msgid "%s: No filter to convert from %s/%s to %s/%s."
 msgstr "%s: %s/%s から %s/%s に変換するフィルターがありません。"
 
-#: systemv/cupsaccept.c:198
 #, c-format
 msgid "%s: Operation failed: %s"
 msgstr "%s: 操作に失敗しました: %s"
 
-#: berkeley/lpq.c:97 berkeley/lpr.c:70 berkeley/lprm.c:67 systemv/cancel.c:81
-#: systemv/cupsaccept.c:88 systemv/cupsaddsmb.c:86 systemv/lp.c:102
-#: systemv/lpadmin.c:239 systemv/lpinfo.c:88 systemv/lpmove.c:73
-#: systemv/lpstat.c:102 test/ipptool.c:304 test/ipptool.c:321
 #, c-format
 msgid "%s: Sorry, no encryption support."
 msgstr "%s: 残念ながら、暗号化サポートはコンパイル時に組み込まれていません。"
 
-#: berkeley/lpq.c:295 scheduler/cupsfilter.c:1221 systemv/cancel.c:237
-#: systemv/cupsaddsmb.c:144 systemv/cupsaddsmb.c:171
 #, c-format
 msgid "%s: Unable to connect to server."
 msgstr "%s: サーバーに接続できません"
 
-#: systemv/cancel.c:317
 #, c-format
 msgid "%s: Unable to contact server."
 msgstr "%s: サーバーに連絡できません。"
 
-#: scheduler/cupsfilter.c:424
 #, c-format
 msgid "%s: Unable to determine MIME type of \"%s\"."
 msgstr "%s: \"%s\" の MIME タイプを判別できません。"
 
-#: ppdc/ppdmerge.cxx:96
 #, c-format
 msgid "%s: Unable to open %s: %s"
 msgstr "%s: %s を開けません: %s"
 
-#: scheduler/cupsfilter.c:662 ppdc/ppdmerge.cxx:112
 #, c-format
 msgid "%s: Unable to open PPD file: %s on line %d."
 msgstr "%s: PPD ファイルを開けません: %s の %d 行目"
 
-#: scheduler/cupsfilter.c:392
 #, c-format
 msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"."
-msgstr "%s: \"%s\" または \"%s\" から MIME データベースを読み取ることができません。"
+msgstr ""
+"%s: \"%s\" または \"%s\" から MIME データベースを読み取ることができません。"
 
-#: berkeley/lpq.c:153 systemv/lpstat.c:558
 #, c-format
 msgid "%s: Unknown destination \"%s\"."
 msgstr "%s: \"%s\" は未知の宛先です。"
 
-#: scheduler/cupsfilter.c:435
 #, c-format
 msgid "%s: Unknown destination MIME type %s/%s."
 msgstr "%s: %s/%s は未知の宛先 MIME タイプです。"
 
-#: scheduler/cupsfilter.c:1426
 #, c-format
 msgid "%s: Unknown option \"%c\"."
 msgstr "%s: '%c' は未知のオプションです。"
 
-#: scheduler/cupsfilter.c:416
 #, c-format
 msgid "%s: Unknown source MIME type %s/%s."
 msgstr "%s: %s/%s は未知のソース MIME タイプです。"
 
-#: berkeley/lpr.c:139
 #, c-format
 msgid ""
 "%s: Warning - \"%c\" format modifier not supported - output may not be "
 "correct."
-msgstr "%s: 警告 - '%c' 形式修飾子はサポートされていません - 出力は正しくないものになるかもしれません。"
+msgstr ""
+"%s: 警告 - '%c' 形式修飾子はサポートされていません - 出力は正しくないものにな"
+"るかもしれません。"
 
-#: systemv/lp.c:468
 #, c-format
 msgid "%s: Warning - character set option ignored."
 msgstr "%s: 警告 - 文字セットオプションは無視されます。"
 
-#: systemv/lp.c:487
 #, c-format
 msgid "%s: Warning - content type option ignored."
 msgstr "%s: 警告 - コンテンツタイプオプションは無視されます。"
 
-#: systemv/lp.c:175
 #, c-format
 msgid "%s: Warning - form option ignored."
 msgstr "%s: 警告 - 用紙オプションは無視されます。"
 
-#: systemv/lp.c:378
 #, c-format
 msgid "%s: Warning - mode option ignored."
 msgstr "%s: 警告 - モードオプションは無視されます。"
 
-#: ppdc/sample.c:310
 msgid "-1"
 msgstr "-1"
 
-#: ppdc/sample.c:301
 msgid "-10"
 msgstr "-10"
 
-#: ppdc/sample.c:393
 msgid "-100"
 msgstr "-100"
 
-#: ppdc/sample.c:392
 msgid "-105"
 msgstr "-105"
 
-#: ppdc/sample.c:300
 msgid "-11"
 msgstr "-11"
 
-#: ppdc/sample.c:391
 msgid "-110"
 msgstr "-110"
 
-#: ppdc/sample.c:390
 msgid "-115"
 msgstr "-115"
 
-#: ppdc/sample.c:299
 msgid "-12"
 msgstr "-12"
 
-#: ppdc/sample.c:389
 msgid "-120"
 msgstr "-120"
 
-#: ppdc/sample.c:298
 msgid "-13"
 msgstr "-13"
 
-#: ppdc/sample.c:297
 msgid "-14"
 msgstr "-14"
 
-#: ppdc/sample.c:296
 msgid "-15"
 msgstr "-15"
 
-#: ppdc/sample.c:309
 msgid "-2"
 msgstr "-2"
 
-#: ppdc/sample.c:409
 msgid "-20"
 msgstr "-20"
 
-#: ppdc/sample.c:408
 msgid "-25"
 msgstr "-25"
 
-#: ppdc/sample.c:308
 msgid "-3"
 msgstr "-3"
 
-#: ppdc/sample.c:407
 msgid "-30"
 msgstr "-30"
 
-#: ppdc/sample.c:406
 msgid "-35"
 msgstr "-35"
 
-#: ppdc/sample.c:307
 msgid "-4"
 msgstr "-4"
 
-#: ppdc/sample.c:405
 msgid "-40"
 msgstr "-40"
 
-#: ppdc/sample.c:404
 msgid "-45"
 msgstr "-45"
 
-#: ppdc/sample.c:306
 msgid "-5"
 msgstr "-5"
 
-#: ppdc/sample.c:403
 msgid "-50"
 msgstr "-50"
 
-#: ppdc/sample.c:402
 msgid "-55"
 msgstr "-55"
 
-#: ppdc/sample.c:305
 msgid "-6"
 msgstr "-6"
 
-#: ppdc/sample.c:401
 msgid "-60"
 msgstr "-60"
 
-#: ppdc/sample.c:400
 msgid "-65"
 msgstr "-65"
 
-#: ppdc/sample.c:304
 msgid "-7"
 msgstr "-7"
 
-#: ppdc/sample.c:399
 msgid "-70"
 msgstr "-70"
 
-#: ppdc/sample.c:398
 msgid "-75"
 msgstr "-75"
 
-#: ppdc/sample.c:303
 msgid "-8"
 msgstr "-8"
 
-#: ppdc/sample.c:397
 msgid "-80"
 msgstr "-80"
 
-#: ppdc/sample.c:396
 msgid "-85"
 msgstr "-85"
 
-#: ppdc/sample.c:302
 msgid "-9"
 msgstr "-9"
 
-#: ppdc/sample.c:395
 msgid "-90"
 msgstr "-90"
 
-#: ppdc/sample.c:394
 msgid "-95"
 msgstr "-95"
 
-#: ppdc/sample.c:311
 msgid "0"
 msgstr "0"
 
-#: ppdc/sample.c:312
 msgid "1"
 msgstr "1"
 
-#: ppdc/sample.c:384
 msgid "1 inch/sec."
 msgstr "1 インチ/秒"
 
-#: ppdc/sample.c:172
 msgid "1.25x0.25\""
 msgstr "1.25x0.25 インチ"
 
-#: ppdc/sample.c:173
 msgid "1.25x2.25\""
 msgstr "1.25x2.25 インチ"
 
-#: ppdc/sample.c:432
 msgid "1.5 inch/sec."
 msgstr "1.5 インチ/秒"
 
-#: ppdc/sample.c:174
 msgid "1.50x0.25\""
 msgstr "1.50x0.25 インチ"
 
-#: ppdc/sample.c:175
 msgid "1.50x0.50\""
 msgstr "1.50x0.50 インチ"
 
-#: ppdc/sample.c:176
 msgid "1.50x1.00\""
 msgstr "1.50x1.00 インチ"
 
-#: ppdc/sample.c:177
 msgid "1.50x2.00\""
 msgstr "1.50x2.00 インチ"
 
-#: ppdc/sample.c:321
 msgid "10"
 msgstr "10"
 
-#: ppdc/sample.c:443
 msgid "10 inches/sec."
 msgstr "10 インチ/秒"
 
-#: ppdc/sample.c:6
 msgid "10 x 11"
 msgstr "10 x 11 インチ"
 
-#: ppdc/sample.c:7
 msgid "10 x 13"
 msgstr "10 x 13 インチ"
 
-#: ppdc/sample.c:8
 msgid "10 x 14"
 msgstr "10 x 14 インチ"
 
-#: ppdc/sample.c:423
 msgid "100"
 msgstr "100"
 
-#: ppdc/sample.c:334
 msgid "100 mm/sec."
 msgstr "100 ミリメートル/秒"
 
-#: ppdc/sample.c:424
 msgid "105"
 msgstr "105"
 
-#: ppdc/sample.c:322
 msgid "11"
 msgstr "11"
 
-#: ppdc/sample.c:444
 msgid "11 inches/sec."
 msgstr "11 インチ/秒"
 
-#: ppdc/sample.c:425
 msgid "110"
 msgstr "110"
 
-#: ppdc/sample.c:426
 msgid "115"
 msgstr "115"
 
-#: ppdc/sample.c:323
 msgid "12"
 msgstr "12"
 
-#: ppdc/sample.c:445
 msgid "12 inches/sec."
 msgstr "12 インチ/秒"
 
-#: ppdc/sample.c:9
 msgid "12 x 11"
 msgstr "12 x 11 インチ"
 
-#: ppdc/sample.c:427
 msgid "120"
 msgstr "120"
 
-#: ppdc/sample.c:335
 msgid "120 mm/sec."
 msgstr "120 ミリメートル/秒"
 
-#: ppdc/sample.c:243
 msgid "120x60dpi"
 msgstr "120x60dpi"
 
-#: ppdc/sample.c:249
 msgid "120x72dpi"
 msgstr "120x72dpi"
 
-#: ppdc/sample.c:324
 msgid "13"
 msgstr "13"
 
-#: ppdc/sample.c:232
 msgid "136dpi"
 msgstr "136dpi"
 
-#: ppdc/sample.c:325
 msgid "14"
 msgstr "14"
 
-#: ppdc/sample.c:326
 msgid "15"
 msgstr "15"
 
-#: ppdc/sample.c:328
 msgid "15 mm/sec."
 msgstr "15 ミリメートル/秒"
 
-#: ppdc/sample.c:10
 msgid "15 x 11"
 msgstr "15 x 11 インチ"
 
-#: ppdc/sample.c:336
 msgid "150 mm/sec."
 msgstr "150 ミリメートル/秒"
 
-#: ppdc/sample.c:283
 msgid "150dpi"
 msgstr "150dpi"
 
-#: ppdc/sample.c:368
 msgid "16"
 msgstr "16"
 
-#: ppdc/sample.c:369
 msgid "17"
 msgstr "17"
 
-#: ppdc/sample.c:370
 msgid "18"
 msgstr "18"
 
-#: ppdc/sample.c:244
 msgid "180dpi"
 msgstr "180dpi"
 
-#: ppdc/sample.c:371
 msgid "19"
 msgstr "19"
 
-#: ppdc/sample.c:313
 msgid "2"
 msgstr "2"
 
-#: ppdc/sample.c:385
 msgid "2 inches/sec."
 msgstr "2 インチ/秒"
 
-#: ppdc/sample.c:270
 msgid "2-Sided Printing"
 msgstr "両面印刷"
 
-#: ppdc/sample.c:178
 msgid "2.00x0.37\""
 msgstr "2.00x0.37 インチ"
 
-#: ppdc/sample.c:179
 msgid "2.00x0.50\""
 msgstr "2.00x0.50 インチ"
 
-#: ppdc/sample.c:180
 msgid "2.00x1.00\""
 msgstr "2.00x1.00 インチ"
 
-#: ppdc/sample.c:181
 msgid "2.00x1.25\""
 msgstr "2.00x1.25 インチ"
 
-#: ppdc/sample.c:182
 msgid "2.00x2.00\""
 msgstr "2.00x2.00 インチ"
 
-#: ppdc/sample.c:183
 msgid "2.00x3.00\""
 msgstr "2.00x3.00 インチ"
 
-#: ppdc/sample.c:184
 msgid "2.00x4.00\""
 msgstr "2.00x4.00 インチ"
 
-#: ppdc/sample.c:185
 msgid "2.00x5.50\""
 msgstr "2.00x5.50 インチ"
 
-#: ppdc/sample.c:186
 msgid "2.25x0.50\""
 msgstr "2.25x0.50 インチ"
 
-#: ppdc/sample.c:187
 msgid "2.25x1.25\""
 msgstr "2.25x1.25 インチ"
 
-#: ppdc/sample.c:188
 msgid "2.25x4.00\""
 msgstr "2.25x4.00 インチ"
 
-#: ppdc/sample.c:189
 msgid "2.25x5.50\""
 msgstr "2.25x5.50 インチ"
 
-#: ppdc/sample.c:190
 msgid "2.38x5.50\""
 msgstr "2.38x5.50 インチ"
 
-#: ppdc/sample.c:433
 msgid "2.5 inches/sec."
 msgstr "2.5 インチ/秒"
 
-#: ppdc/sample.c:191
 msgid "2.50x1.00\""
 msgstr "2.50x1.00 インチ"
 
-#: ppdc/sample.c:192
 msgid "2.50x2.00\""
 msgstr "2.50x2.00 インチ"
 
-#: ppdc/sample.c:193
 msgid "2.75x1.25\""
 msgstr "2.75x1.25 インチ"
 
-#: ppdc/sample.c:194
 msgid "2.9 x 1\""
 msgstr "2.9 x 1 インチ"
 
-#: ppdc/sample.c:372
 msgid "20"
 msgstr "20"
 
-#: ppdc/sample.c:329
 msgid "20 mm/sec."
 msgstr "20 ミリメートル/秒"
 
-#: ppdc/sample.c:337
 msgid "200 mm/sec."
 msgstr "200 ミリメートル/秒"
 
-#: ppdc/sample.c:233
 msgid "203dpi"
 msgstr "203dpi"
 
-#: ppdc/sample.c:373
 msgid "21"
 msgstr "21"
 
-#: ppdc/sample.c:374
 msgid "22"
 msgstr "22"
 
-#: ppdc/sample.c:375
 msgid "23"
 msgstr "23"
 
-#: ppdc/sample.c:376
 msgid "24"
 msgstr "24"
 
-#: ppdc/sample.c:241
 msgid "24-Pin Series"
 msgstr "24 ピンシリーズ"
 
-#: ppdc/sample.c:250
 msgid "240x72dpi"
 msgstr "240x72dpi"
 
-#: ppdc/sample.c:377
 msgid "25"
 msgstr "25"
 
-#: ppdc/sample.c:338
 msgid "250 mm/sec."
 msgstr "250 ミリメートル/秒"
 
-#: ppdc/sample.c:378
 msgid "26"
 msgstr "26"
 
-#: ppdc/sample.c:379
 msgid "27"
 msgstr "27"
 
-#: ppdc/sample.c:380
 msgid "28"
 msgstr "28"
 
-#: ppdc/sample.c:381
 msgid "29"
 msgstr "29"
 
-#: ppdc/sample.c:314
 msgid "3"
 msgstr "3"
 
-#: ppdc/sample.c:386
 msgid "3 inches/sec."
 msgstr "3 インチ/秒"
 
-#: ppdc/sample.c:3
 msgid "3 x 5"
 msgstr "3 x 5"
 
-#: ppdc/sample.c:195
 msgid "3.00x1.00\""
 msgstr "3.00x1.00 インチ"
 
-#: ppdc/sample.c:196
 msgid "3.00x1.25\""
 msgstr "3.00x1.25 インチ"
 
-#: ppdc/sample.c:197
 msgid "3.00x2.00\""
 msgstr "3.00x2.00 インチ"
 
-#: ppdc/sample.c:198
 msgid "3.00x3.00\""
 msgstr "3.00x3.00インチ"
 
-#: ppdc/sample.c:199
 msgid "3.00x5.00\""
 msgstr "3.00x5.00 インチ"
 
-#: ppdc/sample.c:200
 msgid "3.25x2.00\""
 msgstr "3.25x2.00 インチ"
 
-#: ppdc/sample.c:201
 msgid "3.25x5.00\""
 msgstr "3.25x5.00 インチ"
 
-#: ppdc/sample.c:202
 msgid "3.25x5.50\""
 msgstr "3.25x5.50 インチ"
 
-#: ppdc/sample.c:203
 msgid "3.25x5.83\""
 msgstr "3.25x5.83 インチ"
 
-#: ppdc/sample.c:204
 msgid "3.25x7.83\""
 msgstr "3.25x7.83 インチ"
 
-#: ppdc/sample.c:4
 msgid "3.5 x 5"
 msgstr "3.5 x 5"
 
-#: ppdc/sample.c:171
 msgid "3.5\" Disk"
 msgstr "3.5 インチディスク"
 
-#: ppdc/sample.c:205
 msgid "3.50x1.00\""
 msgstr "3.50x1.00 インチ"
 
-#: ppdc/sample.c:382
 msgid "30"
 msgstr "30"
 
-#: ppdc/sample.c:330
 msgid "30 mm/sec."
 msgstr "30 ミリメートル/秒"
 
-#: ppdc/sample.c:339
 msgid "300 mm/sec."
 msgstr "300 ミリメートル/秒"
 
-#: ppdc/sample.c:234
 msgid "300dpi"
 msgstr "300dpi"
 
-#: ppdc/sample.c:410
 msgid "35"
 msgstr "35"
 
-#: ppdc/sample.c:246
 msgid "360dpi"
 msgstr "360dpi"
 
-#: ppdc/sample.c:245
 msgid "360x180dpi"
 msgstr "360x180dpi"
 
-#: ppdc/sample.c:315
 msgid "4"
 msgstr "4"
 
-#: ppdc/sample.c:387
 msgid "4 inches/sec."
 msgstr "4 インチ/秒"
 
-#: ppdc/sample.c:206
 msgid "4.00x1.00\""
 msgstr "4.00x1.00 インチ"
 
-#: ppdc/sample.c:214
 msgid "4.00x13.00\""
 msgstr "4.00x13.00 インチ"
 
-#: ppdc/sample.c:207
 msgid "4.00x2.00\""
 msgstr "4.00x2.00 インチ"
 
-#: ppdc/sample.c:208
 msgid "4.00x2.50\""
 msgstr "4.00x2.50 インチ"
 
-#: ppdc/sample.c:209
 msgid "4.00x3.00\""
 msgstr "4.00x3.00 インチ"
 
-#: ppdc/sample.c:210
 msgid "4.00x4.00\""
 msgstr "4.00x4.00 インチ"
 
-#: ppdc/sample.c:211
 msgid "4.00x5.00\""
 msgstr "4.00x5.00 インチ"
 
-#: ppdc/sample.c:212
 msgid "4.00x6.00\""
 msgstr "4.00x6.00 インチ"
 
-#: ppdc/sample.c:213
 msgid "4.00x6.50\""
 msgstr "4.00x6.50 インチ"
 
-#: ppdc/sample.c:411
 msgid "40"
 msgstr "40"
 
-#: ppdc/sample.c:331
 msgid "40 mm/sec."
 msgstr "40 ミリメートル/秒"
 
-#: ppdc/sample.c:412
 msgid "45"
 msgstr "45"
 
-#: ppdc/sample.c:316
 msgid "5"
 msgstr "5"
 
-#: ppdc/sample.c:437
 msgid "5 inches/sec."
 msgstr "5 インチ/秒"
 
-#: ppdc/sample.c:5
 msgid "5 x 7"
 msgstr "5 x 7 インチ"
 
-#: ppdc/sample.c:413
 msgid "50"
 msgstr "50"
 
-#: ppdc/sample.c:414
 msgid "55"
 msgstr "55"
 
-#: ppdc/sample.c:317
 msgid "6"
 msgstr "6"
 
-#: ppdc/sample.c:438
 msgid "6 inches/sec."
 msgstr "6 インチ/秒"
 
-#: ppdc/sample.c:215
 msgid "6.00x1.00\""
 msgstr "6.00x1.00 インチ"
 
-#: ppdc/sample.c:216
 msgid "6.00x2.00\""
 msgstr "6.00x2.00 インチ"
 
-#: ppdc/sample.c:217
 msgid "6.00x3.00\""
 msgstr "6.00x3.00 インチ"
 
-#: ppdc/sample.c:218
 msgid "6.00x4.00\""
 msgstr "6.00x4.00 インチ"
 
-#: ppdc/sample.c:219
 msgid "6.00x5.00\""
 msgstr "6.00x5.00 インチ"
 
-#: ppdc/sample.c:220
 msgid "6.00x6.00\""
 msgstr "6.00x6.00 インチ"
 
-#: ppdc/sample.c:221
 msgid "6.00x6.50\""
 msgstr "6.00x6.50 インチ"
 
-#: ppdc/sample.c:415
 msgid "60"
 msgstr "60"
 
-#: ppdc/sample.c:332
 msgid "60 mm/sec."
 msgstr "60 ミリメートル/秒"
 
-#: ppdc/sample.c:261
 msgid "600dpi"
 msgstr "600dpi"
 
-#: ppdc/sample.c:242
 msgid "60dpi"
 msgstr "60dpi"
 
-#: ppdc/sample.c:248
 msgid "60x72dpi"
 msgstr "60x72dpi"
 
-#: ppdc/sample.c:416
 msgid "65"
 msgstr "65"
 
-#: ppdc/sample.c:318
 msgid "7"
 msgstr "7"
 
-#: ppdc/sample.c:440
 msgid "7 inches/sec."
 msgstr "7 インチ/秒"
 
-#: ppdc/sample.c:11
 msgid "7 x 9"
 msgstr "7 x 9 インチ"
 
-#: ppdc/sample.c:417
 msgid "70"
 msgstr "70"
 
-#: ppdc/sample.c:252
 msgid "720dpi"
 msgstr "720dpi"
 
-#: ppdc/sample.c:418
 msgid "75"
 msgstr "75"
 
-#: ppdc/sample.c:319
 msgid "8"
 msgstr "8"
 
-#: ppdc/sample.c:441
 msgid "8 inches/sec."
 msgstr "8 インチ/秒"
 
-#: ppdc/sample.c:12
 msgid "8 x 10"
 msgstr "8 x 10 インチ"
 
-#: ppdc/sample.c:222
 msgid "8.00x1.00\""
 msgstr "8.00x1.00 インチ"
 
-#: ppdc/sample.c:223
 msgid "8.00x2.00\""
 msgstr "8.00x2.00 インチ"
 
-#: ppdc/sample.c:224
 msgid "8.00x3.00\""
 msgstr "8.00x3.00 インチ"
 
-#: ppdc/sample.c:225
 msgid "8.00x4.00\""
 msgstr "8.00x4.00 インチ"
 
-#: ppdc/sample.c:226
 msgid "8.00x5.00\""
 msgstr "8.00x5.00 インチ"
 
-#: ppdc/sample.c:227
 msgid "8.00x6.00\""
 msgstr "8.00x6.00 インチ"
 
-#: ppdc/sample.c:228
 msgid "8.00x6.50\""
 msgstr "8.00x6.50 インチ"
 
-#: ppdc/sample.c:419
 msgid "80"
 msgstr "80"
 
-#: ppdc/sample.c:333
 msgid "80 mm/sec."
 msgstr "80 ミリメートル/秒"
 
-#: ppdc/sample.c:420
 msgid "85"
 msgstr "85"
 
-#: ppdc/sample.c:320
 msgid "9"
 msgstr "9"
 
-#: ppdc/sample.c:442
 msgid "9 inches/sec."
 msgstr "9 インチ/秒"
 
-#: ppdc/sample.c:13
 msgid "9 x 11"
 msgstr "9 x 11 インチ"
 
-#: ppdc/sample.c:14
 msgid "9 x 12"
 msgstr "9 x 12 インチ"
 
-#: ppdc/sample.c:247
 msgid "9-Pin Series"
 msgstr "9 ピンシリーズ"
 
-#: ppdc/sample.c:421
 msgid "90"
 msgstr "90"
 
-#: ppdc/sample.c:422
 msgid "95"
 msgstr "95"
 
-#: berkeley/lpc.c:213
 msgid "?Invalid help command unknown."
 msgstr "?無効なヘルプコマンドです"
 
-#: cgi-bin/admin.c:2368
 msgid "A Samba password is required to export printer drivers"
-msgstr "プリンタードライバーをエクスポートするには Samba のパスワードが必要です。"
+msgstr ""
+"プリンタードライバーをエクスポートするには Samba のパスワードが必要です。"
 
-#: cgi-bin/admin.c:2364
 msgid "A Samba username is required to export printer drivers"
-msgstr "プリンタードライバーをエクスポートするには、Samba のユーザー名が必要です。"
+msgstr ""
+"プリンタードライバーをエクスポートするには、Samba のユーザー名が必要です。"
 
-#: scheduler/ipp.c:2283
 #, c-format
 msgid "A class named \"%s\" already exists."
 msgstr "\"%s\" という名前のクラスはすでに存在します。"
 
-#: scheduler/ipp.c:1004
 #, c-format
 msgid "A printer named \"%s\" already exists."
 msgstr "\"%s\" という名前のプリンターはすでに存在します。"
 
-#: ppdc/sample.c:15
 msgid "A0"
 msgstr "A0"
 
-#: ppdc/sample.c:16
 msgid "A0 Long Edge"
 msgstr "A0 長辺送り"
 
-#: ppdc/sample.c:17
 msgid "A1"
 msgstr "A1"
 
-#: ppdc/sample.c:18
 msgid "A1 Long Edge"
 msgstr "A1 長辺送り"
 
-#: ppdc/sample.c:37
 msgid "A10"
 msgstr "A10"
 
-#: ppdc/sample.c:19
 msgid "A2"
 msgstr "A2"
 
-#: ppdc/sample.c:20
 msgid "A2 Long Edge"
 msgstr "A2 長辺送り"
 
-#: ppdc/sample.c:21
 msgid "A3"
 msgstr "A3"
 
-#: ppdc/sample.c:22
 msgid "A3 Long Edge"
 msgstr "A3 長辺送り"
 
-#: ppdc/sample.c:23
 msgid "A3 Oversize"
 msgstr "A3 (特大)"
 
-#: ppdc/sample.c:24
 msgid "A3 Oversize Long Edge"
 msgstr "A3 (特大) 長辺送り"
 
-#: ppdc/sample.c:25
 msgid "A4"
 msgstr "A4"
 
-#: ppdc/sample.c:27
 msgid "A4 Long Edge"
 msgstr "A4 長辺送り"
 
-#: ppdc/sample.c:26
 msgid "A4 Oversize"
 msgstr "A4 (特大)"
 
-#: ppdc/sample.c:28
 msgid "A4 Small"
 msgstr "A4 (小)"
 
-#: ppdc/sample.c:29
 msgid "A5"
 msgstr "A5"
 
-#: ppdc/sample.c:31
 msgid "A5 Long Edge"
 msgstr "A5 長辺送り"
 
-#: ppdc/sample.c:30
 msgid "A5 Oversize"
 msgstr "A5 (特大)"
 
-#: ppdc/sample.c:32
 msgid "A6"
 msgstr "A6"
 
-#: ppdc/sample.c:33
 msgid "A6 Long Edge"
 msgstr "A6 長辺送り"
 
-#: ppdc/sample.c:34
 msgid "A7"
 msgstr "A7"
 
-#: ppdc/sample.c:35
 msgid "A8"
 msgstr "A8"
 
-#: ppdc/sample.c:36
 msgid "A9"
 msgstr "A9"
 
-#: ppdc/sample.c:38
 msgid "ANSI A"
 msgstr "ANSI A"
 
-#: ppdc/sample.c:39
 msgid "ANSI B"
 msgstr "ANSI B"
 
-#: ppdc/sample.c:40
 msgid "ANSI C"
 msgstr "ANSI C"
 
-#: ppdc/sample.c:41
 msgid "ANSI D"
 msgstr "ANSI D"
 
-#: ppdc/sample.c:42
 msgid "ANSI E"
 msgstr "ANSI E"
 
-#: ppdc/sample.c:47
 msgid "ARCH C"
 msgstr "ARCH C"
 
-#: ppdc/sample.c:48
 msgid "ARCH C Long Edge"
 msgstr "ARCH C 長辺送り"
 
-#: ppdc/sample.c:49
 msgid "ARCH D"
 msgstr "ARCH D"
 
-#: ppdc/sample.c:50
 msgid "ARCH D Long Edge"
 msgstr "ARCH D 長辺送り"
 
-#: ppdc/sample.c:51
 msgid "ARCH E"
 msgstr "ARCH E"
 
-#: ppdc/sample.c:52
 msgid "ARCH E Long Edge"
 msgstr "ARCH E 長辺送り"
 
-#: cgi-bin/classes.c:169 cgi-bin/printers.c:172
 msgid "Accept Jobs"
 msgstr "ジョブの受け付け"
 
-#: cups/http-support.c:1284
 msgid "Accepted"
 msgstr "受け付けました"
 
-#: cgi-bin/admin.c:570
 msgid "Add Class"
 msgstr "クラスの追加"
 
-#: cgi-bin/admin.c:882
 msgid "Add Printer"
 msgstr "プリンターの追加"
 
-#: cgi-bin/admin.c:444 cgi-bin/admin.c:477 cgi-bin/admin.c:525
-#: cgi-bin/admin.c:535
 msgid "Add RSS Subscription"
 msgstr "RSS 購読を追加"
 
-#: ppdc/sample.c:163
 msgid "Address"
 msgstr "アドレス"
 
-#: cgi-bin/admin.c:210 cgi-bin/admin.c:284 cgi-bin/admin.c:2745
 msgid "Administration"
 msgstr "管理"
 
-#: ppdc/sample.c:429
 msgid "Always"
 msgstr "常に有効"
 
-#: backend/socket.c:129
 msgid "AppSocket/HP JetDirect"
 msgstr "AppSocket/HP JetDirect"
 
-#: ppdc/sample.c:450
 msgid "Applicator"
 msgstr "アプリケーター"
 
-#: scheduler/ipp.c:1079
 #, c-format
 msgid "Attempt to set %s printer-state to bad value %d."
 msgstr "%s printer-state に 不正な値 %d を設定しようとしています。"
 
-#: scheduler/ipp.c:325
 #, c-format
 msgid "Attribute groups are out of order (%x < %x)."
 msgstr "属性グループは範囲外です (%x < %x)。"
 
-#: ppdc/sample.c:126
 msgid "B0"
 msgstr "B0"
 
-#: ppdc/sample.c:127
 msgid "B1"
 msgstr "B1"
 
-#: ppdc/sample.c:137
 msgid "B10"
 msgstr "B10"
 
-#: ppdc/sample.c:128
 msgid "B2"
 msgstr "B2"
 
-#: ppdc/sample.c:129
 msgid "B3"
 msgstr "B3"
 
-#: ppdc/sample.c:130
 msgid "B4"
 msgstr "B4"
 
-#: ppdc/sample.c:131
 msgid "B5"
 msgstr "B5"
 
-#: ppdc/sample.c:132
 msgid "B5 Oversize"
 msgstr "B5 (特大)"
 
-#: ppdc/sample.c:133
 msgid "B6"
 msgstr "B6"
 
-#: ppdc/sample.c:134
 msgid "B7"
 msgstr "B7"
 
-#: ppdc/sample.c:135
 msgid "B8"
 msgstr "B8"
 
-#: ppdc/sample.c:136
 msgid "B9"
 msgstr "B9"
 
-#: cups/dest.c:1680
+#, c-format
+msgid "Bad 'document-format' value \"%s\"."
+msgstr ""
+
 msgid "Bad NULL dests pointer"
 msgstr "不正な NULL 送信先ポインター"
 
-#: cups/ppd.c:345
 msgid "Bad OpenGroup"
 msgstr "不正な OpenGroup"
 
-#: cups/ppd.c:347
 msgid "Bad OpenUI/JCLOpenUI"
 msgstr "不正な OpenUI/JCLOpenUI"
 
-#: cups/ppd.c:349
 msgid "Bad OrderDependency"
 msgstr "不正な OrderDependency"
 
-#: cups/ppd-cache.c:148 cups/ppd-cache.c:195 cups/ppd-cache.c:233
-#: cups/ppd-cache.c:239 cups/ppd-cache.c:255 cups/ppd-cache.c:271
-#: cups/ppd-cache.c:280 cups/ppd-cache.c:288 cups/ppd-cache.c:305
-#: cups/ppd-cache.c:313 cups/ppd-cache.c:328 cups/ppd-cache.c:336
-#: cups/ppd-cache.c:354 cups/ppd-cache.c:366 cups/ppd-cache.c:381
-#: cups/ppd-cache.c:393 cups/ppd-cache.c:415 cups/ppd-cache.c:423
-#: cups/ppd-cache.c:441 cups/ppd-cache.c:449 cups/ppd-cache.c:464
-#: cups/ppd-cache.c:472 cups/ppd-cache.c:490 cups/ppd-cache.c:498
-#: cups/ppd-cache.c:525 cups/ppd-cache.c:571 cups/ppd-cache.c:579
-#: cups/ppd-cache.c:587
 msgid "Bad PPD cache file."
 msgstr "不正な PPD キャッシュファイルです。"
 
-#: cups/http-support.c:1299
 msgid "Bad Request"
 msgstr "不正なリクエスト"
 
-#: cups/snmp.c:1002
 msgid "Bad SNMP version number"
 msgstr "不正な SNMP バージョン番号"
 
-#: cups/ppd.c:350
 msgid "Bad UIConstraints"
 msgstr "不正な UIConstraints"
 
-#: scheduler/ipp.c:1380
 #, c-format
 msgid "Bad copies value %d."
 msgstr "%d は不正なコピー値です。"
 
-#: cups/ppd.c:358
 msgid "Bad custom parameter"
 msgstr "不正なカスタムパラメーター"
 
-#: cups/http-support.c:1451 scheduler/ipp.c:2350
 #, c-format
 msgid "Bad device-uri \"%s\"."
 msgstr "\"%s\" は無効な device-uri です。"
 
-#: scheduler/ipp.c:2391
 #, c-format
 msgid "Bad device-uri scheme \"%s\"."
 msgstr "\"%s\" は無効な device-uri スキーマです。"
 
-#: scheduler/ipp.c:8224 scheduler/ipp.c:8240 scheduler/ipp.c:9454
-#: scheduler/ipp.c:10968
 #, c-format
 msgid "Bad document-format \"%s\"."
 msgstr "\"%s\" は不正な document-format です。"
 
-#: scheduler/ipp.c:9470
 #, c-format
 msgid "Bad document-format-default \"%s\"."
 msgstr "\"%s\" は不正な document-format-default です。"
 
-#: cups/util.c:929
 msgid "Bad filename buffer"
 msgstr "不正なファイル名バッファーです。"
 
-#: scheduler/ipp.c:10060
 msgid "Bad job-priority value."
 msgstr "不正な job-priority 値です。"
 
-#: scheduler/ipp.c:1410
 #, c-format
 msgid "Bad job-sheets value \"%s\"."
 msgstr "\"%s\" は不正な job-sheets 値です。"
 
-#: scheduler/ipp.c:1394
 msgid "Bad job-sheets value type."
 msgstr "不正な job-sheets 値タイプ です。"
 
-#: scheduler/ipp.c:10090
 msgid "Bad job-state value."
 msgstr "不正な job-state 値です。"
 
-#: scheduler/ipp.c:2974 scheduler/ipp.c:3426 scheduler/ipp.c:6078
-#: scheduler/ipp.c:6225 scheduler/ipp.c:7658 scheduler/ipp.c:7927
-#: scheduler/ipp.c:8775 scheduler/ipp.c:9001 scheduler/ipp.c:9350
-#: scheduler/ipp.c:9953
 #, c-format
 msgid "Bad job-uri \"%s\"."
 msgstr "\"%s\" は無効な job-uri 属性です。"
 
-#: scheduler/ipp.c:2049 scheduler/ipp.c:5622
 #, c-format
 msgid "Bad notify-pull-method \"%s\"."
 msgstr "\"%s\" は無効な notify-pull-method です。"
 
-#: scheduler/ipp.c:2013 scheduler/ipp.c:5586
 #, c-format
 msgid "Bad notify-recipient-uri \"%s\"."
 msgstr "URI \"%s\" は不正な notify-recipient-uri です。"
 
-#: scheduler/ipp.c:1426
 #, c-format
 msgid "Bad number-up value %d."
 msgstr "%d は不正な number-up 値です。"
 
-#: cups/adminutil.c:292
 #, c-format
 msgid "Bad option + choice on line %d."
 msgstr "%d 行に不正なオプションと選択があります。"
 
-#: scheduler/ipp.c:1443
 #, c-format
 msgid "Bad page-ranges values %d-%d."
 msgstr "%d-%d は不正な page-ranges 値です。"
 
-#: scheduler/ipp.c:2434
 #, c-format
 msgid "Bad port-monitor \"%s\"."
 msgstr "\"%s\" は無効な port-monitor です。"
 
-#: cups/dest.c:676 cups/dest.c:1333
 msgid "Bad printer URI."
 msgstr "不正なプリンター URI です。"
 
-#: scheduler/ipp.c:2495
 #, c-format
 msgid "Bad printer-state value %d."
 msgstr "%d は無効な printer-state 値です。"
 
-#: scheduler/ipp.c:293
 #, c-format
 msgid "Bad request ID %d."
 msgstr "%d は無効なリクエストIDです。"
 
-#: scheduler/ipp.c:278
 #, c-format
 msgid "Bad request version number %d.%d."
 msgstr "バージョン番号 %d.%d は無効なリクエストです。"
 
-#: cgi-bin/admin.c:1484
 msgid "Bad subscription ID"
 msgstr "不正なサブスクリプション ID です。"
 
-#: cups/ppd.c:360
 msgid "Bad value string"
 msgstr "値文字列がありません"
 
-#: cgi-bin/admin.c:3290 cgi-bin/admin.c:3536
 msgid "Banners"
 msgstr "バナー"
 
-#: ppdc/sample.c:287
 msgid "Bond Paper"
 msgstr "ボンド紙"
 
-#: backend/usb-darwin.c:1846
 #, c-format
 msgid "Boolean expected for waiteof option \"%s\"."
 msgstr "論理値は、waiteof オプション \"%s\" であるべきです"
 
-#: filter/pstops.c:2057
 msgid "Buffer overflow detected, aborting."
 msgstr "オーバーフローが検出され、中断しました。"
 
-#: ppdc/sample.c:254
 msgid "CMYK"
 msgstr "CMYK"
 
-#: ppdc/sample.c:363
 msgid "CPCL Label Printer"
 msgstr "CPCL ラベルプリンター"
 
-#: cgi-bin/admin.c:1485 cgi-bin/admin.c:1524 cgi-bin/admin.c:1534
 msgid "Cancel RSS Subscription"
 msgstr "RSS 購読をキャンセル"
 
-#: backend/ipp.c:1921
 msgid "Canceling print job."
 msgstr "プリントジョブをキャンセルしています。"
 
-#: scheduler/ipp.c:2475
 msgid "Cannot share a remote Kerberized printer."
 msgstr "リモートの Kerberos 認証のプリンターを共有できません。"
 
-#: ppdc/sample.c:279
 msgid "Cassette"
 msgstr "カセット"
 
-#: cgi-bin/admin.c:1655 cgi-bin/admin.c:1797 cgi-bin/admin.c:1810
-#: cgi-bin/admin.c:1821
 msgid "Change Settings"
 msgstr "設定の変更"
 
-#: scheduler/ipp.c:2061 scheduler/ipp.c:5634
 #, c-format
 msgid "Character set \"%s\" not supported."
 msgstr "文字セット \"%s\" はサポートされていません。"
 
-#: cgi-bin/classes.c:195 cgi-bin/classes.c:322
 msgid "Classes"
 msgstr "クラス"
 
-#: cgi-bin/printers.c:182
 msgid "Clean Print Heads"
 msgstr "プリントヘッドクリーニング"
 
-#: scheduler/ipp.c:3878
 msgid "Close-Job doesn't support the job-uri attribute."
 msgstr "Close-Job は job-uri 属性をサポートしていません。"
 
-#: ppdc/sample.c:282
 msgid "Color"
 msgstr "カラー"
 
-#: ppdc/sample.c:253
 msgid "Color Mode"
 msgstr "カラーモード"
 
-#: berkeley/lpc.c:204
 msgid ""
 "Commands may be abbreviated.  Commands are:\n"
 "\n"
@@ -3102,88 +2433,67 @@ msgstr ""
 "\n"
 "exit    help    quit    status  ?"
 
-#: cups/snmp.c:1006
 msgid "Community name uses indefinite length"
 msgstr "コミュニティ名の長さが不定"
 
-#: backend/ipp.c:786 backend/lpd.c:871 backend/socket.c:395
 msgid "Connected to printer."
 msgstr "プリンターに接続しました。"
 
-#: backend/ipp.c:691 backend/lpd.c:694 backend/socket.c:314
 msgid "Connecting to printer."
 msgstr "プリンターに接続中。"
 
-#: cups/http-support.c:1272
 msgid "Continue"
 msgstr "継続"
 
-#: ppdc/sample.c:365
 msgid "Continuous"
 msgstr "連続"
 
-#: backend/lpd.c:1020 backend/lpd.c:1152
 msgid "Control file sent successfully."
 msgstr "コントロールファイルが正常に送信されました。"
 
-#: backend/ipp.c:1233 backend/lpd.c:464
 msgid "Copying print data."
 msgstr "印刷データをコピーしています。"
 
-#: cups/http-support.c:1281
 msgid "Created"
 msgstr "ジョブ作成"
 
-#: cups/ppd.c:1113 cups/ppd.c:1153 cups/ppd.c:1398 cups/ppd.c:1501
 msgid "Custom"
 msgstr "カスタム"
 
-#: ppdc/sample.c:359
 msgid "CustominCutInterval"
 msgstr "CustominCutInterval"
 
-#: ppdc/sample.c:357
 msgid "CustominTearInterval"
 msgstr "CustominTearInterval"
 
-#: ppdc/sample.c:343
 msgid "Cut"
 msgstr "カット"
 
-#: ppdc/sample.c:451
 msgid "Cutter"
 msgstr "カッター"
 
-#: ppdc/sample.c:239
 msgid "Dark"
 msgstr "濃い"
 
-#: ppdc/sample.c:235
 msgid "Darkness"
 msgstr "濃さ"
 
-#: backend/lpd.c:1105
 msgid "Data file sent successfully."
 msgstr "データファイルが正常に送信されました"
 
-#: cgi-bin/admin.c:2094 cgi-bin/admin.c:2105 cgi-bin/admin.c:2150
 msgid "Delete Class"
 msgstr "クラスの削除"
 
-#: cgi-bin/admin.c:2179 cgi-bin/admin.c:2190 cgi-bin/admin.c:2235
 msgid "Delete Printer"
 msgstr "プリンターの削除"
 
-#: ppdc/sample.c:281
 msgid "DeskJet Series"
 msgstr "DeskJet シリーズ"
 
-#: scheduler/ipp.c:1346
 #, c-format
 msgid "Destination \"%s\" is not accepting jobs."
 msgstr "宛先 \"%s\" はジョブを受け付けていません。"
 
-#: systemv/lpinfo.c:300
 #, c-format
 msgid ""
 "Device: uri = %s\n"
@@ -3200,92 +2510,73 @@ msgstr ""
 "          device-id = %s\n"
 "          location = %s"
 
-#: ppdc/sample.c:436
 msgid "Direct Thermal Media"
 msgstr "感熱紙"
 
-#: cups/file.c:296
 #, c-format
 msgid "Directory \"%s\" contains a relative path."
 msgstr "ディレクトリー \"%s\" は相対パスを含んでいます。"
 
-#: cups/file.c:268
 #, c-format
 msgid "Directory \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
-msgstr "ディレクトリー \"%s\" は安全でないパーミッションが与えられています (0%o/uid=%d/gid=%d)。"
+msgstr ""
+"ディレクトリー \"%s\" は安全でないパーミッションが与えられています (0%o/uid="
+"%d/gid=%d)。"
 
-#: cups/file.c:285
 #, c-format
 msgid "Directory \"%s\" is a file."
 msgstr "ディレクトリー \"%s\" はファイルです。"
 
-#: cups/file.c:256
 #, c-format
 msgid "Directory \"%s\" not available: %s"
 msgstr "ディレクトリー \"%s\" は利用できません: %s"
 
-#: cups/file.c:241
 #, c-format
 msgid "Directory \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
-msgstr "ディレクトリー \"%s\" のパーミッションは問題ありません (0%o/uid=%d/gid=%d)。"
+msgstr ""
+"ディレクトリー \"%s\" のパーミッションは問題ありません (0%o/uid=%d/gid=%d)。"
 
-#: ppdc/sample.c:345
 msgid "Disabled"
 msgstr "無効"
 
-#: scheduler/ipp.c:6127
 #, c-format
 msgid "Document #%d does not exist in job #%d."
 msgstr "ドキュメント #%d がジョブ #%d に見つかりません。"
 
-#: ppdc/sample.c:275
 msgid "Duplexer"
 msgstr "両面オプション"
 
-#: ppdc/sample.c:229
 msgid "Dymo"
 msgstr "Dymo"
 
-#: ppdc/sample.c:431
 msgid "EPL1 Label Printer"
 msgstr "EPL1 ラベルプリンター"
 
-#: ppdc/sample.c:434
 msgid "EPL2 Label Printer"
 msgstr "EPL2 ラベルプリンター"
 
-#: cgi-bin/admin.c:1849 cgi-bin/admin.c:1861 cgi-bin/admin.c:1915
-#: cgi-bin/admin.c:1922 cgi-bin/admin.c:1957 cgi-bin/admin.c:1970
-#: cgi-bin/admin.c:1994 cgi-bin/admin.c:2067
 msgid "Edit Configuration File"
 msgstr "設定ファイルの編集"
 
-#: cups/adminutil.c:337
 msgid "Empty PPD file."
 msgstr "PPD ファイルが空です。"
 
 #. TRANSLATORS: Banner/cover sheet after the print job.
-#: cgi-bin/admin.c:3561
 msgid "Ending Banner"
 msgstr "終了バナー"
 
-#: ppdc/sample.c:2
 msgid "English"
 msgstr "English"
 
-#: systemv/lppasswd.c:193
 msgid "Enter old password:"
 msgstr "古いパスワードを入力:"
 
-#: systemv/lppasswd.c:224
 msgid "Enter password again:"
 msgstr "パスワードを再度入力:"
 
-#: systemv/lppasswd.c:212
 msgid "Enter password:"
 msgstr "パスワードを入力:"
 
-#: scheduler/client.c:2427
 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 "
@@ -3295,847 +2586,653 @@ msgstr ""
 "root のユーザー名とパスワードを入力してください。Kerberos 認証を使用している"
 "場合、有効な Kerberos チケットがあることを確認してください。"
 
-#: ppdc/sample.c:73
 msgid "Envelope #10 "
 msgstr "封筒 #10"
 
-#: ppdc/sample.c:74
 msgid "Envelope #11"
 msgstr "封筒 #11"
 
-#: ppdc/sample.c:75
 msgid "Envelope #12"
 msgstr "封筒 #12"
 
-#: ppdc/sample.c:76
 msgid "Envelope #14"
 msgstr "封筒 #14"
 
-#: ppdc/sample.c:77
 msgid "Envelope #9"
 msgstr "封筒 #9"
 
-#: ppdc/sample.c:89
 msgid "Envelope B4"
 msgstr "封筒 B4"
 
-#: ppdc/sample.c:90
 msgid "Envelope B5"
 msgstr "封筒 B5"
 
-#: ppdc/sample.c:91
 msgid "Envelope B6"
 msgstr "封筒 B6"
 
-#: ppdc/sample.c:78
 msgid "Envelope C0"
 msgstr "封筒 C0"
 
-#: ppdc/sample.c:79
 msgid "Envelope C1"
 msgstr "封筒 C1"
 
-#: ppdc/sample.c:80
 msgid "Envelope C2"
 msgstr "封筒 C2"
 
-#: ppdc/sample.c:81
 msgid "Envelope C3"
 msgstr "封筒 C3"
 
-#: ppdc/sample.c:67
 msgid "Envelope C4"
 msgstr "封筒 C4"
 
-#: ppdc/sample.c:68
 msgid "Envelope C5"
 msgstr "封筒 C5"
 
-#: ppdc/sample.c:69
 msgid "Envelope C6"
 msgstr "封筒 C6"
 
-#: ppdc/sample.c:82
 msgid "Envelope C65"
 msgstr "封筒 C65"
 
-#: ppdc/sample.c:83
 msgid "Envelope C7"
 msgstr "封筒 C7"
 
-#: ppdc/sample.c:84
 msgid "Envelope Choukei 3"
 msgstr "封筒 長形3号"
 
-#: ppdc/sample.c:85
 msgid "Envelope Choukei 3 Long Edge"
 msgstr "封筒 長形3号 長辺送り"
 
-#: ppdc/sample.c:86
 msgid "Envelope Choukei 4"
 msgstr "封筒 長形4号"
 
-#: ppdc/sample.c:87
 msgid "Envelope Choukei 4 Long Edge"
 msgstr "封筒 長形4号 長辺送り"
 
-#: ppdc/sample.c:70
 msgid "Envelope DL"
 msgstr "封筒 DL"
 
-#: ppdc/sample.c:269
 msgid "Envelope Feed"
 msgstr "封筒フィード"
 
-#: ppdc/sample.c:88
 msgid "Envelope Invite"
 msgstr "招待状封筒"
 
-#: ppdc/sample.c:92
 msgid "Envelope Italian"
 msgstr "イタリア封筒"
 
-#: ppdc/sample.c:93
 msgid "Envelope Kaku2"
 msgstr "封筒 角2"
 
-#: ppdc/sample.c:94
 msgid "Envelope Kaku2 Long Edge"
 msgstr "封筒 角2 長辺送り"
 
-#: ppdc/sample.c:95
 msgid "Envelope Kaku3"
 msgstr "封筒 角3"
 
-#: ppdc/sample.c:96
 msgid "Envelope Kaku3 Long Edge"
 msgstr "封筒 角3 長辺送り"
 
-#: ppdc/sample.c:97
 msgid "Envelope Monarch"
 msgstr "封筒 Monarch"
 
-#: ppdc/sample.c:99
 msgid "Envelope PRC1 "
 msgstr "封筒 PRC1"
 
-#: ppdc/sample.c:100
 msgid "Envelope PRC1 Long Edge"
 msgstr "封筒 PRC1 長辺送り"
 
-#: ppdc/sample.c:117
 msgid "Envelope PRC10"
 msgstr "封筒 PRC10"
 
-#: ppdc/sample.c:118
 msgid "Envelope PRC10 Long Edge"
 msgstr "封筒 PRC10 長辺送り"
 
-#: ppdc/sample.c:101
 msgid "Envelope PRC2"
 msgstr "封筒 PRC2"
 
-#: ppdc/sample.c:102
 msgid "Envelope PRC2 Long Edge"
 msgstr "封筒 PRC2 長辺送り"
 
-#: ppdc/sample.c:103
 msgid "Envelope PRC3"
 msgstr "封筒 PRC3"
 
-#: ppdc/sample.c:104
 msgid "Envelope PRC3 Long Edge"
 msgstr "封筒 PRC3 長辺送り"
 
-#: ppdc/sample.c:105
 msgid "Envelope PRC4"
 msgstr "封筒 PRC4"
 
-#: ppdc/sample.c:106
 msgid "Envelope PRC4 Long Edge"
 msgstr "封筒 PRC4 長辺送り"
 
-#: ppdc/sample.c:108
 msgid "Envelope PRC5 Long Edge"
 msgstr "封筒 PRC5 長辺送り"
 
-#: ppdc/sample.c:107
 msgid "Envelope PRC5PRC5"
 msgstr "封筒 PRC5"
 
-#: ppdc/sample.c:109
 msgid "Envelope PRC6"
 msgstr "封筒 PRC6"
 
-#: ppdc/sample.c:110
 msgid "Envelope PRC6 Long Edge"
 msgstr "封筒 PRC6 長辺送り"
 
-#: ppdc/sample.c:111
 msgid "Envelope PRC7"
 msgstr "封筒 PRC7"
 
-#: ppdc/sample.c:112
 msgid "Envelope PRC7 Long Edge"
 msgstr "封筒 PRC7 長辺送り"
 
-#: ppdc/sample.c:113
 msgid "Envelope PRC8"
 msgstr "封筒 PRC8"
 
-#: ppdc/sample.c:114
 msgid "Envelope PRC8 Long Edge"
 msgstr "封筒 PRC8 長辺送り"
 
-#: ppdc/sample.c:115
 msgid "Envelope PRC9"
 msgstr "封筒 PRC9"
 
-#: ppdc/sample.c:116
 msgid "Envelope PRC9 Long Edge"
 msgstr "封筒 PRC9 長辺送り"
 
-#: ppdc/sample.c:98
 msgid "Envelope Personal"
 msgstr "パーソナル封筒"
 
-#: ppdc/sample.c:119
 msgid "Envelope You4"
 msgstr "封筒 洋形4号"
 
-#: ppdc/sample.c:120
 msgid "Envelope You4 Long Edge"
 msgstr "封筒 洋形4号 長辺送り"
 
-#: ppdc/sample.c:240
 msgid "Epson"
 msgstr "Epson"
 
-#: cgi-bin/admin.c:3604
 msgid "Error Policy"
 msgstr "エラーポリシー"
 
-#: filter/rastertopwg.c:403 filter/rastertopwg.c:418 filter/rastertopwg.c:429
-#: filter/rastertopwg.c:440
 msgid "Error sending raster data."
 msgstr "ラスターデータの送信でエラーが起きました。"
 
-#: systemv/lpinfo.c:103 systemv/lpmove.c:88
 msgid "Error: need hostname after \"-h\" option."
 msgstr "Error: '-h' オプションのあとにはホスト名が必要です。"
 
-#: ppdc/sample.c:355
 msgid "Every 10 Labels"
 msgstr "10 ラベルごと"
 
-#: ppdc/sample.c:347
 msgid "Every 2 Labels"
 msgstr "2 ラベルごと"
 
-#: ppdc/sample.c:348
 msgid "Every 3 Labels"
 msgstr "3 ラベルごと"
 
-#: ppdc/sample.c:349
 msgid "Every 4 Labels"
 msgstr "4 ラベルごと"
 
-#: ppdc/sample.c:350
 msgid "Every 5 Labels"
 msgstr "5 ラベルごと"
 
-#: ppdc/sample.c:351
 msgid "Every 6 Labels"
 msgstr "6 ラベルごと"
 
-#: ppdc/sample.c:352
 msgid "Every 7 Labels"
 msgstr "7 ラベルごと"
 
-#: ppdc/sample.c:353
 msgid "Every 8 Labels"
 msgstr "8 ラベルごと"
 
-#: ppdc/sample.c:354
 msgid "Every 9 Labels"
 msgstr "9 ラベルごと"
 
-#: ppdc/sample.c:346
 msgid "Every Label"
 msgstr "すべてのラベル"
 
-#: ppdc/sample.c:121
 msgid "Executive"
 msgstr "エグゼクティブ"
 
-#: cups/http-support.c:1327
 msgid "Expectation Failed"
 msgstr "予測に失敗しました"
 
-#: cgi-bin/admin.c:2356 cgi-bin/admin.c:2375
 msgid "Export Printers to Samba"
 msgstr "Samba へプリンターをエクスポート"
 
-#: systemv/cupstestdsc.c:172 systemv/cupstestdsc.c:189
-#: systemv/cupstestdsc.c:214 systemv/cupstestdsc.c:231
-#: systemv/cupstestdsc.c:255 systemv/cupstestdsc.c:273
-#: systemv/cupstestdsc.c:302 systemv/cupstestdsc.c:339
-#: systemv/cupstestdsc.c:349 systemv/cupstestdsc.c:359
-#: systemv/cupstestdsc.c:369 systemv/cupstestdsc.c:379
-#: systemv/cupstestdsc.c:387
 msgid "FAIL"
 msgstr "失敗"
 
-#: ppdc/sample.c:122
 msgid "FanFold German"
 msgstr "FanFold German"
 
-#: ppdc/sample.c:123
 msgid "FanFold Legal German"
 msgstr "FanFold Legal German"
 
-#: ppdc/sample.c:124
 msgid "Fanfold US"
 msgstr "Fanfold US"
 
-#: cups/file.c:300
 #, c-format
 msgid "File \"%s\" contains a relative path."
 msgstr "ファイル \"%s\" は相対パスを含んでいます。"
 
-#: cups/file.c:275
 #, c-format
 msgid "File \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
-msgstr "ファイル \"%s\" は安全でないパーミッションが与えられています (0%o/uid=%d/gid=%d)。"
+msgstr ""
+"ファイル \"%s\" は安全でないパーミッションが与えられています (0%o/uid=%d/gid="
+"%d)。"
 
-#: cups/file.c:289
 #, c-format
 msgid "File \"%s\" is a directory."
 msgstr "ファイル \"%s\" はディレクトリーです。"
 
-#: cups/file.c:261
 #, c-format
 msgid "File \"%s\" not available: %s"
 msgstr "ファイル \"%s\" は利用できません: %s"
 
-#: cups/file.c:247
 #, c-format
 msgid "File \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
 msgstr "ファイル \"%s\" のパーミッションは問題ありません (0%o/uid=%d/gid=%d)。"
 
-#: ppdc/sample.c:169
 msgid "File Folder "
 msgstr "ファイルフォルダー"
 
-#: scheduler/ipp.c:2370
 #, c-format
 msgid ""
 "File device URIs have been disabled. To enable, see the FileDevice directive "
 "in \"%s/cupsd.conf\"."
-msgstr "ファイルデバイス URI は無効になっています。有効にするには、\"%s/cupsd.conf\" の FileDevice ディレクティブを参照してください。"
+msgstr ""
+"ファイルデバイス URI は無効になっています。有効にするには、\"%s/cupsd.conf\" "
+"の FileDevice ディレクティブを参照してください。"
 
-#: filter/rastertoepson.c:1117 filter/rastertohp.c:845
-#: filter/rastertolabel.c:1273
 #, c-format
 msgid "Finished page %d."
 msgstr "ページ %d を終了。"
 
-#: ppdc/sample.c:125
 msgid "Folio"
 msgstr "フォリオ"
 
-#: cups/http-support.c:1306
 msgid "Forbidden"
 msgstr "Forbidden"
 
-#: cups/ppd.c:742 cups/ppd.c:1302
 msgid "General"
 msgstr "一般"
 
-#: ppdc/sample.c:259
 msgid "Generic"
 msgstr "汎用"
 
-#: cups/snmp.c:1016
 msgid "Get-Response-PDU uses indefinite length"
 msgstr "Get-Response-PDU は不確定の長さを使用しています"
 
-#: ppdc/sample.c:290
 msgid "Glossy Paper"
 msgstr "光沢紙"
 
-#: scheduler/ipp.c:2952 scheduler/ipp.c:3352 scheduler/ipp.c:3890
-#: scheduler/ipp.c:6056 scheduler/ipp.c:6203 scheduler/ipp.c:7635
-#: scheduler/ipp.c:8753 scheduler/ipp.c:8979 scheduler/ipp.c:9328
-#: scheduler/ipp.c:9931
 msgid "Got a printer-uri attribute but no job-id."
 msgstr "printer-uri 属性を取得しましたが、job-id を取得できませんでした。"
 
-#: ppdc/sample.c:255
 msgid "Grayscale"
 msgstr "グレースケール"
 
-#: ppdc/sample.c:280
 msgid "HP"
 msgstr "HP"
 
-#: ppdc/sample.c:170
 msgid "Hanging Folder"
 msgstr "Hanging Folder"
 
-#: cgi-bin/help.c:143
 msgid "Help file not in index."
 msgstr "ヘルプファイルが索引に含まれていません。"
 
-#: cups/ipp.c:2687 cups/ipp.c:2714 cups/ipp.c:2737
 msgid "IPP 1setOf attribute with incompatible value tags."
 msgstr "IPP の 1setOf 属性が value タグと互換性がありません。"
 
-#: cups/ipp.c:2650
 msgid "IPP attribute has no name."
 msgstr "IPP の属性に名前がありません。"
 
-#: cups/ipp.c:5487
 msgid "IPP attribute is not a member of the message."
 msgstr "IPP の属性がメッセージのメンバーではありません。"
 
-#: cups/ipp.c:3083
 msgid "IPP begCollection value not 0 bytes."
 msgstr "IPP の begCollection は想定された 0 バイトになっていません。"
 
-#: cups/ipp.c:2873
 msgid "IPP boolean value not 1 byte."
 msgstr "IPP の真偽値が想定された 1 バイトになっていません。"
 
-#: cups/ipp.c:2934
 msgid "IPP date value not 11 bytes."
 msgstr "IPP の date 値は想定された 11 バイトになっていません。"
 
-#: cups/ipp.c:3104
 msgid "IPP endCollection value not 0 bytes."
 msgstr "IPP の endCollection は想定された 0 バイトになっていません。"
 
-#: cups/ipp.c:2848
 msgid "IPP enum value not 4 bytes."
 msgstr "IPP の enum 値は想定された 4 バイトになっていません。"
 
-#: cups/ipp.c:2579
 msgid "IPP extension tag larger than 0x7FFFFFFF."
 msgstr "IPP の拡張タグが 0x7FFFFFFF より大きいです。"
 
-#: cups/ipp.c:2845
 msgid "IPP integer value not 4 bytes."
 msgstr "IPP の整数値は想定された 4 バイトになっていません。"
 
-#: cups/ipp.c:3045
 msgid "IPP language length overflows value."
 msgstr "IPP の language length の値がオーバーフローしています。"
 
-#: cups/ipp.c:2764
+msgid "IPP language length too large."
+msgstr ""
+
 msgid "IPP member name is not empty."
 msgstr "IPP のメンバー名が空ではありません。"
 
-#: cups/ipp.c:3122
 msgid "IPP memberName value is empty."
 msgstr "IPP の memberName の値が空です。"
 
-#: cups/ipp.c:2633
+msgid "IPP memberName with no attribute."
+msgstr ""
+
 msgid "IPP name larger than 32767 bytes."
 msgstr "IPP 名が 32767 バイトより大きいです。"
 
-#: cups/ipp.c:3011
 msgid "IPP nameWithLanguage value less than minimum 4 bytes."
 msgstr "IPP の nameWithLanguage が最小値 4 バイト未満です。"
 
-#: cups/ipp.c:2979
+msgid "IPP nameWithLanguage value more than maximum 1090 bytes."
+msgstr ""
+
+msgid "IPP octetString length too large."
+msgstr ""
+
 msgid "IPP rangeOfInteger value not 8 bytes."
 msgstr "IPP の rangeOfInteger は想定された 8 バイトになっていません。"
 
-#: cups/ipp.c:2952
 msgid "IPP resolution value not 9 bytes."
 msgstr "IPP の resolution は想定された 9 バイトになっていません。"
 
-#: cups/ipp.c:3063
 msgid "IPP string length overflows value."
 msgstr "IPP の文字列長の値がオーバーフローしています。"
 
-#: cups/ipp.c:3007
+msgid "IPP string value too large."
+msgstr ""
+
+msgid "IPP text length too large."
+msgstr ""
+
 msgid "IPP textWithLanguage value less than minimum 4 bytes."
 msgstr "IPP の textWithLanguage の値が最小値 4 バイト未満です。"
 
-#: cups/ipp.c:2831
+msgid "IPP textWithLanguage value more than maximum 1090 bytes."
+msgstr ""
+
 msgid "IPP value larger than 32767 bytes."
 msgstr "IPP の値が 32767 バイト以上です。"
 
-#: ppdc/sample.c:1
 msgid "ISOLatin1"
 msgstr "ISOLatin1"
 
-#: cups/ppd.c:353
 msgid "Illegal control character"
 msgstr "不正な制御文字"
 
-#: cups/ppd.c:354
 msgid "Illegal main keyword string"
 msgstr "不正なメインキーワード文字列"
 
-#: cups/ppd.c:355
 msgid "Illegal option keyword string"
 msgstr "不正なオプションキーワード文字列"
 
-#: cups/ppd.c:356
 msgid "Illegal translation string"
 msgstr "不正な翻訳文字列"
 
-#: cups/ppd.c:357
 msgid "Illegal whitespace character"
 msgstr "不正な空白文字"
 
-#: ppdc/sample.c:274
 msgid "Installable Options"
 msgstr "インストール可能オプション"
 
-#: ppdc/sample.c:277
 msgid "Installed"
 msgstr "インストールされています"
 
-#: ppdc/sample.c:293
 msgid "IntelliBar Label Printer"
 msgstr "IntelliBar ラベルプリンター"
 
-#: ppdc/sample.c:292
 msgid "Intellitech"
 msgstr "Intellitech"
 
-#: cups/http-support.c:1333
 msgid "Internal Server Error"
 msgstr "サーバー内部エラー"
 
-#: cups/ppd.c:344
 msgid "Internal error"
 msgstr "内部エラー"
 
-#: ppdc/sample.c:167
 msgid "Internet Postage 2-Part"
 msgstr "Internet Postage 2-Part"
 
-#: ppdc/sample.c:168
 msgid "Internet Postage 3-Part"
 msgstr "Internet Postage 3-Part"
 
-#: backend/ipp.c:307
 msgid "Internet Printing Protocol"
 msgstr "インターネット印刷プロトコル"
 
-#: cups/dest-options.c:839
 msgid "Invalid media size."
 msgstr "無効なメディアサイズです。"
 
-#: filter/commandtops.c:125
 #, c-format
 msgid "Invalid printer command \"%s\"."
 msgstr "無効なプリンターコマンドです。 \"%s\""
 
-#: cups/ppd.c:1420
 msgid "JCL"
 msgstr "JCL"
 
-#: ppdc/sample.c:53
 msgid "JIS B0"
 msgstr "JIS B0"
 
-#: ppdc/sample.c:55
 msgid "JIS B1"
 msgstr "JIS B1"
 
-#: ppdc/sample.c:54
 msgid "JIS B10"
 msgstr "JIS B10"
 
-#: ppdc/sample.c:56
 msgid "JIS B2"
 msgstr "JIS B2"
 
-#: ppdc/sample.c:57
 msgid "JIS B3"
 msgstr "JIS B3"
 
-#: ppdc/sample.c:58
 msgid "JIS B4"
 msgstr "JIS B4"
 
-#: ppdc/sample.c:59
 msgid "JIS B4 Long Edge"
 msgstr "JIS B4 長辺送り"
 
-#: ppdc/sample.c:60
 msgid "JIS B5"
 msgstr "JIS B5"
 
-#: ppdc/sample.c:61
 msgid "JIS B5 Long Edge"
 msgstr "JIS B5 長辺送り"
 
-#: ppdc/sample.c:62
 msgid "JIS B6"
 msgstr "JIS B6"
 
-#: ppdc/sample.c:63
 msgid "JIS B6 Long Edge"
 msgstr "JIS B6 長辺送り"
 
-#: ppdc/sample.c:64
 msgid "JIS B7"
 msgstr "JIS B7"
 
-#: ppdc/sample.c:65
 msgid "JIS B8"
 msgstr "JIS B8"
 
-#: ppdc/sample.c:66
 msgid "JIS B9"
 msgstr "JIS B9"
 
-#: scheduler/ipp.c:9051
 #, c-format
 msgid "Job #%d cannot be restarted - no files."
 msgstr "ジョブ番号 %d を再開できません - ファイルが見つかりません。"
 
-#: scheduler/ipp.c:2992 scheduler/ipp.c:3222 scheduler/ipp.c:3277
-#: scheduler/ipp.c:3454 scheduler/ipp.c:3900 scheduler/ipp.c:5720
-#: scheduler/ipp.c:6096 scheduler/ipp.c:6243 scheduler/ipp.c:6543
-#: scheduler/ipp.c:7482 scheduler/ipp.c:7504 scheduler/ipp.c:7676
-#: scheduler/ipp.c:7901 scheduler/ipp.c:7944 scheduler/ipp.c:8793
-#: scheduler/ipp.c:9019 scheduler/ipp.c:9368 scheduler/ipp.c:9971
 #, c-format
 msgid "Job #%d does not exist."
 msgstr "ジョブ番号 %d は存在しません。"
 
-#: scheduler/ipp.c:3486
 #, c-format
 msgid "Job #%d is already aborted - can't cancel."
 msgstr "ジョブ番号 %d はすでに中断されています - キャンセルできません。"
 
-#: scheduler/ipp.c:3480
 #, c-format
 msgid "Job #%d is already canceled - can't cancel."
 msgstr "ジョブ番号 %d はすでにキャンセルされています - キャンセルできません。"
 
-#: scheduler/ipp.c:3492
 #, c-format
 msgid "Job #%d is already completed - can't cancel."
 msgstr "ジョブ番号 %d はすでに完了しています - キャンセルできません。"
 
-#: scheduler/ipp.c:7702 scheduler/ipp.c:7986 scheduler/ipp.c:9986
 #, c-format
 msgid "Job #%d is finished and cannot be altered."
 msgstr "ジョブ番号 %d はすでに終了し、変更できません。"
 
-#: scheduler/ipp.c:9033
 #, c-format
 msgid "Job #%d is not complete."
 msgstr "ジョブ番号 %d は完了していません。"
 
-#: scheduler/ipp.c:3007
 #, c-format
 msgid "Job #%d is not held for authentication."
 msgstr "ジョブ番号 %d は認証のために保留されていません。"
 
-#: scheduler/ipp.c:8807
 #, c-format
 msgid "Job #%d is not held."
 msgstr "ジョブ番号 %d は保留されていません。"
 
-#: cgi-bin/ipp-var.c:1055
 msgid "Job Completed"
 msgstr "ジョブ完了"
 
-#: cgi-bin/ipp-var.c:1053
 msgid "Job Created"
 msgstr "ジョブ作成"
 
-#: cgi-bin/ipp-var.c:1059
 msgid "Job Options Changed"
 msgstr "ジョブオプション変更"
 
-#: cgi-bin/ipp-var.c:1057
 msgid "Job Stopped"
 msgstr "ジョブ中止"
 
-#: scheduler/ipp.c:10068
 msgid "Job is completed and cannot be changed."
 msgstr "ジョブは完了し変更できません。"
 
-#: cgi-bin/jobs.c:198
 msgid "Job operation failed"
 msgstr "ジョブ操作失敗"
 
-#: scheduler/ipp.c:10104 scheduler/ipp.c:10123 scheduler/ipp.c:10134
 msgid "Job state cannot be changed."
 msgstr "ジョブの状態を変更できません。"
 
-#: scheduler/ipp.c:8899
 msgid "Job subscriptions cannot be renewed."
 msgstr "ジョブサブスクリプションを更新できません。"
 
-#: cgi-bin/jobs.c:103 cgi-bin/jobs.c:114 cgi-bin/jobs.c:195
 msgid "Jobs"
 msgstr "ジョブ"
 
-#: backend/lpd.c:185
 msgid "LPD/LPR Host or Printer"
 msgstr "LPD/LPR ホストまたはプリンター"
 
-#: ppdc/sample.c:230
 msgid "Label Printer"
 msgstr "ラベルプリンター"
 
-#: ppdc/sample.c:446
 msgid "Label Top"
 msgstr "ラベルトップ"
 
-#: scheduler/ipp.c:2070 scheduler/ipp.c:5643
 #, c-format
 msgid "Language \"%s\" not supported."
 msgstr "言語 \"%s\" はサポートされていません。"
 
-#: ppdc/sample.c:164
 msgid "Large Address"
 msgstr "ラージアドレス"
 
-#: ppdc/sample.c:291
 msgid "LaserJet Series PCL 4/5"
 msgstr "LaserJet Series PCL 4/5"
 
-#: ppdc/sample.c:43
 msgid "Letter Oversize"
 msgstr "US レター (特大)"
 
-#: ppdc/sample.c:44
 msgid "Letter Oversize Long Edge"
 msgstr "US レター (特大) 長辺送り"
 
-#: ppdc/sample.c:236
 msgid "Light"
 msgstr "薄い"
 
-#: cups/ppd.c:352
 msgid "Line longer than the maximum allowed (255 characters)"
 msgstr "1 行が最大値 (255 文字) を超えています"
 
-#: cgi-bin/admin.c:2393
 msgid "List Available Printers"
 msgstr "使用可能なプリンターをリスト化"
 
-#: ppdc/sample.c:272
 msgid "Long-Edge (Portrait)"
 msgstr "長辺給紙 (縦向き)"
 
-#: cups/http-support.c:1558
 msgid "Looking for printer."
 msgstr "プリンターを探しています。"
 
-#: ppdc/sample.c:268
 msgid "Manual Feed"
 msgstr "手差し"
 
-#: cups/ppd.c:789 cups/ppd.c:1357
 msgid "Media Size"
 msgstr "用紙サイズ"
 
-#: cups/ppd.c:793 cups/ppd.c:1361 ppdc/sample.c:262
 msgid "Media Source"
 msgstr "給紙"
 
-#: ppdc/sample.c:364
 msgid "Media Tracking"
 msgstr "用紙の経路"
 
-#: cups/ppd.c:791 cups/ppd.c:1359 ppdc/sample.c:285
 msgid "Media Type"
 msgstr "用紙種類"
 
-#: ppdc/sample.c:237
 msgid "Medium"
 msgstr "紙質"
 
-#: cups/ppd.c:341
 msgid "Memory allocation error"
 msgstr "メモリー割り当てエラー"
 
-#: cups/ppd.c:361
 msgid "Missing CloseGroup"
 msgstr "CloseGroup がありません"
 
-#: cups/ppd.c:342
 msgid "Missing PPD-Adobe-4.x header"
 msgstr "PPD-Adobe-4.x ヘッダーがありません"
 
-#: cups/ppd.c:351
 msgid "Missing asterisk in column 1"
 msgstr "1 列目にアスタリスクがありません"
 
-#: scheduler/ipp.c:6119
 msgid "Missing document-number attribute."
 msgstr "document-number 属性がありません。"
 
-#: cups/adminutil.c:273
 #, c-format
 msgid "Missing double quote on line %d."
 msgstr "%d 行に二重引用符がありません。"
 
-#: cgi-bin/admin.c:736 cgi-bin/admin.c:2106 cgi-bin/admin.c:2191
-#: cgi-bin/admin.c:2785 cgi-bin/admin.c:3039 cgi-bin/admin.c:3150
-#: cgi-bin/admin.c:3860
 msgid "Missing form variable"
 msgstr "form 変数がありません。"
 
-#: scheduler/ipp.c:9422
 msgid "Missing last-document attribute in request."
 msgstr "リクエストに last-document 属性がありません。"
 
-#: cups/pwg-media.c:535
 msgid "Missing media or media-col."
 msgstr "media または media-col がありません。"
 
-#: cups/pwg-media.c:454
 msgid "Missing media-size in media-col."
 msgstr "media-col に media-size がありません。"
 
-#: scheduler/ipp.c:6673
 msgid "Missing notify-subscription-ids attribute."
 msgstr "notify-subscription-ids 属性がありません。"
 
-#: cups/ppd.c:359
 msgid "Missing option keyword"
 msgstr "オプションキーワードがありません"
 
-#: scheduler/ipp.c:3133 scheduler/ipp.c:3158
 msgid "Missing requesting-user-name attribute."
 msgstr "requesting-user-name 属性が設定されていません。"
 
-#: scheduler/ipp.c:461
 msgid "Missing required attributes."
 msgstr "必須の属性が設定されていません。"
 
-#: cups/adminutil.c:254
 #, c-format
 msgid "Missing value on line %d."
 msgstr "%d 行に値がありません。"
 
-#: cups/ppd.c:343
 msgid "Missing value string"
 msgstr "値文字列がありません"
 
-#: cups/pwg-media.c:442
 msgid "Missing x-dimension in media-size."
 msgstr "media-size に x-dimension がありません。"
 
-#: cups/pwg-media.c:448
 msgid "Missing y-dimension in media-size."
 msgstr "media-size に y-dimension がありません。"
 
-#: systemv/lpinfo.c:470
 #, c-format
 msgid ""
 "Model:  name = %s\n"
@@ -4148,882 +3245,669 @@ msgstr ""
 "        プリンタードライバー = %s\n"
 "        デバイス ID = %s"
 
-#: cgi-bin/admin.c:570
 msgid "Modify Class"
 msgstr "クラスの変更"
 
-#: cgi-bin/admin.c:882
 msgid "Modify Printer"
 msgstr "プリンターの変更"
 
-#: cgi-bin/ipp-var.c:425 cgi-bin/ipp-var.c:516
 msgid "Move All Jobs"
 msgstr "すべてのジョブの移動"
 
-#: cgi-bin/ipp-var.c:364 cgi-bin/ipp-var.c:423 cgi-bin/ipp-var.c:514
 msgid "Move Job"
 msgstr "ジョブの移動"
 
-#: cups/http-support.c:1290
 msgid "Moved Permanently"
 msgstr "別の場所へ移動しました"
 
-#: cups/ppd.c:340
 msgid "NULL PPD file pointer"
 msgstr "PPD ファイルポインターが NULL です"
 
-#: cups/snmp.c:1053
 msgid "Name OID uses indefinite length"
 msgstr "OID 名は限定的な長さを使用します"
 
-#: scheduler/ipp.c:1142
 msgid "Nested classes are not allowed."
 msgstr "入れ子になったクラスは許可されていません。"
 
-#: ppdc/sample.c:430
 msgid "Never"
 msgstr "Never"
 
-#: ppdc/sample.c:256
 msgid "New Stylus Color Series"
 msgstr "New Stylus Color シリーズ"
 
-#: ppdc/sample.c:258
 msgid "New Stylus Photo Series"
 msgstr "New Stylus Photo シリーズ"
 
-#: cups/ppd.c:1949
 msgid "No"
 msgstr "いいえ"
 
-#: cups/http-support.c:1287
 msgid "No Content"
 msgstr "中身がありません"
 
-#: cups/util.c:1298
 msgid "No PPD name"
 msgstr "PPD の名前がありません"
 
-#: cups/snmp.c:1047
 msgid "No VarBind SEQUENCE"
 msgstr "VarBind SEQUENCE がありません"
 
-#: cups/adminutil.c:788
 msgid "No Windows printer drivers are installed."
 msgstr "Windows プリンタードライバーがインストールされていません。"
 
-#: cups/request.c:566 cups/request.c:908
 msgid "No active connection"
 msgstr "アクティブな接続はありません"
 
-#: scheduler/ipp.c:3403
 #, c-format
 msgid "No active jobs on %s."
 msgstr "%s にはアクティブなジョブはありません。"
 
-#: scheduler/ipp.c:302
 msgid "No attributes in request."
 msgstr "リクエストに属性がありません。"
 
-#: scheduler/ipp.c:3034
 msgid "No authentication information provided."
 msgstr "認証情報が提供されていません。"
 
-#: cups/snmp.c:1004
 msgid "No community name"
 msgstr "コミュニティ名がありません"
 
-#: scheduler/ipp.c:5919
 msgid "No default printer."
 msgstr "デフォルトのプリンターはありません"
 
-#: cgi-bin/ipp-var.c:436 scheduler/ipp.c:7248
 msgid "No destinations added."
 msgstr "追加された宛先はありません"
 
-#: backend/usb.c:200
 msgid "No device URI found in argv[0] or in DEVICE_URI environment variable."
-msgstr "ERROR: argv[0] または 環境変数 DEVICE_URI にデバイス URI が見つかりません。"
+msgstr ""
+"ERROR: argv[0] または 環境変数 DEVICE_URI にデバイス URI が見つかりません。"
 
-#: cups/snmp.c:1034
 msgid "No error-index"
 msgstr "エラーインデックスがありません"
 
-#: cups/snmp.c:1026
 msgid "No error-status"
 msgstr "エラーステータスがありません"
 
-#: scheduler/ipp.c:8190 scheduler/ipp.c:9436
 msgid "No file in print request."
 msgstr "印刷リクエストにファイルがありません。"
 
-#: cups/util.c:923
 msgid "No modification time"
 msgstr "変更時刻がありません。"
 
-#: cups/snmp.c:1051
 msgid "No name OID"
 msgstr "OID 名がありません"
 
-#: filter/rastertoepson.c:1147 filter/rastertohp.c:876
-#: filter/rastertolabel.c:1302
 msgid "No pages were found."
 msgstr "ERROR: ページが見つかりません。"
 
-#: cups/util.c:917
 msgid "No printer name"
 msgstr "プリンター名がありません。"
 
-#: cups/util.c:1801
 msgid "No printer-uri found"
 msgstr "プリンター URI が見つかりません。"
 
-#: cups/util.c:1786
 msgid "No printer-uri found for class"
 msgstr "クラスのプリンター URI が見つかりません。"
 
-#: scheduler/ipp.c:6322
 msgid "No printer-uri in request."
 msgstr "プリンター URI のリクエストがありません。"
 
-#: cups/snmp.c:1018
 msgid "No request-id"
 msgstr "リクエストID がありません"
 
-#: scheduler/ipp.c:5528
 msgid "No subscription attributes in request."
 msgstr "リクエストにサブスクリプション属性がありません。"
 
-#: scheduler/ipp.c:7575
 msgid "No subscriptions found."
 msgstr "サブスクリプションが見つかりません。"
 
-#: cups/snmp.c:1042
 msgid "No variable-bindings SEQUENCE"
 msgstr "variable-bindings SEQUENCE がありません"
 
-#: cups/snmp.c:997
 msgid "No version number"
 msgstr "バージョン名がありません"
 
-#: ppdc/sample.c:367
 msgid "Non-continuous (Mark sensing)"
 msgstr "非連続です (Mark sensing)"
 
-#: ppdc/sample.c:366
 msgid "Non-continuous (Web sensing)"
 msgstr "非連続です (Web sensing)"
 
-#: ppdc/sample.c:238
 msgid "Normal"
 msgstr "標準"
 
-#: cups/http-support.c:1309
 msgid "Not Found"
 msgstr "見つかりません"
 
-#: cups/http-support.c:1321
 msgid "Not Implemented"
 msgstr "実装されていません"
 
-#: ppdc/sample.c:276
 msgid "Not Installed"
 msgstr "インストールされていません"
 
-#: cups/http-support.c:1296
 msgid "Not Modified"
 msgstr "変更されていません"
 
-#: cups/http-support.c:1324
 msgid "Not Supported"
 msgstr "サポートされていません"
 
-#: scheduler/ipp.c:1518 scheduler/ipp.c:10666
 msgid "Not allowed to print."
 msgstr "印刷が許可されていません。"
 
-#: ppdc/sample.c:146
 msgid "Note"
 msgstr "注意"
 
-#: systemv/cupstestdsc.c:433
 msgid ""
 "Note: this program only validates the DSC comments, not the PostScript "
 "itself."
-msgstr "注意: このプログラムは DSC コメントを検証するだけで、PostScript 自身を検証するものではありません。"
+msgstr ""
+"注意: このプログラムは DSC コメントを検証するだけで、PostScript 自身を検証す"
+"るものではありません。"
 
-#: cups/http-support.c:1278 cups/ppd.c:338
 msgid "OK"
 msgstr "OK"
 
-#: ppdc/sample.c:271
 msgid "Off (1-Sided)"
 msgstr "Off (片面)"
 
-#: ppdc/sample.c:361
 msgid "Oki"
 msgstr "Oki"
 
-#: cgi-bin/help.c:91 cgi-bin/help.c:132 cgi-bin/help.c:142 cgi-bin/help.c:172
 msgid "Online Help"
 msgstr "オンラインヘルプ"
 
-#: cups/adminutil.c:955
 #, c-format
 msgid "Open of %s failed: %s"
 msgstr "%s のオープンに失敗しました: %s"
 
-#: cups/ppd.c:346
 msgid "OpenGroup without a CloseGroup first"
 msgstr "OpenGroup の前にまず CloseGroup が必要です"
 
-#: cups/ppd.c:348
 msgid "OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first"
 msgstr "OpenUI/JCLOpenUI の前にまず CloseUI/JCLCloseUI が必要です"
 
-#: cgi-bin/admin.c:3631
 msgid "Operation Policy"
 msgstr "操作ポリシー"
 
-#: filter/pstops.c:2205
 #, c-format
 msgid "Option \"%s\" cannot be included via %%%%IncludeFeature."
 msgstr "オプション \"%s\" は %%%%IncludeFeature 経由で含めることはできません。"
 
-#: cgi-bin/admin.c:3281 cgi-bin/admin.c:3365
 msgid "Options Installed"
 msgstr "インストールされたオプション"
 
-#: scheduler/cupsfilter.c:1430 scheduler/main.c:2018 systemv/cupsaddsmb.c:284
-#: systemv/cupsctl.c:203 systemv/cupstestdsc.c:429 systemv/cupstestppd.c:3797
-#: test/ipptool.c:4403 ppdc/ppdc.cxx:437 ppdc/ppdhtml.cxx:174
-#: ppdc/ppdi.cxx:130 ppdc/ppdmerge.cxx:369 ppdc/ppdpo.cxx:254
 msgid "Options:"
 msgstr "オプション:"
 
-#: cups/ppd-cache.c:156
 msgid "Out of date PPD cache file."
 msgstr "PPD キャッシュファイルが古すぎます。"
 
-#: cups/ppd-cache.c:1381
 msgid "Out of memory."
 msgstr "メモリーが足りません。"
 
-#: cups/ppd.c:795 cups/ppd.c:1363
 msgid "Output Mode"
 msgstr "出力モード"
 
-#: systemv/lpstat.c:1191 systemv/lpstat.c:1195
 #, c-format
 msgid "Output for printer %s is sent to %s"
 msgstr "プリンター %s の出力は %s に送られます"
 
-#: systemv/lpstat.c:1185
 #, c-format
 msgid "Output for printer %s is sent to remote printer %s on %s"
 msgstr "プリンター %s の出力は、リモートプリンター %s (%s 上) に送られます"
 
-#: systemv/lpstat.c:1209 systemv/lpstat.c:1213
 #, c-format
 msgid "Output for printer %s/%s is sent to %s"
 msgstr "プリンター %s/%s の出力は %s に送られます"
 
-#: systemv/lpstat.c:1203
 #, c-format
 msgid "Output for printer %s/%s is sent to remote printer %s on %s"
 msgstr "プリンター %s/%s の出力は、リモートプリンター %s (%s 上) に送られます"
 
-#: systemv/cupstestdsc.c:399
 msgid "PASS"
 msgstr "合格"
 
-#: ppdc/sample.c:260
 msgid "PCL Laser Printer"
 msgstr "PCL レーザープリンター"
 
-#: ppdc/sample.c:149
 msgid "PRC16K"
 msgstr "PRC16K"
 
-#: ppdc/sample.c:150
 msgid "PRC16K Long Edge"
 msgstr "PRC16K 長辺送り"
 
-#: ppdc/sample.c:151
 msgid "PRC32K"
 msgstr "PRC32K"
 
-#: ppdc/sample.c:154
 msgid "PRC32K Long Edge"
 msgstr "PRC32K 長辺送り"
 
-#: ppdc/sample.c:152
 msgid "PRC32K Oversize"
 msgstr "PRC32K (特大)"
 
-#: ppdc/sample.c:153
 msgid "PRC32K Oversize Long Edge"
 msgstr "PRC32K (特大) 長辺送り"
 
-#: cups/snmp.c:1014
 msgid "Packet does not contain a Get-Response-PDU"
 msgstr "パケットが Get-Response-PDU を含んでいません"
 
-#: cups/snmp.c:993
 msgid "Packet does not start with SEQUENCE"
 msgstr "パケットが SEQUENCE から始まりません"
 
-#: ppdc/sample.c:360
 msgid "ParamCustominCutInterval"
 msgstr "ParamCustominCutInterval"
 
-#: ppdc/sample.c:358
 msgid "ParamCustominTearInterval"
 msgstr "ParamCustominTearInterval"
 
-#: cups/auth.c:199 cups/auth.c:367
 #, c-format
 msgid "Password for %s on %s? "
 msgstr "%s のパスワード (%s 上)? "
 
-#: systemv/cupsaddsmb.c:252
 #, c-format
 msgid "Password for %s required to access %s via SAMBA: "
 msgstr "%s のパスワード (SAMBA 経由で %s にアクセスするのに必要):"
 
-#: cgi-bin/classes.c:167
 msgid "Pause Class"
 msgstr "クラスの休止"
 
-#: cgi-bin/printers.c:170
 msgid "Pause Printer"
 msgstr "プリンターの休止"
 
-#: ppdc/sample.c:448
 msgid "Peel-Off"
 msgstr "Peel-Off"
 
-#: ppdc/sample.c:160
 msgid "Photo"
 msgstr "写真"
 
-#: ppdc/sample.c:161
 msgid "Photo Labels"
 msgstr "写真ラベル"
 
-#: ppdc/sample.c:286
 msgid "Plain Paper"
 msgstr "普通紙"
 
-#: cgi-bin/admin.c:3299 cgi-bin/admin.c:3580
 msgid "Policies"
 msgstr "ポリシー"
 
-#: cgi-bin/admin.c:3306 cgi-bin/admin.c:3649 cgi-bin/admin.c:3662
 msgid "Port Monitor"
 msgstr "ポートモニター"
 
-#: ppdc/sample.c:278
 msgid "PostScript Printer"
 msgstr "PostScript プリンター"
 
-#: ppdc/sample.c:147
 msgid "Postcard"
 msgstr "ハガキ"
 
-#: ppdc/sample.c:71
 msgid "Postcard Double "
 msgstr "往復ハガキ"
 
-#: ppdc/sample.c:72
 msgid "Postcard Double Long Edge"
 msgstr "往復ハガキ 長辺送り"
 
-#: ppdc/sample.c:148
 msgid "Postcard Long Edge"
 msgstr "ハガキ 長辺送り"
 
-#: ppdc/sample.c:295
+msgid "Preparing to print."
+msgstr ""
+
 msgid "Print Density"
 msgstr "印刷密度"
 
-#: cups/notify.c:82
 msgid "Print Job:"
 msgstr "ジョブの印刷:"
 
-#: ppdc/sample.c:340
 msgid "Print Mode"
 msgstr "印刷モード"
 
-#: ppdc/sample.c:383
 msgid "Print Rate"
 msgstr "印刷レート"
 
-#: cgi-bin/printers.c:179
 msgid "Print Self-Test Page"
 msgstr "自己テストページの印刷"
 
-#: ppdc/sample.c:327
 msgid "Print Speed"
 msgstr "印刷速度"
 
-#: cgi-bin/ipp-var.c:792
 msgid "Print Test Page"
 msgstr "テストページの印刷"
 
-#: ppdc/sample.c:356
 msgid "Print and Cut"
 msgstr "プリントしてカット"
 
-#: ppdc/sample.c:344
 msgid "Print and Tear"
 msgstr "プリントして切り取る"
 
-#: backend/ipp.c:1537
-#, c-format
-msgid "Print file accepted - job ID %d."
-msgstr "プリントファイルを受け付けました - ジョブ ID %d。"
-
-#: backend/ipp.c:1527
-msgid "Print file accepted - job ID unknown."
-msgstr "NOTICE: プリントファイルを受け付けました - ジョブ ID 不明。"
-
-#: backend/socket.c:424 backend/usb-unix.c:191
 msgid "Print file sent."
 msgstr "プリントファイルが送られました。"
 
-#: backend/ipp.c:1488
-msgid "Print file was not accepted."
-msgstr "プリントファイルが受け付けられませんでした。"
-
-#: backend/ipp.c:1895
 msgid "Print job canceled at printer."
 msgstr "印刷ジョブはプリンターでキャンセルされました。"
 
-#: backend/ipp.c:1890
 msgid "Print job too large."
 msgstr "印刷ジョブが大きすぎます。"
 
-#: cgi-bin/ipp-var.c:1047
+msgid "Print job was not accepted."
+msgstr ""
+
 msgid "Printer Added"
 msgstr "追加されたプリンター"
 
-#: ppdc/sample.c:263
 msgid "Printer Default"
 msgstr "デフォルトのプリンター"
 
-#: cgi-bin/ipp-var.c:1051
 msgid "Printer Deleted"
 msgstr "削除されたプリンター"
 
-#: cgi-bin/ipp-var.c:1049
 msgid "Printer Modified"
 msgstr "変更されたプリンター"
 
-#: cgi-bin/ipp-var.c:1045
 msgid "Printer Paused"
 msgstr "プリンターの休止"
 
-#: ppdc/sample.c:294
 msgid "Printer Settings"
 msgstr "プリンター設定"
 
-#: backend/ipp.c:1893
 msgid "Printer cannot print supplied content."
 msgstr "プリンターは受信した内容を印刷できませんでした。"
 
-#: cups/notify.c:126
 msgid "Printer:"
 msgstr "プリンター:"
 
-#: cgi-bin/printers.c:204 cgi-bin/printers.c:332
 msgid "Printers"
 msgstr "プリンター"
 
-#: filter/rastertoepson.c:1093 filter/rastertohp.c:817
-#: filter/rastertolabel.c:1249
 #, c-format
 msgid "Printing page %d, %d%% complete."
 msgstr "ページ %d を印刷中、%d%% 完了しました。"
 
-#: cgi-bin/classes.c:173 cgi-bin/printers.c:176
 msgid "Purge Jobs"
 msgstr "ジョブの削除"
 
-#: ppdc/sample.c:155
 msgid "Quarto"
 msgstr "Quarto"
 
-#: scheduler/ipp.c:1513 scheduler/ipp.c:10661
 msgid "Quota limit reached."
 msgstr "クォータの制限に達しました。"
 
-#: berkeley/lpq.c:515
 msgid "Rank    Owner   Job     File(s)                         Total Size"
 msgstr "ランク  所有者  ジョブ  ファイル                        合計サイズ"
 
 #. TRANSLATORS: Pri is job priority.
-#: berkeley/lpq.c:511
 msgid ""
 "Rank   Owner      Pri  Job        Files                       Total Size"
-msgstr "ランク 所有者     優先 ジョブ     ファイル                    合計サイズ"
+msgstr ""
+"ランク 所有者     優先 ジョブ     ファイル                    合計サイズ"
 
-#: cgi-bin/classes.c:171 cgi-bin/printers.c:174
 msgid "Reject Jobs"
 msgstr "ジョブの拒否"
 
-#: backend/lpd.c:1016 backend/lpd.c:1148
 #, c-format
 msgid "Remote host did not accept control file (%d)."
 msgstr "リモートホストがコントロールファイルを受け付けませんでした (%d)。"
 
-#: backend/lpd.c:1101
 #, c-format
 msgid "Remote host did not accept data file (%d)."
 msgstr "リモートホストがデータファイルを受け付けませんでした (%d)。"
 
-#: ppdc/sample.c:428
 msgid "Reprint After Error"
 msgstr "エラー後の再印刷"
 
-#: cups/http-support.c:1312
 msgid "Request Entity Too Large"
 msgstr "要求するエンティティが大きすぎます"
 
-#: cups/ppd.c:797 cups/ppd.c:1365 ppdc/sample.c:231
 msgid "Resolution"
 msgstr "解像度"
 
-#: cgi-bin/classes.c:165
 msgid "Resume Class"
 msgstr "クラスを再開する"
 
-#: cgi-bin/printers.c:167
 msgid "Resume Printer"
 msgstr "プリンターを再開する"
 
-#: ppdc/sample.c:165
 msgid "Return Address"
 msgstr "返信用ラベル"
 
-#: ppdc/sample.c:449
 msgid "Rewind"
 msgstr "巻き取り"
 
-#: cups/adminutil.c:2052
 #, c-format
 msgid "Running command: %s %s -N -A %s -c '%s'"
 msgstr "コマンドを実行中: %s %s -N -A %s -c '%s'"
 
-#: cups/snmp.c:995
 msgid "SEQUENCE uses indefinite length"
 msgstr "SEQUENCE は不定長を使用しています"
 
-#: cups/http-support.c:1336
 msgid "SSL/TLS Negotiation Error"
 msgstr "SSL/TLS のネゴシエーションエラー"
 
-#: cups/http-support.c:1293
 msgid "See Other"
 msgstr "残りを見てください"
 
-#: backend/usb-darwin.c:543 backend/usb-libusb.c:273
 msgid "Sending data to printer."
 msgstr "データをプリンターに送信しています。"
 
-#: cgi-bin/ipp-var.c:1061
 msgid "Server Restarted"
 msgstr "再起動されたサーバー"
 
-#: cgi-bin/ipp-var.c:1067
 msgid "Server Security Auditing"
 msgstr "サーバーのセキュリティー監査"
 
-#: cgi-bin/ipp-var.c:1063
 msgid "Server Started"
 msgstr "開始されたサーバー"
 
-#: cgi-bin/ipp-var.c:1065
 msgid "Server Stopped"
 msgstr "停止されたサーバー"
 
-#: cups/http-support.c:1330
 msgid "Service Unavailable"
 msgstr "利用できないサービス"
 
-#: cgi-bin/admin.c:2786 cgi-bin/admin.c:2832 cgi-bin/admin.c:2989
-#: cgi-bin/admin.c:3008
 msgid "Set Allowed Users"
 msgstr "許可するユーザーの設定"
 
-#: cgi-bin/admin.c:3035
 msgid "Set As Server Default"
 msgstr "サーバーのデフォルトに設定"
 
-#: cgi-bin/admin.c:3135
 msgid "Set Class Options"
 msgstr "クラスオプションの設定"
 
-#: cgi-bin/admin.c:3135 cgi-bin/admin.c:3309 cgi-bin/admin.c:3691
 msgid "Set Printer Options"
 msgstr "プリンターオプションの設定"
 
-#: cgi-bin/admin.c:3861 cgi-bin/admin.c:3905 cgi-bin/admin.c:3923
 msgid "Set Publishing"
 msgstr "公開の設定"
 
-#: ppdc/sample.c:166
 msgid "Shipping Address"
 msgstr "発送先ラベル"
 
-#: ppdc/sample.c:273
 msgid "Short-Edge (Landscape)"
 msgstr "短辺 (横原稿)"
 
-#: ppdc/sample.c:288
 msgid "Special Paper"
 msgstr "特殊紙"
 
-#: backend/lpd.c:1057
 #, c-format
 msgid "Spooling job, %.0f%% complete."
 msgstr "ジョブをスプール中、%.0f%% 完了しました。"
 
-#: ppdc/sample.c:341
 msgid "Standard"
 msgstr "標準"
 
 #. TRANSLATORS: Banner/cover sheet before the print job.
-#: cgi-bin/admin.c:3552
 msgid "Starting Banner"
 msgstr "開始バナー"
 
-#: filter/rastertoepson.c:1069 filter/rastertohp.c:793
-#: filter/rastertolabel.c:1225
 #, c-format
 msgid "Starting page %d."
 msgstr "ページ %d を開始しています。"
 
-#: ppdc/sample.c:156
 msgid "Statement"
 msgstr "記述"
 
-#: ppdc/sample.c:251
 msgid "Stylus Color Series"
 msgstr "Stylus Color シリーズ"
 
-#: ppdc/sample.c:257
 msgid "Stylus Photo Series"
 msgstr "Stylus Photo シリーズ"
 
-#: scheduler/ipp.c:3549 scheduler/ipp.c:6689 scheduler/ipp.c:7388
-#: scheduler/ipp.c:8887
 #, c-format
 msgid "Subscription #%d does not exist."
 msgstr "サブスクリプション番号 %d は存在しません。"
 
-#: ppdc/sample.c:157
 msgid "Super A"
 msgstr "スーパー A"
 
-#: ppdc/sample.c:158
 msgid "Super B"
 msgstr "スーパー B"
 
-#: ppdc/sample.c:162
 msgid "Super B/A3"
 msgstr "スーパー B/A3"
 
-#: cups/http-support.c:1275
 msgid "Switching Protocols"
 msgstr "プロトコルの変更"
 
-#: ppdc/sample.c:159
 msgid "Tabloid"
 msgstr "タブロイド"
 
-#: ppdc/sample.c:45
 msgid "Tabloid Oversize"
 msgstr "タブロイド (特大)"
 
-#: ppdc/sample.c:46
 msgid "Tabloid Oversize Long Edge"
 msgstr "タブロイド (特大) 長辺送り"
 
-#: ppdc/sample.c:342
 msgid "Tear"
 msgstr "Tear"
 
-#: ppdc/sample.c:447
 msgid "Tear-Off"
 msgstr "Tear-Off"
 
-#: ppdc/sample.c:388
 msgid "Tear-Off Adjust Position"
 msgstr "Tear-Off 位置調節"
 
-#: scheduler/ipp.c:6393 scheduler/ipp.c:6471 scheduler/ipp.c:6487
-#: scheduler/ipp.c:6505
+#, 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 "%s 属性は、ジョブ ID と一緒に使うことはできません。"
 
-#: scheduler/ipp.c:5118
+#, 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 "%s 操作属性は、Create-Job リクエストの中で使うことはできません。"
 
-#: scheduler/ipp.c:6919
 #, c-format
 msgid "The PPD file \"%s\" could not be found."
 msgstr "PPD ファイル \"%s\" が見つかりません。"
 
-#: scheduler/ipp.c:6906
 #, c-format
 msgid "The PPD file \"%s\" could not be opened: %s"
 msgstr "PPD ファイル \"%s\" を開けませんでした: %s"
 
-#: filter/rastertoepson.c:1038 filter/rastertohp.c:764
-#: filter/rastertolabel.c:1189
 msgid "The PPD file could not be opened."
 msgstr "PPD ファイルを開けませんでした。"
 
-#: cgi-bin/admin.c:749
 msgid ""
 "The class name may only contain up to 127 printable characters and may not "
 "contain spaces, slashes (/), or the pound sign (#)."
-msgstr "クラス名は 127 文字以内の表示可能文字からなり、空白、スラッシュ (/)、シャープ (#) を含んではなりません。"
+msgstr ""
+"クラス名は 127 文字以内の表示可能文字からなり、空白、スラッシュ (/)、シャー"
+"プ (#) を含んではなりません。"
 
-#: cups/localize.c:353
 msgid "The developer unit needs to be replaced."
 msgstr "現像ユニットの交換が必要です。"
 
-#: cups/localize.c:351
 msgid "The developer unit will need to be replaced soon."
 msgstr "もうすぐ現像ユニットの交換時期です。"
 
-#: cups/localize.c:343
 msgid "The fuser's temperature is high."
 msgstr "定着器の温度が高すぎます。"
 
-#: cups/localize.c:345
 msgid "The fuser's temperature is low."
 msgstr "定着器の温度が低すぎます。"
 
-#: scheduler/ipp.c:2097
 msgid ""
 "The notify-lease-duration attribute cannot be used with job subscriptions."
 msgstr ""
 "notify-lease-duration 属性は、ジョブサブスクリプションと一緒に使うことはでき"
 "ません。"
 
-#: scheduler/ipp.c:2080 scheduler/ipp.c:5653
 #, c-format
 msgid "The notify-user-data value is too large (%d > 63 octets)."
 msgstr "notify-user-data 値が大きすぎます (%d > 63 オクテット)。"
 
-#: cups/localize.c:349
 msgid "The optical photoconductor needs to be replaced."
 msgstr "感光体の交換が必要です。"
 
-#: cups/localize.c:347
 msgid "The optical photoconductor will need to be replaced soon."
 msgstr "もうすぐ感光体の交換時期です。"
 
-#: cups/localize.c:331
 msgid "The output bin is almost full."
 msgstr "排紙トレイがほとんど一杯です。"
 
-#: cups/localize.c:333
 msgid "The output bin is full."
 msgstr "排紙トレイが一杯です。"
 
-#: cups/localize.c:329
 msgid "The output bin is missing."
 msgstr "排紙トレイが見つかりません。"
 
-#: cups/localize.c:325
 msgid "The paper tray is almost empty."
 msgstr "用紙トレイが空になりかけています。"
 
-#: cups/localize.c:327
 msgid "The paper tray is empty."
 msgstr "用紙トレイが空です。"
 
-#: cups/localize.c:323
 msgid "The paper tray is missing."
 msgstr "用紙トレイが見つかりません。"
 
-#: cups/localize.c:306
 msgid "The paper tray needs to be filled."
 msgstr "用紙トレイに補充が必要です。"
 
-#: backend/ipp.c:909
-msgid "The printer URI is incorrect or no longer exists."
-msgstr "プリンター URI が誤っているか、もう存在しません。"
+msgid "The printer configuration is incorrect or the printer no longer exists."
+msgstr ""
 
-#: backend/lpd.c:619 backend/lpd.c:1009 backend/lpd.c:1091 backend/lpd.c:1141
 msgid "The printer did not respond."
 msgstr "プリンターが応答しません。"
 
-#: backend/ipp.c:892 backend/ipp.c:899
-#, c-format
-msgid "The printer does not support IPP/%d.%d, trying IPP/%s."
-msgstr "プリンターが IPP/%d.%d をサポートしていません。IPP/%s を試します。"
-
-#: backend/ipp.c:757 backend/ipp.c:874 backend/ipp.c:980 backend/ipp.c:1313
-#: backend/ipp.c:1464 backend/lpd.c:828 backend/socket.c:374
-#: backend/usb-unix.c:131 backend/usb-unix.c:424 backend/usb-unix.c:507
 msgid "The printer is in use."
 msgstr "プリンターは使用中です。"
 
-#: backend/runloop.c:254 backend/runloop.c:374 cups/localize.c:311
 msgid "The printer is not connected."
 msgstr "プリンターは接続されていません。"
 
-#: backend/ipp.c:735 backend/ipp.c:768 backend/ipp.c:870 backend/lpd.c:807
-#: backend/lpd.c:848 backend/socket.c:353 backend/socket.c:386
 msgid "The printer is not responding."
 msgstr "プリンターが応答していません。"
 
-#: backend/runloop.c:396
 msgid "The printer is now connected."
 msgstr "プリンターが接続されました。"
 
-#: backend/usb-darwin.c:1286
 msgid "The printer is now online."
 msgstr "プリンターは現在オンラインです。"
 
-#: backend/usb-darwin.c:1307
 msgid "The printer is offline."
 msgstr "プリンターはオフラインです。"
 
-#: cups/localize.c:335
 msgid "The printer is running low on ink."
 msgstr "プリンターのインクがもうすぐなくなります。"
 
-#: cups/localize.c:313
 msgid "The printer is running low on toner."
 msgstr "プリンターのトナーがもうすぐなくなります。"
 
-#: backend/ipp.c:750 backend/lpd.c:821 backend/socket.c:367
 msgid "The printer is unreachable at this time."
 msgstr "プリンターには現在到達できません。"
 
-#: cups/localize.c:337
 msgid "The printer may be out of ink."
 msgstr "プリンターのインクがなくなっているようです。"
 
-#: cups/localize.c:315
 msgid "The printer may be out of toner."
 msgstr "プリンターのトナーがなくなっているようです。"
 
-#: backend/ipp.c:744 backend/lpd.c:815 backend/socket.c:361
 msgid "The printer may not exist or is unavailable at this time."
 msgstr "プリンターは現在存在しないか、使用できないようです。"
 
-#: cgi-bin/admin.c:931
 msgid ""
 "The printer name may only contain up to 127 printable characters and may not "
 "contain spaces, slashes (/), or the pound sign (#)."
@@ -5031,65 +3915,46 @@ msgstr ""
 "プリンター名は 127 文字以内の表示可能文字から成り、空白、スラッシュ (/)、ポン"
 "ド記号 (#) を含んではなりません。"
 
-#: scheduler/ipp.c:876 scheduler/ipp.c:1136 scheduler/ipp.c:3198
-#: scheduler/ipp.c:3369 scheduler/ipp.c:5101 scheduler/ipp.c:5487
-#: scheduler/ipp.c:5801 scheduler/ipp.c:6359 scheduler/ipp.c:7124
-#: scheduler/ipp.c:7180 scheduler/ipp.c:7494 scheduler/ipp.c:7760
-#: scheduler/ipp.c:7849 scheduler/ipp.c:7882 scheduler/ipp.c:8205
-#: scheduler/ipp.c:8598 scheduler/ipp.c:8679 scheduler/ipp.c:9840
-#: scheduler/ipp.c:10294 scheduler/ipp.c:10624 scheduler/ipp.c:10706
-#: scheduler/ipp.c:10998
 msgid "The printer or class does not exist."
 msgstr "プリンターまたはクラスは存在しません。"
 
-#: scheduler/ipp.c:1304
 msgid "The printer or class is not shared."
 msgstr "プリンターまたはクラスは共有できません。"
 
-#: cups/localize.c:317
 msgid "The printer's cover is open."
 msgstr "プリンターのカバーが開いています。"
 
-#: cups/localize.c:321
 msgid "The printer's door is open."
 msgstr "プリンターのドアが開いています。"
 
-#: cups/localize.c:319
 msgid "The printer's interlock is open."
 msgstr "プリンターのインターロックが開いています。"
 
-#: cups/localize.c:339
 msgid "The printer's waste bin is almost full."
 msgstr "プリンターの廃インクまたは廃トナー容器がほとんど一杯です。"
 
-#: cups/localize.c:341
 msgid "The printer's waste bin is full."
 msgstr "プリンターの廃インクまたは廃トナー容器が一杯です。"
 
-#: scheduler/ipp.c:982 scheduler/ipp.c:2261
 #, c-format
 msgid "The printer-uri \"%s\" contains invalid characters."
 msgstr "printer-uri \"%s\" には、無効な文字が含まれています。"
 
-#: scheduler/ipp.c:3175
 msgid "The printer-uri attribute is required."
 msgstr "printer-uri 属性は必須です。"
 
-#: scheduler/ipp.c:966
 msgid ""
 "The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
 msgstr ""
 "printer-uri は、\"ipp://ホスト名/classes/クラス名\" 形式でなければなりませ"
 "ん。"
 
-#: scheduler/ipp.c:2245
 msgid ""
 "The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
 msgstr ""
 "printer-uri は \"ipp://ホスト名/printers/プリンター名\" 形式でなければなりま"
 "せん。"
 
-#: cgi-bin/admin.c:474
 msgid ""
 "The subscription name may not contain spaces, slashes (/), question marks "
 "(?), or the pound sign (#)."
@@ -5097,604 +3962,480 @@ msgstr ""
 "サブスクリプション名には、スペース、スラッシュ (/)、疑問府 (?)、ポンド記号 "
 "(#) を使用しないでください。"
 
-#: scheduler/client.c:2450
 msgid ""
 "The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to "
 "enable it."
-msgstr "Web インターフェイスが現在無効になっています。有効にするには \"cupsctl WebInterface=yes\" を実行してください。"
+msgstr ""
+"Web インターフェイスが現在無効になっています。有効にするには \"cupsctl "
+"WebInterface=yes\" を実行してください。"
 
-#: scheduler/ipp.c:6454
 #, c-format
 msgid "The which-jobs value \"%s\" is not supported."
 msgstr "which-jobs の値 \"%s\" はサポートされていません。"
 
-#: scheduler/ipp.c:5731
 msgid "There are too many subscriptions."
 msgstr "サブスクリプションが多すぎます。"
 
-#: cups/localize.c:308
 msgid "There is a paper jam."
 msgstr "用紙づまりが発生しています。"
 
-#: backend/usb-darwin.c:379 backend/usb-darwin.c:438 backend/usb-darwin.c:505
-#: backend/usb-darwin.c:526 backend/usb-libusb.c:235 backend/usb-libusb.c:256
 msgid "There was an unrecoverable USB error."
 msgstr "回復不可能な USB のエラーが発生しています。"
 
-#: ppdc/sample.c:435
 msgid "Thermal Transfer Media"
 msgstr "熱転写メディア"
 
-#: scheduler/ipp.c:1507
 msgid "Too many active jobs."
 msgstr "アクティブなジョブが多すぎます。"
 
-#: scheduler/ipp.c:1401
 #, c-format
 msgid "Too many job-sheets values (%d > 2)."
 msgstr "job-sheets 値が多すぎます (%d > 2)。"
 
-#: scheduler/ipp.c:2529
 #, c-format
 msgid "Too many printer-state-reasons values (%d > %d)."
 msgstr "printer-state-reasons 値が多すぎます (%d > %d)。"
 
-#: ppdc/sample.c:289
 msgid "Transparency"
 msgstr "OHP シート"
 
-#: ppdc/sample.c:284
 msgid "Tray"
 msgstr "トレイ"
 
-#: ppdc/sample.c:264
 msgid "Tray 1"
 msgstr "トレイ 1"
 
-#: ppdc/sample.c:265
 msgid "Tray 2"
 msgstr "トレイ 2"
 
-#: ppdc/sample.c:266
 msgid "Tray 3"
 msgstr "トレイ 3"
 
-#: ppdc/sample.c:267
 msgid "Tray 4"
 msgstr "トレイ 4"
 
-#: cups/http-support.c:1315
 msgid "URI Too Long"
 msgstr "URI が長すぎます"
 
-#: ppdc/sample.c:138
 msgid "US Ledger"
 msgstr "US レジャー"
 
-#: ppdc/sample.c:139
 msgid "US Legal"
 msgstr "US リーガル"
 
-#: ppdc/sample.c:140
 msgid "US Legal Oversize"
 msgstr "US リーガル (特大)"
 
-#: ppdc/sample.c:141
 msgid "US Letter"
 msgstr "US レター"
 
-#: ppdc/sample.c:142
 msgid "US Letter Long Edge"
 msgstr "US レター 長辺送り"
 
-#: ppdc/sample.c:143
 msgid "US Letter Oversize"
 msgstr "US レター (特大)"
 
-#: ppdc/sample.c:144
 msgid "US Letter Oversize Long Edge"
 msgstr "US レター (特大) 長辺送り"
 
-#: ppdc/sample.c:145
 msgid "US Letter Small"
 msgstr "US レター (小)"
 
-#: cgi-bin/admin.c:1959 cgi-bin/admin.c:1972 cgi-bin/admin.c:1996
 msgid "Unable to access cupsd.conf file"
 msgstr "cupsd.conf ファイルにアクセスできません"
 
-#: cgi-bin/help.c:133
 msgid "Unable to access help file."
 msgstr "ヘルプファイルにアクセスできません。"
 
-#: cgi-bin/admin.c:526
 msgid "Unable to add RSS subscription"
 msgstr " RSS 購読を追加できません"
 
-#: cgi-bin/admin.c:814
 msgid "Unable to add class"
 msgstr "クラスを追加できません"
 
-#: backend/ipp.c:1635
 msgid "Unable to add document to print job."
 msgstr "ドキュメントを印刷ジョブに追加できません。"
 
-#: scheduler/ipp.c:1548
 #, c-format
 msgid "Unable to add job for destination \"%s\"."
 msgstr "宛先 \"%s\"にジョブを追加できません。"
 
-#: cgi-bin/admin.c:1059 cgi-bin/admin.c:1419
 msgid "Unable to add printer"
 msgstr "プリンターを追加できません"
 
-#: scheduler/ipp.c:1246
 msgid "Unable to allocate memory for file types."
 msgstr "ファイルタイプ用にメモリーを割り当てられません。"
 
-#: filter/pstops.c:451
 msgid "Unable to allocate memory for page info"
 msgstr "ページ情報のメモリー割り当てができません"
 
-#: filter/pstops.c:445
 msgid "Unable to allocate memory for pages array"
 msgstr "ページアレイのメモリー割り当てができません"
 
-#: cgi-bin/admin.c:1525
 msgid "Unable to cancel RSS subscription"
 msgstr "RSS 購読をキャンセルできません"
 
-#: backend/ipp.c:1942
 msgid "Unable to cancel print job."
 msgstr "プリンターを変更できません。"
 
-#: cgi-bin/admin.c:2990
 msgid "Unable to change printer"
 msgstr "プリンターを変更できません"
 
-#: cgi-bin/admin.c:3906
 msgid "Unable to change printer-is-shared attribute"
 msgstr "printer-is-shared 属性を変更することができません"
 
-#: cgi-bin/admin.c:1657 cgi-bin/admin.c:1799
 msgid "Unable to change server settings"
 msgstr "サーバーの設定を変更できません"
 
-#: filter/commandtops.c:420
 msgid "Unable to configure printer options."
 msgstr "プリンターオプションを設定できません。"
 
-#: cups/adminutil.c:911 cups/request.c:1016
 msgid "Unable to connect to host."
 msgstr "ホストに接続できません。"
 
-#: backend/ipp.c:713 backend/ipp.c:1138 backend/lpd.c:787 backend/socket.c:333
-#: backend/usb-unix.c:117
 msgid "Unable to contact printer, queuing on next printer in class."
 msgstr "プリンターと交信できません。クラス内の次のプリンターにキューします。"
 
-#: cups/adminutil.c:726
 #, c-format
 msgid "Unable to copy 64-bit CUPS printer driver files (%d)."
 msgstr "64-bit 版の CUPS プリンタードライバーファイルをコピーできません (%d)。"
 
-#: cups/adminutil.c:691
 #, c-format
 msgid "Unable to copy 64-bit Windows printer driver files (%d)."
 msgstr "64-bit 版の Windows プリンタードライバーをコピーできません (%d)。"
 
-#: cups/adminutil.c:522
 #, c-format
 msgid "Unable to copy CUPS printer driver files (%d)."
 msgstr "複数の CUPS プリンタードライバーファイルをコピーできません (%d)。"
 
-#: scheduler/ipp.c:2649
 #, c-format
 msgid "Unable to copy PPD file - %s"
 msgstr "PPD ファイルをコピーできません - %s"
 
-#: scheduler/ipp.c:2704
 msgid "Unable to copy PPD file."
 msgstr "PPD ファイルをコピーできません。"
 
-#: cups/adminutil.c:487
 #, c-format
 msgid "Unable to copy Windows 2000 printer driver files (%d)."
 msgstr ""
 "複数の Windows 2000 プリンタードライバーファイルをコピーできません (%d)。"
 
-#: cups/adminutil.c:610
 #, c-format
 msgid "Unable to copy Windows 9x printer driver files (%d)."
-msgstr "複数の Windows 9x プリンタードライバーファイルをコピーできません (%d)。"
+msgstr ""
+"複数の Windows 9x プリンタードライバーファイルをコピーできません (%d)。"
 
-#: scheduler/ipp.c:2626
 #, c-format
 msgid "Unable to copy interface script - %s"
 msgstr "インターフェイススクリプトをコピーできません - %s"
 
-#: backend/ipp.c:2034
 msgid "Unable to create compressed print file"
 msgstr "圧縮プリントファイルを作成できません"
 
-#: cups/util.c:602 cups/util.c:1656
 msgid "Unable to create printer-uri"
 msgstr "printer-uri を作成できません。"
 
-#: cgi-bin/admin.c:1850 cgi-bin/admin.c:1862 scheduler/cupsfilter.c:1236
 msgid "Unable to create temporary file"
 msgstr "テンポラリーファイルを作成できません"
 
-#: cgi-bin/admin.c:2153
 msgid "Unable to delete class"
 msgstr "クラスを削除できません"
 
-#: cgi-bin/admin.c:2238
 msgid "Unable to delete printer"
 msgstr "プリンターを削除できません"
 
-#: cgi-bin/classes.c:260 cgi-bin/printers.c:269
 msgid "Unable to do maintenance command"
 msgstr "メンテナンスコマンドを実行できません"
 
-#: cgi-bin/admin.c:1974
 msgid "Unable to edit cupsd.conf files larger than 1MB"
 msgstr "1MB 以上の cupsd.conf ファイルは編集できません。"
 
-#: cups/http.c:4272
 msgid ""
 "Unable to establish a secure connection to host (certificate chain invalid)."
 msgstr "ホストへの安全な接続が確立できません (認証パスが無効です)。"
 
-#: cups/http.c:4262
 msgid ""
 "Unable to establish a secure connection to host (certificate not yet valid)."
 msgstr "ホストへの安全な接続が確立できません (認証がまだ有効ではありません)。"
 
-#: cups/http.c:4257
 msgid "Unable to establish a secure connection to host (expired certificate)."
 msgstr "ホストへの安全な接続が確立できません (認証が期限切れです)。"
 
-#: cups/http.c:4267
 msgid "Unable to establish a secure connection to host (host name mismatch)."
 msgstr "ホストへの安全な接続が確立できません (ホスト名が一致しません)。"
 
-#: cups/http.c:4277
 msgid ""
 "Unable to establish a secure connection to host (peer dropped connection "
 "before responding)."
-msgstr "ホストへの安全な接続が確立できません (応答がある前に接続が切断されました)。"
+msgstr ""
+"ホストへの安全な接続が確立できません (応答がある前に接続が切断されました)。"
 
-#: cups/http.c:4252
 msgid ""
 "Unable to establish a secure connection to host (self-signed certificate)."
 msgstr "ホストへの安全な接続が確立できません (自己署名証明書です)。"
 
-#: cups/http.c:4247
 msgid ""
 "Unable to establish a secure connection to host (untrusted certificate)."
 msgstr "ホストへの安全な接続が確立できません (信用できない証明書です)。"
 
-#: cups/http.c:4008 cups/http.c:4304 cups/http.c:4337 cups/http.c:4354
 msgid "Unable to establish a secure connection to host."
 msgstr "ホストへの安全な接続を確立できません。"
 
-#: cgi-bin/ipp-var.c:365
 msgid "Unable to find destination for job"
 msgstr "ジョブの宛先が見つかりません"
 
-#: cups/http-support.c:1748
 msgid "Unable to find printer."
 msgstr "プリンターが見つかりません。"
 
-#: backend/ipp.c:2056
 msgid "Unable to generate compressed print file"
 msgstr "圧縮プリントファイルを生成できません"
 
-#: backend/ipp.c:3009
 msgid "Unable to get backend exit status."
 msgstr "バックエンドの終了ステータスを取得できません。"
 
-#: cgi-bin/classes.c:450
 msgid "Unable to get class list"
 msgstr "クラスリストを取得できません"
 
-#: cgi-bin/classes.c:549
 msgid "Unable to get class status"
 msgstr "クラスの状態を取得できません。"
 
-#: cgi-bin/admin.c:1320
 msgid "Unable to get list of printer drivers"
 msgstr "プリンタードライバーのリストを取得できません"
 
-#: cgi-bin/admin.c:2840
 msgid "Unable to get printer attributes"
 msgstr "プリンター属性を取得できません"
 
-#: cgi-bin/printers.c:467
 msgid "Unable to get printer list"
 msgstr "プリンターリストを取得できません"
 
-#: cgi-bin/printers.c:569
 msgid "Unable to get printer status"
 msgstr "プリンターの状態を取得できません"
 
-#: backend/ipp.c:933
 msgid "Unable to get printer status."
 msgstr "プリンターの状態を取得できません。"
 
-#: cups/adminutil.c:565 cups/adminutil.c:769
 #, c-format
 msgid "Unable to install Windows 2000 printer driver files (%d)."
-msgstr "複数の Windows 2000 プリンタードライバーファイルをインストールできません (%d)。"
+msgstr ""
+"複数の Windows 2000 プリンタードライバーファイルをインストールできません "
+"(%d)。"
 
-#: cups/adminutil.c:639
 #, c-format
 msgid "Unable to install Windows 9x printer driver files (%d)."
 msgstr ""
 "複数の Windows 9x プリンタードライバーファイルをインストールできません (%d)。"
 
-#: cgi-bin/help.c:92
 msgid "Unable to load help index."
 msgstr "ヘルプの索引を読み込めません。"
 
-#: backend/ipp.c:642 backend/lpd.c:421 backend/socket.c:275
 #, c-format
 msgid "Unable to locate printer \"%s\"."
 msgstr "プリンター \"%s\" が見つかりません。"
 
-#: backend/dnssd.c:781 backend/ipp.c:324 backend/lpd.c:204
-#: backend/socket.c:171
 msgid "Unable to locate printer."
 msgstr "プリンターが見つかりません。"
 
-#: cgi-bin/admin.c:813
 msgid "Unable to modify class"
 msgstr "クラスを変更できません"
 
-#: cgi-bin/admin.c:1058 cgi-bin/admin.c:1418
 msgid "Unable to modify printer"
 msgstr "プリンターを変更できません"
 
-#: cgi-bin/ipp-var.c:432 cgi-bin/ipp-var.c:521
 msgid "Unable to move job"
 msgstr "ジョブを移動できません"
 
-#: cgi-bin/ipp-var.c:434 cgi-bin/ipp-var.c:523
 msgid "Unable to move jobs"
 msgstr "複数のジョブを移動できません"
 
-#: cgi-bin/admin.c:3186 cups/ppd.c:339
 msgid "Unable to open PPD file"
 msgstr "PPD ファイルを読み込むことができません"
 
-#: backend/ipp.c:2040
 msgid "Unable to open compressed print file"
 msgstr "圧縮プリントファイルを開けません"
 
-#: cgi-bin/admin.c:2608
 msgid "Unable to open cupsd.conf file:"
 msgstr "cupsd.conf ファイルを開けません:"
 
-#: backend/usb-unix.c:141
 msgid "Unable to open device file"
 msgstr "デバイスファイルを開けません"
 
-#: scheduler/ipp.c:6140
 #, c-format
 msgid "Unable to open document #%d in job #%d."
 msgstr "ドキュメント %d (ジョブ %d) を開けません。"
 
-#: cgi-bin/help.c:364
 msgid "Unable to open help file."
 msgstr "ヘルプファイルを読み込むことができません。"
 
-#: backend/ipp.c:365 backend/ipp.c:1398 backend/ipp.c:1594 backend/ipp.c:2046
-#: backend/lpd.c:488 backend/socket.c:158 backend/usb.c:237
-#: filter/gziptoany.c:71 filter/pstops.c:300
 msgid "Unable to open print file"
 msgstr "印刷ファイルを開けません"
 
-#: filter/rastertoepson.c:998 filter/rastertohp.c:724
-#: filter/rastertolabel.c:1147
 msgid "Unable to open raster file"
 msgstr "ラスターファイルを開けません"
 
-#: cgi-bin/ipp-var.c:795
 msgid "Unable to print test page"
 msgstr "テストページを印刷できません"
 
-#: backend/runloop.c:96 backend/runloop.c:325 backend/usb-darwin.c:613
-#: backend/usb-darwin.c:657 backend/usb-libusb.c:343 backend/usb-libusb.c:378
 msgid "Unable to read print data."
 msgstr "プリントデータを読み込めません。"
 
-#: cups/dest.c:3402
 msgid "Unable to resolve printer URI."
 msgstr "プリンター URI を解決できません。"
 
-#: cups/adminutil.c:2088
 #, c-format
 msgid "Unable to run \"%s\": %s"
 msgstr "\"%s\" を実行できません: %s"
 
-#: filter/pstops.c:563
 msgid "Unable to see in file"
 msgstr "ファイルを読み込むことができません"
 
-#: cgi-bin/ipp-var.c:598 cgi-bin/ipp-var.c:618
 msgid "Unable to send command to printer driver"
 msgstr "プリンタードライバーにコマンドを送信できません"
 
-#: backend/usb-darwin.c:735 backend/usb-libusb.c:454
 msgid "Unable to send data to printer."
 msgstr "プリンターにデータを送信することができません。"
 
-#: cups/adminutil.c:821
 #, c-format
 msgid "Unable to set Windows printer driver (%d)."
 msgstr "Windows プリンタードライバーを設定できません (%d)。"
 
-#: cgi-bin/admin.c:3807
 msgid "Unable to set options"
 msgstr "オプションを設定できません"
 
-#: cgi-bin/admin.c:3077
 msgid "Unable to set server default"
 msgstr "サーバーをデフォルトに設定できません"
 
-#: backend/ipp.c:2868 backend/ipp.c:2945 backend/ipp.c:2953
 msgid "Unable to start backend process."
 msgstr "バックエンドのプロセスを起動できません。"
 
-#: cgi-bin/admin.c:1912
 msgid "Unable to upload cupsd.conf file"
 msgstr "cupsd.conf ファイルをアップロードできません"
 
-#: backend/usb-darwin.c:1985 backend/usb-darwin.c:2009
 msgid "Unable to use legacy USB class driver."
 msgstr "古いタイプの USB クラスドライバーは使用できません。"
 
-#: backend/runloop.c:125 backend/runloop.c:380
 msgid "Unable to write print data"
 msgstr "プリントデータを書き込めません"
 
-#: filter/gziptoany.c:90
 #, c-format
 msgid "Unable to write uncompressed print data: %s"
 msgstr "非圧縮のプリントデータを書き込めません: %s"
 
-#: cups/http-support.c:1303
 msgid "Unauthorized"
 msgstr "未許可"
 
-#: cgi-bin/admin.c:3503
 msgid "Units"
 msgstr "ユニット"
 
-#: cups/http-support.c:1343 cups/ppd.c:366
 msgid "Unknown"
 msgstr "未知"
 
-#: filter/pstops.c:2213
 #, c-format
 msgid "Unknown choice \"%s\" for option \"%s\"."
 msgstr "\"%s\" (オプション \"%s\" 用) は未知の設定です。"
 
-#: backend/ipp.c:507
 #, c-format
 msgid "Unknown encryption option value: \"%s\"."
 msgstr "\"%s\" は未知の暗号オプション値です。"
 
-#: backend/lpd.c:350
 #, c-format
 msgid "Unknown file order: \"%s\"."
 msgstr "\"%s\" は未知のファイルオーダーです。"
 
-#: backend/lpd.c:321
 #, c-format
 msgid "Unknown format character: \"%c\"."
 msgstr "\"%c\" は未知の書式文字です。"
 
-#: cups/dest-options.c:770
 msgid "Unknown media size name."
 msgstr "未知のメディアサイズ名称です。"
 
-#: backend/ipp.c:554
 #, c-format
 msgid "Unknown option \"%s\" with value \"%s\"."
 msgstr "\"%s\" (値 \"%s\") は未知のオプションです。"
 
-#: filter/pstops.c:2196
 #, c-format
 msgid "Unknown option \"%s\"."
 msgstr "\"%s\" は未知のオプションです。"
 
-#: backend/lpd.c:336
 #, c-format
 msgid "Unknown print mode: \"%s\"."
 msgstr "\"%s\" は未知のプリントモードです。"
 
-#: scheduler/ipp.c:10496
 #, c-format
 msgid "Unknown printer-error-policy \"%s\"."
 msgstr "\"%s\" は未知の printer-error-policy です。"
 
-#: scheduler/ipp.c:10479
 #, c-format
 msgid "Unknown printer-op-policy \"%s\"."
 msgstr "\"%s\" は未知の printer-op-policy です。"
 
-#: cups/http-addrlist.c:710
 msgid "Unknown service name."
 msgstr "未知のサービス名です。"
 
-#: backend/ipp.c:526
 #, c-format
 msgid "Unknown version option value: \"%s\"."
 msgstr "\"%s\" は未知のバージョンオプション値です。"
 
-#: scheduler/ipp.c:402
+#, 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 "\"%s\" はサポートされていない文字セットです。"
 
-#: scheduler/ipp.c:8171 scheduler/ipp.c:9401 scheduler/ipp.c:10950
 #, c-format
 msgid "Unsupported compression \"%s\"."
 msgstr "\"%s\" はサポートされていない圧縮形式です。"
 
-#: scheduler/ipp.c:8305 scheduler/ipp.c:9551 scheduler/ipp.c:10979
 #, c-format
 msgid "Unsupported document-format \"%s\"."
 msgstr "\"%s\" はサポートされていない文書形式です。"
 
-#: scheduler/ipp.c:9534
 #, c-format
 msgid "Unsupported document-format \"%s/%s\"."
 msgstr "\"%s/%s\" はサポートされていない文書形式です。"
 
-#: scheduler/ipp.c:1367
 #, c-format
 msgid "Unsupported format \"%s\"."
 msgstr "\"%s\" はサポートされていない形式です。"
 
-#: scheduler/ipp.c:1465
 msgid "Unsupported margins."
 msgstr "サポートされていないマージンです。"
 
-#: cups/pwg-media.c:529
 msgid "Unsupported media value."
 msgstr "サポートされていないメディアの値です。"
 
-#: filter/pstops.c:2478
 #, c-format
 msgid "Unsupported number-up value %d, using number-up=1."
 msgstr "%d はサポートされていない number-up 値です。number-up=1 を使用します。"
 
-#: filter/pstops.c:2512
 #, c-format
 msgid "Unsupported number-up-layout value %s, using number-up-layout=lrtb."
-msgstr "%s はサポートされていない number-up-layout 値です。number-up-layout=lrtb を使用します。"
+msgstr ""
+"%s はサポートされていない number-up-layout 値です。number-up-layout=lrtb を使"
+"用します。"
 
-#: filter/pstops.c:2563
 #, c-format
 msgid "Unsupported page-border value %s, using page-border=none."
-msgstr "%s はサポートされていない page-border 値です。page-border=none を使用します。"
+msgstr ""
+"%s はサポートされていない page-border 値です。page-border=none を使用します。"
 
-#: filter/rastertopwg.c:147 filter/rastertopwg.c:155 filter/rastertopwg.c:164
 msgid "Unsupported raster data."
 msgstr "サポートされていないラスターデータです。"
 
-#: cups/snmp.c:1112
 msgid "Unsupported value type"
 msgstr "サポートされていない型の値です"
 
-#: cups/http-support.c:1318
 msgid "Upgrade Required"
 msgstr "アップグレードが必要です"
 
-#: systemv/lpadmin.c:668
 msgid ""
 "Usage:\n"
 "\n"
@@ -5709,53 +4450,44 @@ msgstr ""
 "\n"
 "    lpadmin [-h サーバー] -d 宛先\n"
 "    lpadmin [-h サーバー] -x 宛先\n"
-"    lpadmin [-h サーバー] -p プリンター [-c 追加クラス] [-i インターフェイス]\n"
+"    lpadmin [-h サーバー] -p プリンター [-c 追加クラス] [-i インターフェイ"
+"ス]\n"
 "                       [-m モデル] [-r 削除クラス] [-v デバイス]\n"
 "                       [-D 宛先] [-P PPD ファイル] [-o 名前=値]\n"
-"                       [-u allow:ユーザー,ユーザー] [-u deny:ユーザー,ユーザー]"
+"                       [-u allow:ユーザー,ユーザー] [-u deny:ユーザー,ユー"
+"ザー]"
 
-#: backend/dnssd.c:241 backend/ipp.c:313 backend/lpd.c:191
-#: backend/socket.c:135 backend/usb.c:183 filter/commandtops.c:74
-#: filter/gziptoany.c:50 filter/pstops.c:264 monitor/bcp.c:62
-#: monitor/tbcp.c:61
 #, c-format
 msgid "Usage: %s job-id user title copies options [file]"
 msgstr "使い方: %s ジョブID ユーザー タイトル コピー数 オプション [ファイル]"
 
-#: systemv/cupsaddsmb.c:281
 msgid "Usage: cupsaddsmb [options] printer1 ... printerN"
 msgstr "Usage: cupsaddsmb [オプション] プリンター1 ... プリンターN"
 
-#: systemv/cupsctl.c:200
 msgid "Usage: cupsctl [options] [param=value ... paramN=valueN]"
 msgstr "Usage: cupsctl [オプション] [パラメータ=値 ... パラメータN=値N]"
 
-#: scheduler/main.c:2017
 msgid "Usage: cupsd [options]"
 msgstr "使い方: cupsd [オプション]"
 
-#: scheduler/cupsfilter.c:1429
 msgid "Usage: cupsfilter [ options ] filename"
 msgstr "使い方: cupsfilter [オプション] ファイル名"
 
-#: systemv/cupstestdsc.c:425
 msgid "Usage: cupstestdsc [options] filename.ps [... filename.ps]"
 msgstr "使い方: cupstestdsc [オプション] filename.ps [... filename.ps]"
 
-#: systemv/cupstestppd.c:3793
 msgid ""
 "Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]"
-msgstr "使い方: cupstestppd [オプション] ファイル名1.ppd[.gz] [... ファイル名N.ppd[.gz]]"
+msgstr ""
+"使い方: cupstestppd [オプション] ファイル名1.ppd[.gz] [... ファイル名N.ppd[."
+"gz]]"
 
-#: test/ipptool.c:4401
 msgid "Usage: ipptool [options] URI filename [ ... filenameN ]"
 msgstr "使い方: ipptool [オプション] URI ファイル名 [ ... ファイル名N ]"
 
-#: systemv/lpmove.c:125
 msgid "Usage: lpmove job/src dest"
 msgstr "使い方: lpmove ジョブ/ソース 宛先"
 
-#: systemv/lpoptions.c:553
 msgid ""
 "Usage: lpoptions [-h server] [-E] -d printer\n"
 "       lpoptions [-h server] [-E] [-p printer] -l\n"
@@ -5767,11 +4499,9 @@ msgstr ""
 "        lpoptions [-h サーバー] [-E] -p プリンター -o オプション[=値] ...\n"
 "        lpoptions [-h サーバー] [-E] -x プリンター"
 
-#: systemv/lppasswd.c:476
 msgid "Usage: lppasswd [-g groupname]"
 msgstr "使い方: lppasswd [-g グループ名]"
 
-#: systemv/lppasswd.c:479
 msgid ""
 "Usage: lppasswd [-g groupname] [username]\n"
 "       lppasswd [-g groupname] -a [username]\n"
@@ -5781,73 +4511,59 @@ msgstr ""
 "        lppasswd [-g グループ名] -a [ユーザー名]\n"
 "        lppasswd [-g グループ名] -x [ユーザー名]"
 
-#: berkeley/lpq.c:670
 msgid ""
 "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
-msgstr "使い方: lpq [-P 宛先] [-U ユーザー名] [-h ホスト名[:ポート]] [-l] [+間隔]"
+msgstr ""
+"使い方: lpq [-P 宛先] [-U ユーザー名] [-h ホスト名[:ポート]] [-l] [+間隔]"
 
-#: ppdc/ppdc.cxx:435
 msgid "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]"
 msgstr "使い方: ppdc [オプション] ファイル名.drv [ ... ファイル名N.drv ]"
 
-#: ppdc/ppdhtml.cxx:172
 msgid "Usage: ppdhtml [options] filename.drv >filename.html"
 msgstr "使い方: ppdhtml [オプション] ファイル名.drv >ファイル名.html"
 
-#: ppdc/ppdi.cxx:128
 msgid "Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]"
 msgstr "使い方: ppdi [オプション] ファイル名.ppd [ ... ファイル名N.ppd ]"
 
-#: ppdc/ppdmerge.cxx:367
 msgid "Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]"
 msgstr "使い方: ppdmerge [オプション] ファイル名.ppd [ ... ファイル名N.ppd ]"
 
-#: ppdc/ppdpo.cxx:252
 msgid ""
 "Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]"
-msgstr "使い方: ppdpo [オプション] -o ファイル名.po ファイル名.drv [ ... ファイル名N.drv ]"
+msgstr ""
+"使い方: ppdpo [オプション] -o ファイル名.po ファイル名.drv [ ... ファイル名N."
+"drv ]"
 
-#: backend/snmp.c:218
 msgid "Usage: snmp [host-or-ip-address]"
 msgstr "使い方: snmp [ホストまたはIPアドレス]"
 
-#: cups/snmp.c:1064
 msgid "Value uses indefinite length"
 msgstr "値は不定長です"
 
-#: cups/snmp.c:1049
 msgid "VarBind uses indefinite length"
 msgstr "VarBind は不定長です"
 
-#: cups/snmp.c:999
 msgid "Version uses indefinite length"
 msgstr "Version は不定長です"
 
-#: backend/ipp.c:1675
 msgid "Waiting for job to complete."
 msgstr "ジョブが完了するのを待っています。"
 
-#: backend/usb-darwin.c:457 backend/usb-libusb.c:193
 msgid "Waiting for printer to become available."
 msgstr "プリンターが使用可能になるのを待っています。"
 
-#: backend/socket.c:444
 msgid "Waiting for printer to finish."
 msgstr "プリンターが終了するのを待っています。"
 
-#: cups/adminutil.c:793
 msgid "Warning, no Windows 2000 printer drivers are installed."
 msgstr "警告、Windows 2000 プリンタードライバーがインストールされていません。"
 
-#: cups/http-support.c:1339
 msgid "Web Interface is Disabled"
 msgstr "Web インターフェイスが無効になっています"
 
-#: cups/ppd.c:1947
 msgid "Yes"
 msgstr "はい"
 
-#: scheduler/client.c:2437
 #, c-format
 msgid ""
 "You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://"
@@ -5856,289 +4572,228 @@ msgstr ""
 "このページには URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A> を使ってア"
 "クセスする必要があります。"
 
-#: systemv/lppasswd.c:254
 msgid ""
 "Your password must be at least 6 characters long, cannot contain your "
 "username, and must contain at least one letter and number."
-msgstr "パスワードは少なくとも 6 文字以上で、あなたのユーザー名を含んではならず、少なくとも 1 つの英字および数値を含んでなければなりません。"
+msgstr ""
+"パスワードは少なくとも 6 文字以上で、あなたのユーザー名を含んではならず、少な"
+"くとも 1 つの英字および数値を含んでなければなりません。"
 
-#: ppdc/sample.c:439
 msgid "ZPL Label Printer"
 msgstr "ZPL ラベルプリンター"
 
-#: ppdc/sample.c:362
 msgid "Zebra"
 msgstr "ゼブラ"
 
-#: cups/notify.c:102
 msgid "aborted"
 msgstr "停止"
 
-#: cups/notify.c:99
 msgid "canceled"
 msgstr "キャンセル"
 
-#: cups/notify.c:105
 msgid "completed"
 msgstr "完了"
 
-#: scheduler/ipp.c:6012
 msgid "cups-deviced failed to execute."
 msgstr "cups-deviced の実行に失敗しました。"
 
-#: scheduler/ipp.c:6842 scheduler/ipp.c:7091
 msgid "cups-driverd failed to execute."
 msgstr "cups-driverd の実行に失敗しました。"
 
-#: systemv/cupsaddsmb.c:233
 #, c-format
 msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s"
 msgstr "cupsaddsmb: プリンター \"%s\" の PPD ファイルがありません - %s"
 
-#: systemv/cupsctl.c:141
 msgid "cupsctl: Cannot set Listen or Port directly."
 msgstr "cupsctl: Listen あるいは Port を直接設定できません。"
 
-#: systemv/cupsctl.c:152
 #, c-format
 msgid "cupsctl: Unable to connect to server: %s"
 msgstr "cupsctl: サーバーに接続できません: %s"
 
-#: systemv/cupsctl.c:195
 #, c-format
 msgid "cupsctl: Unknown option \"%s\""
 msgstr "cupsctl: \"%s\" は未知のオプションです。"
 
-#: systemv/cupsctl.c:197
 #, c-format
 msgid "cupsctl: Unknown option \"-%c\""
 msgstr "cupsctl: \"-%c\"は未知のオプションです。"
 
-#: scheduler/main.c:189
 msgid "cupsd: Expected config filename after \"-c\" option."
 msgstr "cupsd: \"-c\" オプションのあとには設定ファイル名が必要です。"
 
-#: scheduler/main.c:221 scheduler/main.c:228
 msgid "cupsd: Unable to get current directory."
 msgstr "cupsd: カレントディレクトリーを取得できません。"
 
-#: scheduler/main.c:295
 #, c-format
 msgid "cupsd: Unknown argument \"%s\" - aborting."
 msgstr "cupsd: \"%s\" は未知の引数です - 停止します。"
 
-#: scheduler/main.c:288
 #, c-format
 msgid "cupsd: Unknown option \"%c\" - aborting."
 msgstr "cupsd: \"%c\" は未知のオプションです - 停止します。"
 
-#: scheduler/main.c:255
 msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
-msgstr "cupsd: launchd(8) サポートがコンパイルされていないので、通常モードで動作します。"
+msgstr ""
+"cupsd: launchd(8) サポートがコンパイルされていないので、通常モードで動作しま"
+"す。"
 
-#: scheduler/cupsfilter.c:1209
 #, c-format
 msgid "cupsfilter: Invalid document number %d."
 msgstr "cupsfilter: 不正な文書番号 %d です。"
 
-#: scheduler/cupsfilter.c:1203
 #, c-format
 msgid "cupsfilter: Invalid job ID %d."
 msgstr "cupsfilter: 不正なジョブID %d です。"
 
-#: scheduler/cupsfilter.c:358
 msgid "cupsfilter: Only one filename can be specified."
 msgstr "cupsfilter: 1 つのファイル名のみを指定できます。"
 
-#: scheduler/cupsfilter.c:1251
 #, c-format
 msgid "cupsfilter: Unable to get job file - %s"
 msgstr "cupsfilter: ジョブ・ファイルを取得できません - %s"
 
-#: systemv/cupstestppd.c:261
 msgid "cupstestppd: The -q option is incompatible with the -v option."
 msgstr "cupstestppd: -q オプションは -v オプションと両立できません。"
 
-#: systemv/cupstestppd.c:277
 msgid "cupstestppd: The -v option is incompatible with the -q option."
 msgstr "cupstestppd: -v オプションは -q オプションと両立できません。"
 
-#: systemv/lpstat.c:1231 systemv/lpstat.c:1234 systemv/lpstat.c:1237
 #, c-format
 msgid "device for %s/%s: %s"
 msgstr "%s/%s のデバイス: %s"
 
-#: systemv/lpstat.c:1218 systemv/lpstat.c:1221 systemv/lpstat.c:1224
 #, c-format
 msgid "device for %s: %s"
 msgstr "%s のデバイス: %s"
 
-#: cups/snmp.c:1036
 msgid "error-index uses indefinite length"
 msgstr "error-index は不定長です"
 
-#: cups/snmp.c:1028
 msgid "error-status uses indefinite length"
 msgstr "error-status は不定長です"
 
-#: cups/notify.c:90
 msgid "held"
 msgstr "保留"
 
-#: berkeley/lpc.c:209
 msgid "help\t\tGet help on commands."
 msgstr "help\t\tコマンドのヘルプを取得。"
 
-#: cups/notify.c:131
 msgid "idle"
 msgstr "待機中"
 
-#: test/ipptool.c:373 test/ipptool.c:515 test/ipptool.c:539
 msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
 msgstr "ipptool: \"-i\" と \"-n\" は \"-X\" と組み合わせられません。"
 
-#: test/ipptool.c:597
 #, c-format
 msgid "ipptool: Bad URI - %s."
 msgstr "ipptool: 不正な URI です - %s。"
 
-#: test/ipptool.c:362
 #, c-format
 msgid "ipptool: Bad version %s for \"-V\"."
 msgstr "ipptool: \"-V\" オプションに不正なバージョン %s が指定されました。"
 
-#: test/ipptool.c:508
 msgid "ipptool: Invalid seconds for \"-i\"."
 msgstr "ipptool: \"-i\" に不正な秒数が指定されました。"
 
-#: test/ipptool.c:578
 msgid "ipptool: May only specify a single URI."
 msgstr "ipptool: URI は 1 つだけ指定できます。"
 
-#: test/ipptool.c:531
 msgid "ipptool: Missing count for \"-n\"."
 msgstr "ipptool: \"-n\" に回数の指定がありません。"
 
-#: test/ipptool.c:408
 msgid "ipptool: Missing filename for \"-f\"."
 msgstr "ipptool: \"-f\" にファイル名の指定がありません。"
 
-#: test/ipptool.c:389
 msgid "ipptool: Missing name=value for \"-d\"."
 msgstr "ipptool: \"-d\" に 名前=値 の指定がありません。"
 
-#: test/ipptool.c:498
 msgid "ipptool: Missing seconds for \"-i\"."
 msgstr "ipptool: \"-i\" に秒数の指定がありません。"
 
-#: test/ipptool.c:332
 msgid "ipptool: Missing timeout for \"-T\"."
 msgstr "ipptool: \"-T\" にタイムアウトの指定がありません。"
 
-#: test/ipptool.c:345
 msgid "ipptool: Missing version for \"-V\"."
 msgstr "ipptool: \"-V\" にバージョンの指定がありません。"
 
-#: test/ipptool.c:624
 msgid "ipptool: URI required before test file."
 msgstr "ipptool: テストファイルの前に URI の指定が必要です。"
 
-#: test/ipptool.c:558
 #, c-format
 msgid "ipptool: Unknown option \"-%c\"."
 msgstr "ipptool: \"-%c\"は未知のオプションです。"
 
-#: scheduler/ipp.c:7838
 msgid "job-printer-uri attribute missing."
 msgstr "job-printer-uri 属性がありません。"
 
-#: systemv/lpadmin.c:131 systemv/lpadmin.c:375
 msgid "lpadmin: Class name can only contain printable characters."
 msgstr "lpadmin: クラス名は表示可能文字のみで構成されなければなりません。"
 
-#: systemv/lpadmin.c:614
 msgid "lpadmin: Expected PPD after \"-P\" option."
 msgstr "lpadmin: \"-P\" オプションのあとには PPD が必要です。"
 
-#: systemv/lpadmin.c:457
 msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
-msgstr "lpadmin: \"-u\" オプションのあとには allow/deny:ユーザーリスト が必要です。"
+msgstr ""
+"lpadmin: \"-u\" オプションのあとには allow/deny:ユーザーリスト が必要です。"
 
-#: systemv/lpadmin.c:364
 msgid "lpadmin: Expected class after \"-r\" option."
 msgstr "lpadmin: \"-r\" オプションのあとにはクラス名が必要です。"
 
-#: systemv/lpadmin.c:120
 msgid "lpadmin: Expected class name after \"-c\" option."
 msgstr "lpadmin: \"-c\" オプションのあとにはクラス名が必要です。"
 
-#: systemv/lpadmin.c:558
 msgid "lpadmin: Expected description after \"-D\" option."
 msgstr "lpadmin: \"-D\" オプションのあとには説明が必要です。"
 
-#: systemv/lpadmin.c:491
 msgid "lpadmin: Expected device URI after \"-v\" option."
 msgstr "lpadmin: \"-v\" オプションのあとにはデバイス URI が必要です。"
 
-#: systemv/lpadmin.c:574
 msgid "lpadmin: Expected file type(s) after \"-I\" option."
 msgstr "lpadmin: \"-I\" オプションのあとにはファイル形式が必要です。"
 
-#: systemv/lpadmin.c:202
 msgid "lpadmin: Expected hostname after \"-h\" option."
 msgstr "lpadmin: \"-h\" オプションのあとにはホスト名が必要です。"
 
-#: systemv/lpadmin.c:221
 msgid "lpadmin: Expected interface after \"-i\" option."
 msgstr "lpadmin: \"-i\" オプションのあとにはインターフェイス名が必要です。"
 
-#: systemv/lpadmin.c:594
 msgid "lpadmin: Expected location after \"-L\" option."
 msgstr "lpadmin: \"-L\" オプションのあとには場所が必要です。"
 
-#: systemv/lpadmin.c:274
 msgid "lpadmin: Expected model after \"-m\" option."
 msgstr "lpadmin: \"-m\" オプションのあとにはモデル名が必要です。"
 
-#: systemv/lpadmin.c:417
 msgid "lpadmin: Expected name after \"-R\" option."
 msgstr "lpadmin: \"-R\" オプションのあとには名前が必要です。"
 
-#: systemv/lpadmin.c:294
 msgid "lpadmin: Expected name=value after \"-o\" option."
 msgstr "lpadmin: \"-o\" オプションのあとには 変数名=値 が必要です。"
 
-#: systemv/lpadmin.c:313
 msgid "lpadmin: Expected printer after \"-p\" option."
 msgstr "lpadmin: \"-p\" オプションのあとにはプリンター名が必要です。"
 
-#: systemv/lpadmin.c:164
 msgid "lpadmin: Expected printer name after \"-d\" option."
 msgstr "lpadmin: \"-d\" オプションのあとにはプリンター名が必要です。"
 
-#: systemv/lpadmin.c:525
 msgid "lpadmin: Expected printer or class after \"-x\" option."
-msgstr "lpadmin: \"-x\" オプションのあとにはプリンター名またはクラス名が必要です。"
+msgstr ""
+"lpadmin: \"-x\" オプションのあとにはプリンター名またはクラス名が必要です。"
 
-#: systemv/lpadmin.c:975
 msgid "lpadmin: No member names were seen."
 msgstr "lpadmin: メンバー名が見当たりません。"
 
-#: systemv/lpadmin.c:762
 #, c-format
 msgid "lpadmin: Printer %s is already a member of class %s."
 msgstr "lpadmin: プリンター %s はすでにクラス %s のメンバーです。"
 
-#: systemv/lpadmin.c:989
 #, c-format
 msgid "lpadmin: Printer %s is not a member of class %s."
 msgstr "lpadmin: プリンター %s はクラス %s のメンバーではありません。"
 
-#: systemv/lpadmin.c:175 systemv/lpadmin.c:324 systemv/lpadmin.c:536
 msgid "lpadmin: Printer name can only contain printable characters."
 msgstr "lpadmin: プリンター名には表示可能文字だけが使用できます。"
 
-#: systemv/lpadmin.c:105
 msgid ""
 "lpadmin: Unable to add a printer to the class:\n"
 "         You must specify a printer name first."
@@ -6146,18 +4801,13 @@ msgstr ""
 "lpadmin: クラスにプリンターを追加できません:\n"
 "         先にプリンター名を指定する必要があります。"
 
-#: systemv/lpadmin.c:96 systemv/lpadmin.c:149 systemv/lpadmin.c:253
-#: systemv/lpadmin.c:339 systemv/lpadmin.c:393 systemv/lpadmin.c:510
-#: systemv/lpadmin.c:647
 #, c-format
 msgid "lpadmin: Unable to connect to server: %s"
 msgstr "lpadmin: サーバーに接続できません: %s"
 
-#: systemv/lpadmin.c:1329
 msgid "lpadmin: Unable to create temporary file"
 msgstr "lpadmin: テンポラリーファイルを作成できません"
 
-#: systemv/lpadmin.c:402
 msgid ""
 "lpadmin: Unable to delete option:\n"
 "         You must specify a printer name first."
@@ -6165,12 +4815,10 @@ msgstr ""
 "lpadmin: プリンター・オプションを削除できません:\n"
 "         先にプリンター名を指定する必要があります。"
 
-#: systemv/lpadmin.c:1339
 #, c-format
 msgid "lpadmin: Unable to open PPD file \"%s\" - %s"
 msgstr "lpadmin: PPD ファイル \"%s\" を開けません - %s"
 
-#: systemv/lpadmin.c:348
 msgid ""
 "lpadmin: Unable to remove a printer from the class:\n"
 "         You must specify a printer name first."
@@ -6178,7 +4826,6 @@ msgstr ""
 "lpadmin: クラスからプリンターを削除できません:\n"
 "         先にプリンター名を指定する必要があります。"
 
-#: systemv/lpadmin.c:656
 msgid ""
 "lpadmin: Unable to set the printer options:\n"
 "         You must specify a printer name first."
@@ -6186,437 +4833,377 @@ msgstr ""
 "lpadmin: プリンター・オプションを設定できません:\n"
 "         先にプリンター名を指定する必要があります。"
 
-#: systemv/lpadmin.c:474
 #, c-format
 msgid "lpadmin: Unknown allow/deny option \"%s\"."
 msgstr "lpadmin:\"%s\" は未知の allow/deny オプションです。"
 
-#: systemv/lpadmin.c:629
 #, c-format
 msgid "lpadmin: Unknown argument \"%s\"."
 msgstr "lpadmin: \"%s\" は未知の引数です。"
 
-#: systemv/lpadmin.c:624
 #, c-format
 msgid "lpadmin: Unknown option \"%c\"."
 msgstr "lpadmin: \"%c\" は未知のオプションです。"
 
-#: systemv/lpadmin.c:580
 msgid "lpadmin: Warning - content type list ignored."
 msgstr "lpadmin: 警告 - コンテンツタイプリストは無視されます。"
 
-#: berkeley/lpc.c:76 berkeley/lpc.c:104 berkeley/lpc.c:140
 msgid "lpc> "
 msgstr "lpc> "
 
-#: systemv/lpinfo.c:137
 msgid "lpinfo: Expected 1284 device ID string after \"--device-id\"."
-msgstr "lpinfo: \"--device-id\" のあとには、1284 デバイス ID を指定する必要があります。"
+msgstr ""
+"lpinfo: \"--device-id\" のあとには、1284 デバイス ID を指定する必要がありま"
+"す。"
 
-#: systemv/lpinfo.c:190
 msgid "lpinfo: Expected language after \"--language\"."
 msgstr "lpinfo: \"--language\" のあとには、言語を指定する必要があります。"
 
-#: systemv/lpinfo.c:207
 msgid "lpinfo: Expected make and model after \"--make-and-model\"."
-msgstr "lpinfo: \"--make-and-model\" の後には、メーカーとモデルを指定する必要があります。"
+msgstr ""
+"lpinfo: \"--make-and-model\" の後には、メーカーとモデルを指定する必要がありま"
+"す。"
 
-#: systemv/lpinfo.c:224
 msgid "lpinfo: Expected product string after \"--product\"."
 msgstr "lpinfo: \"--product\" のあとには、製品名を指定する必要があります。"
 
-#: systemv/lpinfo.c:155
 msgid "lpinfo: Expected scheme list after \"--exclude-schemes\"."
-msgstr "lpinfo: \"--exclude-schemes\" のあとには、スキーマ・リストを指定する必要があります。"
+msgstr ""
+"lpinfo: \"--exclude-schemes\" のあとには、スキーマ・リストを指定する必要があ"
+"ります。"
 
-#: systemv/lpinfo.c:173
 msgid "lpinfo: Expected scheme list after \"--include-schemes\"."
-msgstr "lpinfo: \"--include-schemes\" のあとには、スキーマ・リストを指定する必要があります。"
+msgstr ""
+"lpinfo: \"--include-schemes\" のあとには、スキーマ・リストを指定する必要があ"
+"ります。"
 
-#: systemv/lpinfo.c:241
 msgid "lpinfo: Expected timeout after \"--timeout\"."
-msgstr "lpinfo: \"--timeout\" のあとには、タイムアウト値を指定する必要があります。"
+msgstr ""
+"lpinfo: \"--timeout\" のあとには、タイムアウト値を指定する必要があります。"
 
-#: systemv/lpinfo.c:265
 #, c-format
 msgid "lpinfo: Unknown argument \"%s\"."
 msgstr "lpinfo: 未知の引数 \"%s\"。"
 
-#: systemv/lpinfo.c:259
 #, c-format
 msgid "lpinfo: Unknown option \"%c\"."
 msgstr "lpinfo: 未知のオプション \"%c\"。"
 
-#: systemv/lpinfo.c:252
 #, c-format
 msgid "lpinfo: Unknown option \"%s\"."
 msgstr "lpinfo: 未知のオプション \"%s\"。"
 
-#: systemv/lpmove.c:133
 #, c-format
 msgid "lpmove: Unable to connect to server: %s"
 msgstr "lpmove: サーバーに接続できません: %s"
 
-#: systemv/lpmove.c:119
 #, c-format
 msgid "lpmove: Unknown argument \"%s\"."
 msgstr "lpmove: 未知の引数 \"%s\"。"
 
-#: systemv/lpmove.c:97
 #, c-format
 msgid "lpmove: Unknown option \"%c\"."
 msgstr "lpmove: 未知のオプション \"%c\"。"
 
-#: systemv/lpoptions.c:150 systemv/lpoptions.c:168 systemv/lpoptions.c:244
 msgid "lpoptions: No printers."
 msgstr "lpoptions: プリンターがありません。"
 
-#: systemv/lpoptions.c:219
 #, c-format
 msgid "lpoptions: Unable to add printer or instance: %s"
 msgstr "lpoptions: プリンターまたはインスタンスを追加できません: %s。"
 
-#: systemv/lpoptions.c:521
 #, c-format
 msgid "lpoptions: Unable to get PPD file for %s: %s"
 msgstr "lpoptions: %s の PPD ファイルを取得できません: %s"
 
-#: systemv/lpoptions.c:529
 #, c-format
 msgid "lpoptions: Unable to open PPD file for %s."
 msgstr "lpoptions: %s の PPD ファイルを開けません。"
 
-#: systemv/lpoptions.c:99
 msgid "lpoptions: Unknown printer or class."
 msgstr "lpoptions: 未知のプリンターまたはクラスです。"
 
-#: systemv/lppasswd.c:173
 msgid "lppasswd: Only root can add or delete passwords."
 msgstr "lppasswd: root だけがパスワードの追加と削除を行えます。"
 
-#: systemv/lppasswd.c:302
 msgid "lppasswd: Password file busy."
 msgstr "lppasswd: パスワードファイルがビジー状態です。"
 
-#: systemv/lppasswd.c:431
 msgid "lppasswd: Password file not updated."
 msgstr "lppasswd: パスワードファイルは更新されません。"
 
-#: systemv/lppasswd.c:398
 msgid "lppasswd: Sorry, password doesn't match."
 msgstr "lppasswd: 残念ながら、パスワードがマッチしません。"
 
-#: systemv/lppasswd.c:253
 msgid "lppasswd: Sorry, password rejected."
 msgstr "lppasswd: 残念ながら、パスワードは拒否されました。"
 
-#: systemv/lppasswd.c:230
 msgid "lppasswd: Sorry, passwords don't match."
 msgstr "lppasswd: 残念ながら、パスワードがマッチしません。"
 
-#: systemv/lppasswd.c:199 systemv/lppasswd.c:218
 #, c-format
 msgid "lppasswd: Unable to copy password string: %s"
 msgstr "lppasswd: パスワード文字列をコピーできません: %s"
 
-#: systemv/lppasswd.c:304 systemv/lppasswd.c:312 systemv/lppasswd.c:329
 #, c-format
 msgid "lppasswd: Unable to open password file: %s"
 msgstr "lppasswd: パスワードファイルを開けません: %s"
 
-#: systemv/lppasswd.c:364 systemv/lppasswd.c:377 systemv/lppasswd.c:408
 #, c-format
 msgid "lppasswd: Unable to write to password file: %s"
 msgstr "lppasswd: パスワードファイルに書き込めません: %s"
 
-#: systemv/lppasswd.c:446
 #, c-format
 msgid "lppasswd: failed to backup old password file: %s"
 msgstr "lppasswd: 古いパスワードファイルのバックアップに失敗しました: %s"
 
-#: systemv/lppasswd.c:458
 #, c-format
 msgid "lppasswd: failed to rename password file: %s"
 msgstr "lppasswd: パスワードファイルの名前の変更に失敗しました: %s"
 
-#: systemv/lppasswd.c:389
 #, c-format
 msgid "lppasswd: user \"%s\" and group \"%s\" do not exist."
 msgstr "lppasswd: ユーザー \"%s\" およびグループ \"%s\" は存在しません。"
 
-#: systemv/lpstat.c:1039
 #, c-format
 msgid ""
 "lpstat: error - %s environment variable names non-existent destination \"%s"
 "\"."
-msgstr "lpstat: エラー - 環境変数 %s が、存在しない宛先 \"%s\" を指しています。"
+msgstr ""
+"lpstat: エラー - 環境変数 %s が、存在しない宛先 \"%s\" を指しています。"
 
-#: systemv/lpstat.c:970
 #, c-format
 msgid "members of class %s:"
 msgstr "クラス %s のメンバー:"
 
-#: berkeley/lpq.c:582
 msgid "no entries"
 msgstr "エントリーがありません"
 
-#: systemv/lpstat.c:1043
 msgid "no system default destination"
 msgstr "システムのデフォルトの宛先がありません"
 
-#: scheduler/ipp.c:5702
 msgid "notify-events not specified."
 msgstr "notify-events が指定されていません。"
 
-#: scheduler/ipp.c:2034 scheduler/ipp.c:5607
 #, c-format
 msgid "notify-recipient-uri URI \"%s\" is already used."
 msgstr "notify-recipient-uri URI \"%s\" はすでに使われています。"
 
-#: scheduler/ipp.c:2024 scheduler/ipp.c:5597
 #, c-format
 msgid "notify-recipient-uri URI \"%s\" uses unknown scheme."
 msgstr "notify-recipient-uri URI \"%s\" には未知のスキームが使われています。"
 
-#: cups/notify.c:87
 msgid "pending"
 msgstr "保留"
 
-#: ppdc/ppdc.cxx:113 ppdc/ppdpo.cxx:93
 #, c-format
 msgid "ppdc: Adding include directory \"%s\"."
 msgstr "ppdc: ディレクトリー \"%s\" を追加しています。"
 
-#: ppdc/ppdpo.cxx:134
 #, c-format
 msgid "ppdc: Adding/updating UI text from %s."
 msgstr "ppdc: %s から UI テキストを追加または更新しています。"
 
-#: ppdc/ppdc-source.cxx:410
 #, c-format
 msgid "ppdc: Bad boolean value (%s) on line %d of %s."
 msgstr "ppdc:  不正な boolean 値 (%s) があります。%d 行目、ファイル名 %s。"
 
-#: ppdc/ppdc-import.cxx:264
 #, c-format
 msgid "ppdc: Bad font attribute: %s"
 msgstr "不正なフォント属性: %s"
 
-#: ppdc/ppdc-source.cxx:1796
 #, c-format
 msgid "ppdc: Bad resolution name \"%s\" on line %d of %s."
 msgstr ""
 "ppdc: 不正な resolution 名 \"%s\" があります。%d 行目、ファイル名 %s 。"
 
-#: ppdc/ppdc-source.cxx:1113
 #, c-format
 msgid "ppdc: Bad status keyword %s on line %d of %s."
 msgstr ""
 "ppdc: 不正な status キーワード %s があります。%d 行目、ファイル名 %s 。"
 
-#: ppdc/ppdc-source.cxx:2033
 #, c-format
 msgid "ppdc: Bad variable substitution ($%c) on line %d of %s."
 msgstr "ppdc: 不正な数値置換 ($%c) があります。%d 行目、ファイル名 %s。"
 
-#: ppdc/ppdc-source.cxx:2719
 #, c-format
 msgid "ppdc: Choice found on line %d of %s with no Option."
 msgstr ""
 "ppdc: %d 行目、ファイル名 %s で、Option がないのに Choice が見つかりました。"
 
-#: ppdc/ppdc-source.cxx:1698
 #, c-format
 msgid "ppdc: Duplicate #po for locale %s on line %d of %s."
-msgstr "ppdc: locale %s に対して #po が二重に定義されています。%d 行目、ファイル名 %s 。"
+msgstr ""
+"ppdc: locale %s に対して #po が二重に定義されています。%d 行目、ファイル名 "
+"%s 。"
 
-#: ppdc/ppdc-source.cxx:932
 #, c-format
 msgid "ppdc: Expected a filter definition on line %d of %s."
 msgstr "ppdc: %d 行目、ファイル名 %s においてフィルター定義が必要です。"
 
-#: ppdc/ppdc-source.cxx:955
 #, c-format
 msgid "ppdc: Expected a program name on line %d of %s."
 msgstr "ppdc: %d 行目、ファイル名 %s においてプログラム名が必要です。"
 
-#: ppdc/ppdc-source.cxx:394
 #, c-format
 msgid "ppdc: Expected boolean value on line %d of %s."
 msgstr "ppdc: %d 行目、ファイル名 %s において boolean 値が必要です。"
 
-#: ppdc/ppdc-source.cxx:1093
 #, c-format
 msgid "ppdc: Expected charset after Font on line %d of %s."
-msgstr "ppdc: %d 行目、ファイル名 %s において Font のあとに charset が必要です。"
+msgstr ""
+"ppdc: %d 行目、ファイル名 %s において Font のあとに charset が必要です。"
 
-#: ppdc/ppdc-source.cxx:447
 #, c-format
 msgid "ppdc: Expected choice code on line %d of %s."
 msgstr "ppdc: %d 行目、ファイル名 %s において choice code が必要です。"
 
-#: ppdc/ppdc-source.cxx:435
 #, c-format
 msgid "ppdc: Expected choice name/text on line %d of %s."
 msgstr "ppdc: %d 行目、ファイル名 %s において choice name/text が必要です。"
 
-#: ppdc/ppdc-source.cxx:503
 #, c-format
 msgid "ppdc: Expected color order for ColorModel on line %d of %s."
 msgstr ""
 "ppdc: %d 行目、ファイル名 %s において ColorModel に対する color order が必要"
 "です。"
 
-#: ppdc/ppdc-source.cxx:492
 #, c-format
 msgid "ppdc: Expected colorspace for ColorModel on line %d of %s."
 msgstr ""
 "ppdc: %d 行目、ファイル名 %s において ColorModel に対する colorspace が必要で"
 "す。"
 
-#: ppdc/ppdc-source.cxx:514
 #, c-format
 msgid "ppdc: Expected compression for ColorModel on line %d of %s."
 msgstr ""
 "ppdc: %d 行目、ファイル名 %s において ColorModel に対する compression が必要"
 "です。"
 
-#: ppdc/ppdc-source.cxx:695
 #, c-format
 msgid "ppdc: Expected constraints string for UIConstraints on line %d of %s."
 msgstr ""
 "ppdc: %d 行目、ファイル名 %s において UIConstraints に対する constraint が必"
 "要です。"
 
-#: ppdc/ppdc-source.cxx:2905
 #, c-format
 msgid ""
 "ppdc: Expected driver type keyword following DriverType on line %d of %s."
-msgstr "ppdc: %d 行目、ファイル名 %s において DriverType のあとに driver type keyword が必要です。"
+msgstr ""
+"ppdc: %d 行目、ファイル名 %s において DriverType のあとに driver type "
+"keyword が必要です。"
 
-#: ppdc/ppdc-source.cxx:826
 #, c-format
 msgid "ppdc: Expected duplex type after Duplex on line %d of %s."
-msgstr "ppdc: %d 行目、ファイル名 %s において Duplex のあとに type が必要です。"
+msgstr ""
+"ppdc: %d 行目、ファイル名 %s において Duplex のあとに type が必要です。"
 
-#: ppdc/ppdc-source.cxx:1077
 #, c-format
 msgid "ppdc: Expected encoding after Font on line %d of %s."
-msgstr "ppdc: %d 行目、ファイル名 %s において Font のあとに encoding が必要です。"
+msgstr ""
+"ppdc: %d 行目、ファイル名 %s において Font のあとに encoding が必要です。"
 
-#: ppdc/ppdc-source.cxx:1689
 #, c-format
 msgid "ppdc: Expected filename after #po %s on line %d of %s."
 msgstr "ppdc: #po %s のあとにファイル名が必要です (%d 行目, ファイル %s)。"
 
-#: ppdc/ppdc-source.cxx:1205
 #, c-format
 msgid "ppdc: Expected group name/text on line %d of %s."
 msgstr "ppdc: %d 行目、ファイル名 %s において group name/text が必要です。"
 
-#: ppdc/ppdc-source.cxx:2619
 #, c-format
 msgid "ppdc: Expected include filename on line %d of %s."
 msgstr "ppdc: %d 行目、ファイル名 %s において include ファイル名が必要です。"
 
-#: ppdc/ppdc-source.cxx:1502
 #, c-format
 msgid "ppdc: Expected integer on line %d of %s."
 msgstr "ppdc: %d 行目、ファイル名 %s において整数指定が必要です。"
 
-#: ppdc/ppdc-source.cxx:1681
 #, c-format
 msgid "ppdc: Expected locale after #po on line %d of %s."
 msgstr "ppdc: %d 行目、ファイル名 %s において #po のあとに locale が必要です。"
 
-#: ppdc/ppdc-source.cxx:353
 #, c-format
 msgid "ppdc: Expected name after %s on line %d of %s."
 msgstr "ppdc: %s のあとに name が必要です。%d 行目、ファイル名 %s。"
 
-#: ppdc/ppdc-source.cxx:3277
 #, c-format
 msgid "ppdc: Expected name after FileName on line %d of %s."
-msgstr "ppdc: %d 行目、ファイル名 %s において FileName のあとに name が必要です。"
+msgstr ""
+"ppdc: %d 行目、ファイル名 %s において FileName のあとに name が必要です。"
 
-#: ppdc/ppdc-source.cxx:1058
 #, c-format
 msgid "ppdc: Expected name after Font on line %d of %s."
 msgstr "ppdc: %d 行目、ファイル名 %s において Font のあとに name が必要です。"
 
-#: ppdc/ppdc-source.cxx:3108
 #, c-format
 msgid "ppdc: Expected name after Manufacturer on line %d of %s."
-msgstr "ppdc: %d 行目、ファイル名 %s において Manufacturer のあとに name が必要です。"
+msgstr ""
+"ppdc: %d 行目、ファイル名 %s において Manufacturer のあとに name が必要です。"
 
-#: ppdc/ppdc-source.cxx:3141
 #, c-format
 msgid "ppdc: Expected name after MediaSize on line %d of %s."
-msgstr "ppdc: %d 行目、ファイル名 %s において MediaSize のあとに name が必要です。"
+msgstr ""
+"ppdc: %d 行目、ファイル名 %s において MediaSize のあとに name が必要です。"
 
-#: ppdc/ppdc-source.cxx:3231
 #, c-format
 msgid "ppdc: Expected name after ModelName on line %d of %s."
-msgstr "ppdc: %d 行目、ファイル名 %s において ModelName のあとに name が必要です。"
+msgstr ""
+"ppdc: %d 行目、ファイル名 %s において ModelName のあとに name が必要です。"
 
-#: ppdc/ppdc-source.cxx:3294
 #, c-format
 msgid "ppdc: Expected name after PCFileName on line %d of %s."
-msgstr "ppdc: %d 行目、ファイル名 %s において PCFileName のあとに name が必要です。"
+msgstr ""
+"ppdc: %d 行目、ファイル名 %s において PCFileName のあとに name が必要です。"
 
-#: ppdc/ppdc-source.cxx:1156
 #, c-format
 msgid "ppdc: Expected name/text after %s on line %d of %s."
 msgstr "ppdc: %s のあとに name/text が必要です。%d 行目、ファイル名 %s。"
 
-#: ppdc/ppdc-source.cxx:1245
 #, c-format
 msgid "ppdc: Expected name/text after Installable on line %d of %s."
-msgstr "ppdc: %d 行目、ファイル名 %s において Installable のあとに name/text が必要です。"
+msgstr ""
+"ppdc: %d 行目、ファイル名 %s において Installable のあとに name/text が必要で"
+"す。"
 
-#: ppdc/ppdc-source.cxx:1782
 #, c-format
 msgid "ppdc: Expected name/text after Resolution on line %d of %s."
-msgstr "ppdc: %d 行目、ファイル名 %s において Resolution のあとに name/text が必要です。"
+msgstr ""
+"ppdc: %d 行目、ファイル名 %s において Resolution のあとに name/text が必要で"
+"す。"
 
-#: ppdc/ppdc-source.cxx:479
 #, c-format
 msgid "ppdc: Expected name/text combination for ColorModel on line %d of %s."
 msgstr ""
 "ppdc: %d 行目、ファイル名 %s において ColorModel に対する name/text が必要で"
 "す。"
 
-#: ppdc/ppdc-source.cxx:1574
 #, c-format
 msgid "ppdc: Expected option name/text on line %d of %s."
 msgstr "ppdc: %d 行目、ファイル名 %s において option name/text が必要です。"
 
-#: ppdc/ppdc-source.cxx:1608
 #, c-format
 msgid "ppdc: Expected option section on line %d of %s."
 msgstr "ppdc: %d 行目、ファイル名 %s において option section が必要です。"
 
-#: ppdc/ppdc-source.cxx:1586
 #, c-format
 msgid "ppdc: Expected option type on line %d of %s."
 msgstr "ppdc: %d 行目、ファイル名 %s において option type が必要です。"
 
-#: ppdc/ppdc-source.cxx:1765
 #, c-format
 msgid "ppdc: Expected override field after Resolution on line %d of %s."
-msgstr "ppdc: %d 行目、ファイル名 %s において Resolution のあとに override field が必要です。"
+msgstr ""
+"ppdc: %d 行目、ファイル名 %s において Resolution のあとに override field が必"
+"要です。"
 
-#: ppdc/ppdc-catalog.cxx:341 ppdc/ppdc-catalog.cxx:353
 #, c-format
 msgid "ppdc: Expected quoted string on line %d of %s."
 msgstr "%d 行: %s には引用符で囲まれた文字列が必要です。"
 
-#: ppdc/ppdc-source.cxx:1004
 #, c-format
 msgid "ppdc: Expected real number on line %d of %s."
 msgstr "ppdc: %d 行目、ファイル名 %s において実数が必要です。"
 
-#: ppdc/ppdc-source.cxx:572
 #, c-format
 msgid ""
 "ppdc: Expected resolution/mediatype following ColorProfile on line %d of %s."
@@ -6624,7 +5211,6 @@ msgstr ""
 "ppdc: %d 行目、ファイル名 %s において ColorProfile に続いて resolution/"
 "mediatype が必要です。"
 
-#: ppdc/ppdc-source.cxx:1863
 #, c-format
 msgid ""
 "ppdc: Expected resolution/mediatype following SimpleColorProfile on line %d "
@@ -6633,341 +5219,299 @@ msgstr ""
 "ppdc: %d 行目、ファイル名 %s において SimpleColorProfile に続いて resolution/"
 "mediatype が必要です。"
 
-#: ppdc/ppdc-source.cxx:361
 #, c-format
 msgid "ppdc: Expected selector after %s on line %d of %s."
 msgstr "ppdc: %s のあとに selector が必要です。%d 行目、ファイル名 %s。"
 
-#: ppdc/ppdc-source.cxx:1101
 #, c-format
 msgid "ppdc: Expected status after Font on line %d of %s."
-msgstr "ppdc: %d 行目、ファイル名 %s において Font のあとに status が必要です。"
+msgstr ""
+"ppdc: %d 行目、ファイル名 %s において Font のあとに status が必要です。"
 
-#: ppdc/ppdc-source.cxx:2794
 #, c-format
 msgid "ppdc: Expected string after Copyright on line %d of %s."
-msgstr "ppdc: %d 行目、ファイル名 %s において Copyright のあとに文字列が必要です。"
+msgstr ""
+"ppdc: %d 行目、ファイル名 %s において Copyright のあとに文字列が必要です。"
 
-#: ppdc/ppdc-source.cxx:3397
 #, c-format
 msgid "ppdc: Expected string after Version on line %d of %s."
-msgstr "ppdc: %d 行目、ファイル名 %s において Version のあとに文字列が必要です。"
+msgstr ""
+"ppdc: %d 行目、ファイル名 %s において Version のあとに文字列が必要です。"
 
-#: ppdc/ppdc-source.cxx:728
 #, c-format
 msgid "ppdc: Expected two option names on line %d of %s."
 msgstr "ppdc: %d 行目、ファイル名 %s において 2 つのオプション名が必要です。"
 
-#: ppdc/ppdc-source.cxx:372
 #, c-format
 msgid "ppdc: Expected value after %s on line %d of %s."
 msgstr "ppdc: %s のあとに value が必要です。%d 行目、ファイル名 %s。"
 
-#: ppdc/ppdc-source.cxx:1085
 #, c-format
 msgid "ppdc: Expected version after Font on line %d of %s."
-msgstr "ppdc: %d 行目、ファイル名 %s において Font のあとに version が必要です。"
+msgstr ""
+"ppdc: %d 行目、ファイル名 %s において Font のあとに version が必要です。"
 
-#: ppdc/ppdc-source.cxx:227
 #, c-format
 msgid "ppdc: Invalid #include/#po filename \"%s\"."
 msgstr "ppdc: 無効な #include/#po ファイル名です \"%s\"。"
 
-#: ppdc/ppdc-source.cxx:972
 #, c-format
 msgid "ppdc: Invalid cost for filter on line %d of %s."
 msgstr ""
 "ppdc: %d 行目、ファイル名 %s においてフィルターに対する無効な cost がありま"
 "す。"
 
-#: ppdc/ppdc-source.cxx:964
 #, c-format
 msgid "ppdc: Invalid empty MIME type for filter on line %d of %s."
-msgstr "ppdc: %d 行目、ファイル名 %s においてフィルターに対する無効な空の MIME タイプがあります。"
+msgstr ""
+"ppdc: %d 行目、ファイル名 %s においてフィルターに対する無効な空の MIME タイプ"
+"があります。"
 
-#: ppdc/ppdc-source.cxx:980
 #, c-format
 msgid "ppdc: Invalid empty program name for filter on line %d of %s."
-msgstr "ppdc: %d 行目、ファイル名 %s においてフィルターに対するプログラム名が空であり無効です。"
+msgstr ""
+"ppdc: %d 行目、ファイル名 %s においてフィルターに対するプログラム名が空であり"
+"無効です。"
 
-#: ppdc/ppdc-source.cxx:1628
 #, c-format
 msgid "ppdc: Invalid option section \"%s\" on line %d of %s."
 msgstr ""
 "ppdc: 無効な option section があります \"%s\"。%d 行目、ファイル名 %s。"
 
-#: ppdc/ppdc-source.cxx:1600
 #, c-format
 msgid "ppdc: Invalid option type \"%s\" on line %d of %s."
 msgstr "ppdc: 無効な option type があります \"%s\"。%d 行目、ファイル名 %s。"
 
-#: ppdc/ppdc.cxx:251 ppdc/ppdpo.cxx:123
 #, c-format
 msgid "ppdc: Loading driver information file \"%s\"."
 msgstr "ppdc: ドライバー情報ファイル \"%s\" を読み込んでいます。"
 
-#: ppdc/ppdc.cxx:187
 #, c-format
 msgid "ppdc: Loading messages for locale \"%s\"."
 msgstr "ppdc: ロケール \"%s\" のメッセージを読み込んでいます。"
 
-#: ppdc/ppdc.cxx:126
 #, c-format
 msgid "ppdc: Loading messages from \"%s\"."
 msgstr "ppdc: \"%s\" からメッセージを読み込んでいます。"
 
-#: ppdc/ppdc-source.cxx:2412 ppdc/ppdc-source.cxx:2644
 #, c-format
 msgid "ppdc: Missing #endif at end of \"%s\"."
 msgstr "ppdc: \"%s\" の最後に #endif が見つかりません。"
 
-#: ppdc/ppdc-source.cxx:2513 ppdc/ppdc-source.cxx:2548
-#: ppdc/ppdc-source.cxx:2578
 #, c-format
 msgid "ppdc: Missing #if on line %d of %s."
 msgstr "ppdc: %d 行目、ファイル名 %s において #if が見つかりません。"
 
-#: ppdc/ppdc-catalog.cxx:418
 #, c-format
 msgid ""
 "ppdc: Need a msgid line before any translation strings on line %d of %s."
 msgstr "%d 行: %s の翻訳文字列の前に msgid 行が必要です。"
 
-#: ppdc/ppdc-driver.cxx:730
 #, c-format
 msgid "ppdc: No message catalog provided for locale %s."
 msgstr "ppdc: ロケール %s に対するメッセージカタログが見つかりません。"
 
-#: ppdc/ppdc-source.cxx:1651 ppdc/ppdc-source.cxx:2882
-#: ppdc/ppdc-source.cxx:2968 ppdc/ppdc-source.cxx:3061
-#: ppdc/ppdc-source.cxx:3194 ppdc/ppdc-source.cxx:3327
 #, c-format
 msgid "ppdc: Option %s defined in two different groups on line %d of %s."
 msgstr ""
 "ppdc: オプション %s が行 %d、ファイル %s の 2 つの異なるグループで定義されて"
 "います。"
 
-#: ppdc/ppdc-source.cxx:1644
 #, c-format
 msgid "ppdc: Option %s redefined with a different type on line %d of %s."
 msgstr ""
 "ppdc: オプション %s は異なる型で再定義されています。%d 行目、ファイル名 %s。"
 
-#: ppdc/ppdc-source.cxx:705
 #, c-format
 msgid "ppdc: Option constraint must *name on line %d of %s."
-msgstr "ppdc: %d 行目、ファイル名 %s において Option constraint は *name で指定しなければなりません。"
+msgstr ""
+"ppdc: %d 行目、ファイル名 %s において Option constraint は *name で指定しなけ"
+"ればなりません。"
 
-#: ppdc/ppdc-source.cxx:2495
 #, c-format
 msgid "ppdc: Too many nested #if's on line %d of %s."
 msgstr "ppdc: %d 行目、ファイル名 %s において #if のネストが多すぎます。"
 
-#: ppdc/ppdc.cxx:374
 #, c-format
 msgid "ppdc: Unable to create PPD file \"%s\" - %s."
 msgstr "ppdc: PPD ファイル \"%s\" を作成できません - %s。"
 
-#: ppdc/ppdc.cxx:266
 #, c-format
 msgid "ppdc: Unable to create output directory %s: %s"
 msgstr "ppdc: 出力ディレクトリー \"%s\" を作成できません - %s"
 
-#: ppdc/ppdc.cxx:287
 #, c-format
 msgid "ppdc: Unable to create output pipes: %s"
 msgstr "ppdc: 出力パイプを作成できません: %s"
 
-#: ppdc/ppdc.cxx:303 ppdc/ppdc.cxx:309
 #, c-format
 msgid "ppdc: Unable to execute cupstestppd: %s"
 msgstr "ppdc: cupstestppd を実行できません: %s"
 
-#: ppdc/ppdc-source.cxx:1730
 #, c-format
 msgid "ppdc: Unable to find #po file %s on line %d of %s."
 msgstr "ppdc: #po ファイル %s が見つかりません。%d 行目、ファイル名 %s。"
 
-#: ppdc/ppdc-source.cxx:2651
 #, c-format
 msgid "ppdc: Unable to find include file \"%s\" on line %d of %s."
 msgstr ""
 "ppdc: インクルードファイル %s が見つかりません。%d 行目、ファイル名 %s。"
 
-#: ppdc/ppdc.cxx:198
 #, c-format
 msgid "ppdc: Unable to find localization for \"%s\" - %s"
 msgstr "ppdc:  \"%s\" に対する地域化情報が見つかりません - %s"
 
-#: ppdc/ppdc.cxx:135
 #, c-format
 msgid "ppdc: Unable to load localization file \"%s\" - %s"
 msgstr "ppdc:  \"%s\" に対するローカライズファイルを読み込めません - %s"
 
-#: ppdc/ppdc-file.cxx:50
 #, c-format
 msgid "ppdc: Unable to open %s: %s"
 msgstr "ppdc: %s を開けません: %s"
 
-#: ppdc/ppdc-source.cxx:2054
 #, c-format
 msgid "ppdc: Undefined variable (%s) on line %d of %s."
 msgstr "ppdc: 変数 (%s) は未定義です。%d 行目、ファイル名 %s。"
 
-#: ppdc/ppdc-catalog.cxx:435
 #, c-format
 msgid "ppdc: Unexpected text on line %d of %s."
 msgstr "%d 行: %s は予期せぬテキストです。"
 
-#: ppdc/ppdc-source.cxx:2924
 #, c-format
 msgid "ppdc: Unknown driver type %s on line %d of %s."
 msgstr "ppdc: %s は未知のドライバータイプです。%d 行目、ファイル名 %s。"
 
-#: ppdc/ppdc-source.cxx:906
 #, c-format
 msgid "ppdc: Unknown duplex type \"%s\" on line %d of %s."
 msgstr "ppdc: \"%s\" は未知の両面タイプです。%d 行目、ファイル名 %s。"
 
-#: ppdc/ppdc-source.cxx:3154
 #, c-format
 msgid "ppdc: Unknown media size \"%s\" on line %d of %s."
 msgstr "ppdc: \"%s\" は未知の用紙サイズです。%d 行目、ファイル名 %s。"
 
-#: ppdc/ppdc-catalog.cxx:463
 #, c-format
 msgid "ppdc: Unknown message catalog format for \"%s\"."
 msgstr "\"%s\" は未知のメッセージカタログの書式です。"
 
-#: ppdc/ppdc-source.cxx:3408
 #, c-format
 msgid "ppdc: Unknown token \"%s\" seen on line %d of %s."
 msgstr "ppdc: 未知のトークン \"%s\" があります。%d 行目、ファイル名 %s。"
 
-#: ppdc/ppdc-source.cxx:1014
 #, c-format
 msgid ""
 "ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s."
 msgstr "ppdc: 実数 \"%s\" に未知の終了文字があります。%d 行目、ファイル名 %s。"
 
-#: ppdc/ppdc-source.cxx:2164
 #, c-format
 msgid "ppdc: Unterminated string starting with %c on line %d of %s."
 msgstr ""
 "ppdc: %c で始まる文字に対して終端文字がありません。%d 行目、ファイル名 %s。"
 
-#: ppdc/ppdc.cxx:365
 #, c-format
 msgid "ppdc: Warning - overlapping filename \"%s\"."
 msgstr "ppdc: 警告 - ファイル名 \"%s\" が重複しています。"
 
-#: ppdc/ppdc.cxx:380
 #, c-format
 msgid "ppdc: Writing %s."
 msgstr "ppdc: %s を書き込んでいます。"
 
-#: ppdc/ppdc.cxx:148
 #, c-format
 msgid "ppdc: Writing PPD files to directory \"%s\"."
 msgstr "ppdc: ディレクトリー \"%s\" に PPD ファイルを書き込んでいます。"
 
-#: ppdc/ppdmerge.cxx:136
 #, c-format
 msgid "ppdmerge: Bad LanguageVersion \"%s\" in %s."
 msgstr "ppdmerge: 不正な LanguageVersion \"%s\" が %s にあります。"
 
-#: ppdc/ppdmerge.cxx:176
 #, c-format
 msgid "ppdmerge: Ignoring PPD file %s."
 msgstr "ppdmerge: PPD ファイル %s を無視します。"
 
-#: ppdc/ppdmerge.cxx:160
 #, c-format
 msgid "ppdmerge: Unable to backup %s to %s - %s"
 msgstr "ppdmerge: %s を %s にバックアップできません - %s"
 
-#: systemv/lpstat.c:1784
 #, c-format
 msgid "printer %s disabled since %s -"
 msgstr "プリンター %s は %s から無効です -"
 
-#: systemv/lpstat.c:1773
 #, c-format
 msgid "printer %s is idle.  enabled since %s"
 msgstr "プリンター %s は待機中です。%s 以来有効です"
 
-#: systemv/lpstat.c:1778
 #, c-format
 msgid "printer %s now printing %s-%d.  enabled since %s"
 msgstr "プリンター %s は %s-%d を印刷しています。%s 以来有効です"
 
-#: systemv/lpstat.c:1909
 #, c-format
 msgid "printer %s/%s disabled since %s -"
 msgstr "プリンター %s/%s は %s から無効です -"
 
-#: systemv/lpstat.c:1895
 #, c-format
 msgid "printer %s/%s is idle.  enabled since %s"
 msgstr "プリンター %s/%s は待機中です。%s 以来有効です"
 
-#: systemv/lpstat.c:1902
 #, c-format
 msgid "printer %s/%s now printing %s-%d.  enabled since %s"
 msgstr "プリンター %s/%s は現在 %s-%d を印刷中です。%s 以来有効です"
 
-#: cups/notify.c:93 cups/notify.c:134
 msgid "processing"
 msgstr "処理中"
 
-#: systemv/lp.c:644
 #, c-format
 msgid "request id is %s-%d (%d file(s))"
 msgstr "リクエスト ID は %s-%d です (%d 個のファイル)"
 
-#: cups/snmp.c:1020
 msgid "request-id uses indefinite length"
 msgstr "リクエスト ID の長さが不定"
 
-#: systemv/lpstat.c:2048
 msgid "scheduler is not running"
 msgstr "スケジューラーは動作していません"
 
-#: systemv/lpstat.c:2044
 msgid "scheduler is running"
 msgstr "スケジューラーは動作中です"
 
-#: cups/adminutil.c:2159
 #, c-format
 msgid "stat of %s failed: %s"
 msgstr "%s の状態取得に失敗しました: %s"
 
-#: berkeley/lpc.c:211
 msgid "status\t\tShow status of daemon and queue."
 msgstr "status\t\tデーモンとキューの状態を表示"
 
-#: cups/notify.c:96 cups/notify.c:137
 msgid "stopped"
 msgstr "停止"
 
-#: systemv/lpstat.c:1017
 #, c-format
 msgid "system default destination: %s"
 msgstr "システムのデフォルトの宛先: %s"
 
-#: systemv/lpstat.c:1014
 #, c-format
 msgid "system default destination: %s/%s"
 msgstr "システムのデフォルトの宛先: %s/%s"
 
-#: cups/notify.c:108 cups/notify.c:140
 msgid "unknown"
 msgstr "未知"
 
-#: cups/notify.c:117
 msgid "untitled"
 msgstr "タイトルなし"
 
-#: cups/snmp.c:1045
 msgid "variable-bindings uses indefinite length"
 msgstr "variable-bindings の長さが不定"
+
+#~ msgid "%s: Error - expected destination after \"-b\" option."
+#~ msgstr "%s: エラー - \"-b\" オプションのあとに宛先が必要です。"
+
+#~ msgid "Print file accepted - job ID %d."
+#~ msgstr "プリントファイルを受け付けました - ジョブ ID %d。"
+
+#~ msgid "Print file accepted - job ID unknown."
+#~ msgstr "NOTICE: プリントファイルを受け付けました - ジョブ ID 不明。"
+
+#~ msgid "Print file was not accepted."
+#~ msgstr "プリントファイルが受け付けられませんでした。"
+
+#~ msgid "The printer URI is incorrect or no longer exists."
+#~ msgstr "プリンター URI が誤っているか、もう存在しません。"
+
+#~ msgid "The printer does not support IPP/%d.%d, trying IPP/%s."
+#~ msgstr "プリンターが IPP/%d.%d をサポートしていません。IPP/%s を試します。"
index 4170d493b6ba0516125fb8df063a59b7a014f487..e369975bc21c42f28fea3d7cd8014ff29d14f840 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   TBCP port monitor for CUPS.
  *
- *   Copyright 2007-2010 by Apple Inc.
+ *   Copyright 2007-2012 by Apple Inc.
  *   Copyright 1993-2006 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
@@ -93,11 +93,8 @@ main(int  argc,                              /* I - Number of command-line args */
     */
 
     linelen = sizeof(line);
-    if (psgets(line, &linelen, fp) == NULL)
-    {
-      fputs("ERROR: Empty print file!\n", stderr);
-      return (1);
-    }
+    if (!psgets(line, &linelen, fp))
+      break;
 
    /*
     * Handle leading PJL fun...
index d4d6ac8b48e809de789168633307ae6af3f52247..e3c35658a50c2cb28455b48fa0303cf37fc274b6 100644 (file)
 
 static const char      * const http_states[] =
                        {               /* HTTP state strings */
-                         "HTTP_WAITING",
-                         "HTTP_OPTIONS",
-                         "HTTP_GET",
-                         "HTTP_GET_SEND",
-                         "HTTP_HEAD",
-                         "HTTP_POST",
-                         "HTTP_POST_RECV",
-                         "HTTP_POST_SEND",
-                         "HTTP_PUT",
-                         "HTTP_PUT_RECV",
-                         "HTTP_DELETE",
-                         "HTTP_TRACE",
-                         "HTTP_CLOSE",
-                         "HTTP_STATUS"
+                         "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"
                        };
 static const char      * const ipp_states[] =
                        {               /* IPP state strings */
@@ -202,7 +205,7 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */
   * Save the connected port number...
   */
 
-  _httpAddrSetPort(con->http.hostaddr, _httpAddrPort(&(lis->address)));
+  _httpAddrSetPort(con->http.hostaddr, httpAddrPort(&(lis->address)));
 
 #ifdef AF_INET6
  /*
@@ -379,7 +382,7 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */
 #endif /* AF_LOCAL */
   cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] Accepted from %s:%d (IPv%d)",
                   con->http.fd, con->http.hostname,
-                 _httpAddrPort(con->http.hostaddr),
+                 httpAddrPort(con->http.hostaddr),
                  _httpAddrFamily(con->http.hostaddr) == AF_INET ? 4 : 6);
 
  /*
@@ -411,7 +414,7 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */
     else
       httpAddrString(&temp, con->servername, sizeof(con->servername));
 
-    con->serverport = _httpAddrPort(&(lis->address));
+    con->serverport = httpAddrPort(&(lis->address));
   }
 
  /*
@@ -687,12 +690,12 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
                  "error=%d, "
                  "used=%d, "
                  "state=%s, "
-                 "data_encoding=HTTP_ENCODE_%s, "
+                 "data_encoding=HTTP_ENCODING_%s, "
                  "data_remaining=" CUPS_LLFMT ", "
                  "request=%p(%s), "
                  "file=%d",
                  con->http.fd, con->http.error, con->http.used,
-                 http_states[con->http.state],
+                 http_states[con->http.state + 1],
                  con->http.data_encoding == HTTP_ENCODE_CHUNKED ?
                      "CHUNKED" : "LENGTH",
                  CUPS_LLCAST con->http.data_remaining,
@@ -1124,7 +1127,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
        }
 
        httpPrintf(HTTP(con), "Connection: Upgrade\r\n");
-       httpPrintf(HTTP(con), "Upgrade: TLS/1.0,HTTP/1.1\r\n");
+       httpPrintf(HTTP(con), "Upgrade: TLS/1.2,TLS/1.1,TLS/1.0\r\n");
        httpPrintf(HTTP(con), "Content-Length: 0\r\n");
        httpPrintf(HTTP(con), "\r\n");
 
@@ -1198,7 +1201,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
        }
 
        httpPrintf(HTTP(con), "Connection: Upgrade\r\n");
-       httpPrintf(HTTP(con), "Upgrade: TLS/1.0,HTTP/1.1\r\n");
+       httpPrintf(HTTP(con), "Upgrade: TLS/1.2,TLS/1.1,TLS/1.0\r\n");
        httpPrintf(HTTP(con), "Content-Length: 0\r\n");
        httpPrintf(HTTP(con), "\r\n");
 
@@ -1824,7 +1827,9 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
                return;
              }
 
-             con->http.state = HTTP_WAITING;
+             con->http.state = HTTP_STATE_WAITING;
+             DEBUG_puts("cupsdReadClient: Set state to HTTP_STATE_WAITING "
+                        "after HEAD.");
              break;
            }
 
@@ -1953,7 +1958,9 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
              return;
            }
 
-            con->http.state = HTTP_WAITING;
+            con->http.state = HTTP_STATE_WAITING;
+           DEBUG_puts("cupsdReadClient: Set state to HTTP_STATE_WAITING "
+                      "after HEAD.");
             break;
 
        default :
@@ -2175,7 +2182,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
            {
              cupsdLogMessage(CUPSD_LOG_DEBUG,
                              "[Client %d] Closing on unexpected state %s.",
-                             con->http.fd, http_states[con->http.state]);
+                             con->http.fd, http_states[con->http.state + 1]);
              cupsdCloseClient(con);
              return;
            }
@@ -2397,7 +2404,7 @@ cupsdSendError(cupsd_client_t *con,       /* I - Connection */
     if (httpPrintf(HTTP(con), "Connection: Upgrade\r\n") < 0)
       return (0);
 
-  if (httpPrintf(HTTP(con), "Upgrade: TLS/1.0,HTTP/1.1\r\n") < 0)
+  if (httpPrintf(HTTP(con), "Upgrade: TLS/1.2,TLS/1.1,TLS/1.0\r\n") < 0)
     return (0);
 #endif /* HAVE_SSL */
 
@@ -2487,7 +2494,9 @@ cupsdSendError(cupsd_client_t *con,       /* I - Connection */
   if (cupsdFlushHeader(con) < 0)
     return (0);
 
-  con->http.state = HTTP_WAITING;
+  con->http.state = HTTP_STATE_WAITING;
+
+  DEBUG_puts("cupsdSendError: Set state to HTTP_STATE_WAITING.");
 
   return (1);
 }
@@ -2725,7 +2734,7 @@ cupsdWriteClient(cupsd_client_t *con)     /* I - Client connection */
                  "pipe_pid=%d, "
                  "file=%d",
                  con->http.fd, con->http.error, con->http.used,
-                 http_states[con->http.state],
+                 http_states[con->http.state + 1],
                  con->http.data_encoding == HTTP_ENCODE_CHUNKED ?
                      "CHUNKED" : "LENGTH",
                  CUPS_LLCAST con->http.data_remaining,
@@ -2743,7 +2752,7 @@ cupsdWriteClient(cupsd_client_t *con)     /* I - Client connection */
 
     cupsdLogMessage(CUPSD_LOG_DEBUG,
                    "[Client %d] Closing on unexpected HTTP state %s.",
-                   con->http.fd, http_states[con->http.state]);
+                   con->http.fd, http_states[con->http.state + 1]);
     cupsdCloseClient(con);
     return;
   }
index 9b48da5032b4d200c2e9a99cd50d74058b4d7225..3c9fcaf33b7e161eab08e1e2964e225f39c1dea6 100644 (file)
@@ -2680,7 +2680,7 @@ read_configuration(cups_file_t *fp)       /* I - File to read from */
             lis;
             lis = (cupsd_listener_t *)cupsArrayNext(Listeners))
           if (httpAddrEqual(&(addr->addr), &(lis->address)) &&
-             _httpAddrPort(&(addr->addr)) == _httpAddrPort(&(lis->address)))
+             httpAddrPort(&(addr->addr)) == httpAddrPort(&(lis->address)))
            break;
 
         if (lis)
@@ -2736,11 +2736,11 @@ read_configuration(cups_file_t *fp)     /* I - File to read from */
        else
 #endif /* AF_LOCAL */
        cupsdLogMessage(CUPSD_LOG_INFO, "Listening to %s:%d (IPv%d)", temp,
-                        _httpAddrPort(&(lis->address)),
+                        httpAddrPort(&(lis->address)),
                        _httpAddrFamily(&(lis->address)) == AF_INET ? 4 : 6);
 
         if (!httpAddrLocalhost(&(lis->address)))
-         RemotePort = _httpAddrPort(&(lis->address));
+         RemotePort = httpAddrPort(&(lis->address));
       }
 
      /*
index 4343007748ef068ed5a7a5168892321b130b2b37..51783eecb26d83dd1ec31ec54cd6bbf73bbd20ef 100644 (file)
 
 typedef enum
 {
-  CUPSD_LOG_PPD = -4,                  /* Used internally for PPD keywords */
+  CUPSD_LOG_PPD = -5,                  /* Used internally for PPD keywords */
   CUPSD_LOG_ATTR,                      /* Used internally for attributes */
-  CUPSD_LOG_STATE,                     /* Used internally for state-reasons */
+  CUPSD_LOG_STATE,                     /* Used internally for printer-state-reasons */
+  CUPSD_LOG_JOBSTATE,                  /* Used internally for job-state-reasons */
   CUPSD_LOG_PAGE,                      /* Used internally for page logging */
   CUPSD_LOG_NONE,
   CUPSD_LOG_EMERG,                     /* Emergency issues */
index 6dfdb1361e5c0c4e8c9ca68ffc287c3e9f5a28d8..74459f7f6f5db11164ca7f3d51f8d8f4c5a26475 100644 (file)
@@ -258,7 +258,7 @@ cupsdStartBrowsing(void)
       if (httpAddrLocalhost(&(lis->address)))
        continue;
 
-      DNSSDPort = _httpAddrPort(&(lis->address));
+      DNSSDPort = httpAddrPort(&(lis->address));
       break;
     }
 
@@ -1333,6 +1333,8 @@ dnssdStop(void)
   DNSSDMaster = NULL;
 
 #  else /* HAVE_AVAHI */
+  avahi_threaded_poll_stop(DNSSDMaster);
+
   avahi_client_free(DNSSDClient);
   DNSSDClient = NULL;
 
index e52c2846282db449136fd91367de8674bfecc84b..c32b0d14f1f2ced323905267f8261e5ed15cd3b3 100644 (file)
@@ -751,7 +751,6 @@ cupsdProcessIPPRequest(
        {
          struct stat   fileinfo;       /* File information */
 
-
           if (!fstat(con->file, &fileinfo))
            length += fileinfo.st_size;
        }
@@ -5315,6 +5314,7 @@ create_requested_array(ipp_t *request)    /* I - IPP request */
       cupsArrayAdd(ra, "date-time-at-completed");
       cupsArrayAdd(ra, "date-time-at-creation");
       cupsArrayAdd(ra, "date-time-at-processing");
+      cupsArrayAdd(ra, "job-charge-info");
       cupsArrayAdd(ra, "job-detailed-status-message");
       cupsArrayAdd(ra, "job-document-access-errors");
       cupsArrayAdd(ra, "job-id");
@@ -5384,6 +5384,7 @@ create_requested_array(ipp_t *request)    /* I - IPP request */
       cupsArrayAdd(ra, "pdl-override-supported");
       cupsArrayAdd(ra, "printer-alert");
       cupsArrayAdd(ra, "printer-alert-description");
+      cupsArrayAdd(ra, "printer-charge-info-uri");
       cupsArrayAdd(ra, "printer-commands");
       cupsArrayAdd(ra, "printer-current-time");
       cupsArrayAdd(ra, "printer-dns-sd-name");
index 2f5002fb76e84929450acdc02331b97b227df1b6..72ef3e8690e3818c9b9e60f4081de1b00e6d4fe9 100644 (file)
@@ -2978,7 +2978,8 @@ finalize_job(cupsd_job_t *job,            /* I - Job */
   * rarely have current information for network devices...
   */
 
-  if (strncmp(job->printer->device_uri, "usb:", 4))
+  if (strncmp(job->printer->device_uri, "usb:", 4) &&
+      strncmp(job->printer->device_uri, "ippusb:", 7))
     cupsdSetPrinterReasons(job->printer, "-offline-report");
 
  /*
@@ -2989,10 +2990,11 @@ finalize_job(cupsd_job_t *job,          /* I - Job */
   job->profile = NULL;
 
  /*
-  * Clear the unresponsive job watchdog timer...
+  * Clear the unresponsive job watchdog timers...
   */
 
-  job->kill_time = 0;
+  job->cancel_time = 0;
+  job->kill_time   = 0;
 
  /*
   * Close pipes and status buffer...
@@ -3084,6 +3086,8 @@ finalize_job(cupsd_job_t *job,            /* I - Job */
                    exit_code == CUPS_BACKEND_HOLD ? "hold job" :
                    exit_code == CUPS_BACKEND_STOP ? "stop printer" :
                    exit_code == CUPS_BACKEND_CANCEL ? "cancel job" :
+                   exit_code == CUPS_BACKEND_RETRY ? "retry job later" :
+                   exit_code == CUPS_BACKEND_RETRY_CURRENT ? "retry job immediately" :
                    exit_code < 0 ? "crashed" : "unknown");
 
    /*
@@ -3257,8 +3261,9 @@ finalize_job(cupsd_job_t *job,            /* I - Job */
            job_state = IPP_JOB_HELD;
            message   = "Job held for authentication.";
 
-           ippSetString(job->attrs, &job->reasons, 0,
-                        "cups-held-for-authentication");
+            if (strncmp(job->reasons->values[0].string.text, "account-", 8))
+             ippSetString(job->attrs, &job->reasons, 0,
+                          "cups-held-for-authentication");
           }
           break;
 
@@ -3655,10 +3660,12 @@ get_options(cupsd_job_t *job,           /* I - Job */
       if (!strncmp(attr->name, "job-", 4) &&
           strcmp(attr->name, "job-account-id") &&
           strcmp(attr->name, "job-accounting-user-id") &&
+          strcmp(attr->name, "job-authorization-uri") &&
           strcmp(attr->name, "job-billing") &&
           strcmp(attr->name, "job-impressions") &&
           strcmp(attr->name, "job-originating-host-name") &&
           strcmp(attr->name, "job-password") &&
+          strcmp(attr->name, "job-password-encryption") &&
           strcmp(attr->name, "job-uuid") &&
           !(job->printer->type & CUPS_PRINTER_REMOTE))
        continue;
@@ -4701,6 +4708,17 @@ update_job(cupsd_job_t *job)             /* I - Job to check */
        cupsdAddEvent(CUPSD_EVENT_JOB_PROGRESS, job->printer, job,
                      "Printed %d page(s).", job->sheets->values[0].integer);
     }
+    else if (loglevel == CUPSD_LOG_JOBSTATE)
+    {
+     /*
+      * Support "keyword" to set job-state-reasons to the specified keyword.
+      * This is sufficient for the current paid printing stuff.
+      */
+
+      cupsdLogJob(job, CUPSD_LOG_DEBUG, "JOBSTATE: %s", message);
+
+      ippSetString(job->attrs, &job->reasons, 0, message);
+    }
     else if (loglevel == CUPSD_LOG_STATE)
     {
       cupsdLogJob(job, CUPSD_LOG_DEBUG, "STATE: %s", message);
index 16528b9dd339ed4bcbd2cf8f86741c8f552a5487..208cbbbaedbf35cb5fd1e0abeb1705cbcb62ffbf 100644 (file)
@@ -151,7 +151,7 @@ cupsdStartListening(void)
        lis = (cupsd_listener_t *)cupsArrayNext(Listeners))
   {
     httpAddrString(&(lis->address), s, sizeof(s));
-    p = _httpAddrPort(&(lis->address));
+    p = httpAddrPort(&(lis->address));
 
    /*
     * If needed, create a socket for listening...
index 07b0c153407b32ebb2a0d0f5d1625b2d030e4c32..b0185e1aba3baf9ac4adc3191477b5f80cb72203 100644 (file)
@@ -1424,7 +1424,7 @@ launchd_checkin(void)
        lis->fd = fd;
 
 #  ifdef HAVE_SSL
-       if (_httpAddrPort(&(lis->address)) == 443)
+       if (httpAddrPort(&(lis->address)) == 443)
          lis->encryption = HTTP_ENCRYPT_ALWAYS;
 #  endif /* HAVE_SSL */
       }
index 87e660ce312b91a7084e8d0a5d3af1efdf7128bd..bf0dea7585e45783262ac0153fde701064348436 100644 (file)
@@ -264,7 +264,7 @@ cupsdNetIFUpdate(void)
 
       if (match)
       {
-        temp->port = _httpAddrPort(&(lis->address));
+        temp->port = httpAddrPort(&(lis->address));
        break;
       }
     }
index b7b84c13e446184ff547bf338cb089e194f9e5cb..ea2f8dda516d58766c0ec6a02d35b029c8e359c6 100644 (file)
@@ -3781,6 +3781,10 @@ load_ppd(cupsd_printer_t *p)             /* I - Printer */
     ippAddBoolean(p->ppd_attrs, IPP_TAG_PRINTER, "color-supported",
                  ppd->color_device);
 
+    if (p->pc && p->pc->charge_info_uri)
+      ippAddString(p->ppd_attrs, IPP_TAG_PRINTER, IPP_TAG_URI,
+                   "printer-charge-info-uri", NULL, p->pc->charge_info_uri);
+
     if (p->pc && p->pc->account_id)
       ippAddBoolean(p->ppd_attrs, IPP_TAG_PRINTER, "job-account-id-supported",
                     1);
index e719aebdba29b3fb89ae1f246189eeffce450063..7d500d4c1f3c6c2d526a3e973cbb4ffd32051767 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   Status buffer routines for the CUPS scheduler.
  *
- *   Copyright 2007-2010 by Apple Inc.
+ *   Copyright 2007-2012 by Apple Inc.
  *   Copyright 1997-2006 by Easy Software Products, all rights reserved.
  *
  *   These coded instructions, statements, and computer programs are the
@@ -119,7 +119,7 @@ cupsdStatBufNew(int        fd,              /* I - File descriptor of pipe */
 char *                                 /* O - Line from buffer, "", or NULL */
 cupsdStatBufUpdate(
     cupsd_statbuf_t *sb,               /* I - Status buffer */
-    int             *loglevel,         /* O - Log level */ 
+    int             *loglevel,         /* O - Log level */
     char            *line,             /* I - Line buffer */
     int             linelen)           /* I - Size of line buffer */
 {
@@ -258,6 +258,11 @@ cupsdStatBufUpdate(
     *loglevel = CUPSD_LOG_STATE;
     message   = sb->buffer + 6;
   }
+  else if (!strncmp(sb->buffer, "JOBSTATE:", 9))
+  {
+    *loglevel = CUPSD_LOG_JOBSTATE;
+    message   = sb->buffer + 9;
+  }
   else if (!strncmp(sb->buffer, "ATTR:", 5))
   {
     *loglevel = CUPSD_LOG_ATTR;
index 491b14640b070303dfd77b433c70d741b0a74be5..eb918d879fb75e37620726d5739fec8ea4151dc9 100644 (file)
@@ -3217,7 +3217,8 @@ check_sizes(ppd_file_t *ppd,              /* I - PPD file */
                           _PWG_FROMPTS(size->width);
       pwg_media      = _pwgMediaForSize(width_2540ths, length_2540ths);
 
-      if (pwg_media && pwg_media->ppd && (pwg_media->ppd[0] < 'a' || pwg_media->ppd[0] > 'z'))
+      if (pwg_media && pwg_media->ppd &&
+          (pwg_media->ppd[0] < 'a' || pwg_media->ppd[0] > 'z'))
       {
         size_t ppdlen = strlen(pwg_media->ppd);
                                        /* Length of standard PPD name */
@@ -3279,8 +3280,8 @@ check_sizes(ppd_file_t *ppd,              /* I - PPD file */
          * Check for EnvSizeName as well...
          */
 
-      if (strncmp(pwg_media->ppd, "Env", 3) &&
-          !strncmp(size->name, "Env", 3))
+         if (strncmp(pwg_media->ppd, "Env", 3) &&
+             !strncmp(size->name, "Env", 3))
             snprintf(buf, sizeof(buf), "Env%s", pwg_media->ppd);
 
          if (strcmp(size->name, buf))
index a6b53cbcfb9bb5c5929c8ac23d07f12bf24b4593..ae604196e31495396b20a7aaf0f21e4795cf2f97 100644 (file)
  *                                 valid.
  */
 
+/*
+ * Disable private and deprecated stuff so we can verify that the public API
+ * is sufficient to implement a server.
+ */
+
+#define _IPP_PRIVATE_STRUCTURES 0      /* Disable private IPP stuff */
+#define _CUPS_NO_DEPRECATED 1          /* Disable deprecated stuff */
+
+
 /*
  * Include necessary headers...
  */
 
-#include <cups/cups-private.h>
+#include <cups/cups.h>                 /* Public API */
+#include <config.h>                    /* CUPS configuration header */
+#include <cups/string-private.h>       /* For string functions */
+#include <cups/thread-private.h>       /* For multithreading functions */
+
 #ifdef HAVE_DNSSD
 #  include <dns_sd.h>
 #endif /* HAVE_DNSSD */
 
 enum _ipp_preasons_e                   /* printer-state-reasons bit values */
 {
-  _IPP_PRINTER_NONE = 0x0000,          /* none */
-  _IPP_PRINTER_OTHER = 0x0001,         /* other */
-  _IPP_PRINTER_COVER_OPEN = 0x0002,    /* cover-open */
-  _IPP_PRINTER_INPUT_TRAY_MISSING = 0x0004,
+  _IPP_PSTATE_NONE = 0x0000,           /* none */
+  _IPP_PSTATE_OTHER = 0x0001,          /* other */
+  _IPP_PSTATE_COVER_OPEN = 0x0002,     /* cover-open */
+  _IPP_PSTATE_INPUT_TRAY_MISSING = 0x0004,
                                        /* input-tray-missing */
-  _IPP_PRINTER_MARKER_SUPPLY_EMPTY = 0x0008,
+  _IPP_PSTATE_MARKER_SUPPLY_EMPTY = 0x0008,
                                        /* marker-supply-empty */
-  _IPP_PRINTER_MARKER_SUPPLY_LOW = 0x0010,
+  _IPP_PSTATE_MARKER_SUPPLY_LOW = 0x0010,
                                        /* marker-suply-low */
-  _IPP_PRINTER_MARKER_WASTE_ALMOST_FULL = 0x0020,
+  _IPP_PSTATE_MARKER_WASTE_ALMOST_FULL = 0x0020,
                                        /* marker-waste-almost-full */
-  _IPP_PRINTER_MARKER_WASTE_FULL = 0x0040,
+  _IPP_PSTATE_MARKER_WASTE_FULL = 0x0040,
                                        /* marker-waste-full */
-  _IPP_PRINTER_MEDIA_EMPTY = 0x0080,   /* media-empty */
-  _IPP_PRINTER_MEDIA_JAM = 0x0100,     /* media-jam */
-  _IPP_PRINTER_MEDIA_LOW = 0x0200,     /* media-low */
-  _IPP_PRINTER_MEDIA_NEEDED = 0x0400,  /* media-needed */
-  _IPP_PRINTER_MOVING_TO_PAUSED = 0x0800,
+  _IPP_PSTATE_MEDIA_EMPTY = 0x0080,    /* media-empty */
+  _IPP_PSTATE_MEDIA_JAM = 0x0100,      /* media-jam */
+  _IPP_PSTATE_MEDIA_LOW = 0x0200,      /* media-low */
+  _IPP_PSTATE_MEDIA_NEEDED = 0x0400,   /* media-needed */
+  _IPP_PSTATE_MOVING_TO_PAUSED = 0x0800,
                                        /* moving-to-paused */
-  _IPP_PRINTER_PAUSED = 0x1000,                /* paused */
-  _IPP_PRINTER_SPOOL_AREA_FULL = 0x2000,/* spool-area-full */
-  _IPP_PRINTER_TONER_EMPTY = 0x4000,   /* toner-empty */
-  _IPP_PRINTER_TONER_LOW = 0x8000      /* toner-low */
+  _IPP_PSTATE_PAUSED = 0x1000,         /* paused */
+  _IPP_PSTATE_SPOOL_AREA_FULL = 0x2000,/* spool-area-full */
+  _IPP_PSTATE_TONER_EMPTY = 0x4000,    /* toner-empty */
+  _IPP_PSTATE_TONER_LOW = 0x8000       /* toner-low */
 };
 typedef unsigned int _ipp_preasons_t;  /* Bitfield for printer-state-reasons */
 
@@ -195,6 +208,9 @@ typedef struct _ipp_printer_s               /**** Printer data ****/
 #ifdef HAVE_DNSSD
   DNSServiceRef                common_ref,     /* Shared service connection */
                        ipp_ref,        /* Bonjour IPP service */
+#  ifdef HAVE_SSL
+                       ipps_ref,       /* Bonjour IPPS service */
+#  endif /* HAVE_SSL */
                        http_ref,       /* Bonjour HTTP service */
                        printer_ref;    /* Bonjour LPD service */
   TXTRecordRef         ipp_txt;        /* Bonjour IPP TXT record */
@@ -219,7 +235,7 @@ typedef struct _ipp_printer_s               /**** Printer data ****/
 struct _ipp_job_s                      /**** Job data ****/
 {
   int                  id;             /* Job ID */
-  char                 *name,          /* job-name */
+  const char           *name,          /* job-name */
                        *username,      /* job-originating-user-name */
                        *format;        /* document-format */
   ipp_jstate_t         state;          /* job-state value */
@@ -234,7 +250,7 @@ struct _ipp_job_s                   /**** Job data ****/
 
 typedef struct _ipp_client_s           /**** Client data ****/
 {
-  http_t               http;           /* HTTP connection */
+  http_t               *http;          /* HTTP connection */
   ipp_t                        *request,       /* IPP request */
                        *response;      /* IPP response */
   time_t               start;          /* Request start time */
@@ -242,6 +258,7 @@ typedef struct _ipp_client_s                /**** Client data ****/
   ipp_op_t             operation_id;   /* IPP operation-id */
   char                 uri[1024];      /* Request URI */
   http_addr_t          addr;           /* Client address */
+  char                 hostname[256];  /* Client hostname */
   _ipp_printer_t       *printer;       /* Printer */
   _ipp_job_t           *job;           /* Current job, if any */
 } _ipp_client_t;
@@ -271,7 +288,7 @@ static _ipp_printer_t       *create_printer(const char *servername,
                                        int ppm_color, int duplex, int port,
                                        int pin,
 #ifdef HAVE_DNSSD
-                                       const char *regtype,
+                                       const char *subtype,
 #endif /* HAVE_DNSSD */
                                        const char *directory);
 static cups_array_t    *create_requested_array(_ipp_client_t *client);
@@ -317,6 +334,7 @@ static int          register_printer(_ipp_printer_t *printer,
                                         int duplex, const char *regtype);
 #endif /* HAVE_DNSSD */
 static int             respond_http(_ipp_client_t *client, http_status_t code,
+                                    const char *content_coding,
                                     const char *type, size_t length);
 static void            respond_ipp(_ipp_client_t *client, ipp_status_t status,
                                    const char *message, ...)
@@ -356,9 +374,9 @@ main(int  argc,                             /* I - Number of command-line args */
                *formats = "application/pdf,image/jpeg";
                                        /* Supported formats */
 #ifdef HAVE_DNSSD
-  const char   *regtype = "_ipp._tcp"; /* Bonjour service type */
+  const char   *subtype = "_print";    /* Bonjour service subtype */
 #endif /* HAVE_DNSSD */
-  int          port = 8631,            /* Port number (0 = auto) TODO: FIX */
+  int          port = 8631,            /* Port number (0 = auto) */
                duplex = 0,             /* Duplex mode */
                ppm = 10,               /* Pages per minute for mono */
                ppm_color = 0,          /* Pages per minute for color */
@@ -450,11 +468,11 @@ main(int  argc,                           /* I - Number of command-line args */
              break;
 
 #ifdef HAVE_DNSSD
-         case 'r' : /* -r regtype */
+         case 'r' : /* -r subtype */
              i ++;
              if (i >= argc)
                usage(1);
-             regtype = argv[i];
+             subtype = argv[i];
              break;
 #endif /* HAVE_DNSSD */
 
@@ -515,7 +533,7 @@ main(int  argc,                             /* I - Number of command-line args */
   if ((printer = create_printer(servername, name, location, make, model, icon,
                                 formats, ppm, ppm_color, duplex, port, pin,
 #ifdef HAVE_DNSSD
-                               regtype,
+                               subtype,
 #endif /* HAVE_DNSSD */
                                directory)) == NULL)
     return (1);
@@ -596,17 +614,22 @@ copy_attributes(ipp_t        *to, /* I - Destination request */
   if (!to || !from)
     return;
 
-  for (fromattr = from->attrs; fromattr; fromattr = fromattr->next)
+  for (fromattr = ippFirstAttribute(from);
+       fromattr;
+       fromattr = ippNextAttribute(from))
   {
    /*
     * Filter attributes as needed...
     */
 
-    if ((group_tag != IPP_TAG_ZERO && fromattr->group_tag != group_tag &&
-         fromattr->group_tag != IPP_TAG_ZERO) || !fromattr->name)
+    ipp_tag_t fromgroup = ippGetGroupTag(fromattr);
+    const char *fromname = ippGetName(fromattr);
+
+    if ((group_tag != IPP_TAG_ZERO && fromgroup != group_tag &&
+         fromgroup != IPP_TAG_ZERO) || !fromname)
       continue;
 
-    if (!ra || cupsArrayFind(ra, fromattr->name))
+    if (!ra || cupsArrayFind(ra, (void *)fromname))
       ippCopyAttribute(to, fromattr, quickcopy);
   }
 }
@@ -636,59 +659,59 @@ copy_job_attributes(
   {
     switch (job->state)
     {
-      case IPP_JOB_PENDING :
+      case IPP_JSTATE_PENDING :
          ippAddString(client->response, IPP_TAG_JOB,
-                      IPP_TAG_KEYWORD | IPP_TAG_COPY, "job-state-reasons",
+                      IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST, "job-state-reasons",
                       NULL, "none");
          break;
 
-      case IPP_JOB_HELD :
+      case IPP_JSTATE_HELD :
           if (job->fd >= 0)
            ippAddString(client->response, IPP_TAG_JOB,
-                        IPP_TAG_KEYWORD | IPP_TAG_COPY, "job-state-reasons",
-                        NULL, "job-incoming");
+                        IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+                        "job-state-reasons", NULL, "job-incoming");
          else if (ippFindAttribute(job->attrs, "job-hold-until", IPP_TAG_ZERO))
            ippAddString(client->response, IPP_TAG_JOB,
-                        IPP_TAG_KEYWORD | IPP_TAG_COPY, "job-state-reasons",
-                        NULL, "job-hold-until-specified");
+                        IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+                        "job-state-reasons", NULL, "job-hold-until-specified");
           else
            ippAddString(client->response, IPP_TAG_JOB,
-                        IPP_TAG_KEYWORD | IPP_TAG_COPY, "job-state-reasons",
-                        NULL, "job-data-insufficient");
+                        IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+                        "job-state-reasons", NULL, "job-data-insufficient");
          break;
 
-      case IPP_JOB_PROCESSING :
+      case IPP_JSTATE_PROCESSING :
          if (job->cancel)
            ippAddString(client->response, IPP_TAG_JOB,
-                        IPP_TAG_KEYWORD | IPP_TAG_COPY, "job-state-reasons",
-                        NULL, "processing-to-stop-point");
+                        IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+                        "job-state-reasons", NULL, "processing-to-stop-point");
          else
            ippAddString(client->response, IPP_TAG_JOB,
-                        IPP_TAG_KEYWORD | IPP_TAG_COPY, "job-state-reasons",
-                        NULL, "job-printing");
+                        IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+                        "job-state-reasons", NULL, "job-printing");
          break;
 
-      case IPP_JOB_STOPPED :
+      case IPP_JSTATE_STOPPED :
          ippAddString(client->response, IPP_TAG_JOB,
-                      IPP_TAG_KEYWORD | IPP_TAG_COPY, "job-state-reasons",
+                      IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST, "job-state-reasons",
                       NULL, "job-stopped");
          break;
 
-      case IPP_JOB_CANCELED :
+      case IPP_JSTATE_CANCELED :
          ippAddString(client->response, IPP_TAG_JOB,
-                      IPP_TAG_KEYWORD | IPP_TAG_COPY, "job-state-reasons",
+                      IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST, "job-state-reasons",
                       NULL, "job-canceled-by-user");
          break;
 
-      case IPP_JOB_ABORTED :
+      case IPP_JSTATE_ABORTED :
          ippAddString(client->response, IPP_TAG_JOB,
-                      IPP_TAG_KEYWORD | IPP_TAG_COPY, "job-state-reasons",
+                      IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST, "job-state-reasons",
                       NULL, "aborted-by-system");
          break;
 
-      case IPP_JOB_COMPLETED :
+      case IPP_JSTATE_COMPLETED :
          ippAddString(client->response, IPP_TAG_JOB,
-                      IPP_TAG_KEYWORD | IPP_TAG_COPY, "job-state-reasons",
+                      IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST, "job-state-reasons",
                       NULL, "job-completed-successfully");
          break;
     }
@@ -716,8 +739,6 @@ create_client(_ipp_printer_t *printer,      /* I - Printer */
               int            sock)     /* I - Listen socket */
 {
   _ipp_client_t        *client;                /* Client */
-  int          val;                    /* Parameter value */
-  socklen_t    addrlen;                /* Length of address */
 
 
   if ((client = calloc(1, sizeof(_ipp_client_t))) == NULL)
@@ -726,20 +747,13 @@ create_client(_ipp_printer_t *printer,    /* I - Printer */
     return (NULL);
   }
 
-  client->printer         = printer;
-  client->http.activity   = time(NULL);
-  client->http.hostaddr   = &(client->addr);
-  client->http.blocking   = 1;
-  client->http.wait_value = 60000;
+  client->printer = printer;
 
  /*
   * Accept the client and get the remote address...
   */
 
-  addrlen = sizeof(http_addr_t);
-
-  if ((client->http.fd = accept(sock, (struct sockaddr *)&(client->addr),
-                                &addrlen)) < 0)
+  if ((client->http = httpAcceptConnection(sock, 1)) == NULL)
   {
     perror("Unable to accept client connection");
 
@@ -748,23 +762,10 @@ create_client(_ipp_printer_t *printer,    /* I - Printer */
     return (NULL);
   }
 
-  httpAddrString(&(client->addr), client->http.hostname,
-                sizeof(client->http.hostname));
+  httpGetHostname(client->http, client->hostname, sizeof(client->hostname));
 
   if (Verbosity)
-    fprintf(stderr, "Accepted connection from %s (%s)\n", client->http.hostname,
-           client->http.hostaddr->addr.sa_family == AF_INET ? "IPv4" : "IPv6");
-
- /*
-  * Using TCP_NODELAY improves responsiveness, especially on systems
-  * with a slow loopback interface.  Since we write large buffers
-  * when sending print files and requests, there shouldn't be any
-  * performance penalty for this...
-  */
-
-  val = 1;
-  setsockopt(client->http.fd, IPPROTO_TCP, TCP_NODELAY, (char *)&val,
-             sizeof(val));
+    fprintf(stderr, "Accepted connection from %s\n", client->hostname);
 
   return (client);
 }
@@ -785,7 +786,7 @@ create_job(_ipp_client_t *client)   /* I - Client */
 
   _cupsRWLockWrite(&(client->printer->rwlock));
   if (client->printer->active_job &&
-      client->printer->active_job->state < IPP_JOB_CANCELED)
+      client->printer->active_job->state < IPP_JSTATE_CANCELED)
   {
    /*
     * Only accept a single job at a time...
@@ -807,7 +808,7 @@ create_job(_ipp_client_t *client)   /* I - Client */
 
   job->printer    = client->printer;
   job->attrs      = client->request;
-  job->state      = IPP_JOB_HELD;
+  job->state      = IPP_JSTATE_HELD;
   job->fd         = -1;
   client->request = NULL;
 
@@ -815,8 +816,12 @@ create_job(_ipp_client_t *client)  /* I - Client */
   * Set all but the first two attributes to the job attributes group...
   */
 
-  for (attr = job->attrs->attrs->next->next; attr; attr = attr->next)
-    attr->group_tag = IPP_TAG_JOB;
+  for (ippFirstAttribute(job->attrs),
+           ippNextAttribute(job->attrs),
+           attr = ippNextAttribute(job->attrs);
+       attr;
+       attr = ippNextAttribute(job->attrs))
+    ippSetGroupTag(job->attrs, &attr, IPP_TAG_JOB);
 
  /*
   * Get the requesting-user-name, document format, and priority...
@@ -824,22 +829,20 @@ create_job(_ipp_client_t *client) /* I - Client */
 
   if ((attr = ippFindAttribute(job->attrs, "requesting-user-name",
                                IPP_TAG_NAME)) != NULL)
-  {
-    _cupsStrFree(attr->name);
-    attr->name = _cupsStrAlloc("job-originating-user-name");
-  }
+    ippSetName(job->attrs, &attr, "job-originating-user-name");
   else
-    attr = ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_NAME | IPP_TAG_COPY,
+    attr = ippAddString(job->attrs, IPP_TAG_JOB,
+                        IPP_TAG_NAME | IPP_TAG_CUPS_CONST,
                         "job-originating-user-name", NULL, "anonymous");
 
   if (attr)
-    job->username = attr->values[0].string.text;
+    job->username = ippGetString(attr, 0, NULL);
   else
     job->username = "anonymous";
 
   if ((attr = ippFindAttribute(job->attrs, "document-format",
                                IPP_TAG_MIMETYPE)) != NULL)
-    job->format = attr->values[0].string.text;
+    job->format = ippGetString(attr, 0, NULL);
   else
     job->format = "application/octet-stream";
 
@@ -875,57 +878,24 @@ static int                                /* O  - Listener socket or -1 on error */
 create_listener(int family,            /* I  - Address family */
                 int *port)             /* IO - Port number */
 {
-  int          sock,                   /* Listener socket */
-               val;                    /* Socket value */
-  http_addr_t  address;                /* Listen address */
-  socklen_t    addrlen;                /* Length of listen address */
-
-
-  if ((sock = socket(family, SOCK_STREAM, 0)) < 0)
-    return (-1);
+  int                  sock;           /* Listener socket */
+  http_addrlist_t      *addrlist;      /* Listen address */
+  char                 service[255];   /* Service port */
 
-  val = 1;
-  setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val));
-
-#ifdef IPV6_V6ONLY
-  if (family == AF_INET6)
-    setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, &val, sizeof(val));
-#endif /* IPV6_V6ONLY */
 
   if (!*port)
   {
-   /*
-    * Get the auto-assigned port number for the IPv4 socket...
-    */
-
-    /* TODO: This code does not appear to work - port is always 0... */
-    addrlen = sizeof(address);
-    if (getsockname(sock, (struct sockaddr *)&address, &addrlen))
-    {
-      perror("getsockname() failed");
-      *port = 8631;
-    }
-    else
-      *port = _httpAddrPort(&address);
-
+    *port = 8000 + (getuid() % 1000);
     fprintf(stderr, "Listening on port %d.\n", *port);
   }
 
-  memset(&address, 0, sizeof(address));
-  address.addr.sa_family = family;
-  _httpAddrSetPort(&address, *port);
-
-  if (bind(sock, (struct sockaddr *)&address, httpAddrLength(&address)))
-  {
-    close(sock);
+  snprintf(service, sizeof(service), "%d", *port);
+  if ((addrlist = httpAddrGetList(NULL, family, service)) == NULL)
     return (-1);
-  }
 
-  if (listen(sock, 5))
-  {
-    close(sock);
-    return (-1);
-  }
+  sock = httpAddrListen(&(addrlist->addr), *port);
+
+  httpAddrFreeList(addrlist);
 
   return (sock);
 }
@@ -1010,7 +980,7 @@ create_printer(const char *servername,     /* I - Server hostname (NULL for default)
               int        port,         /* I - Port for listeners or 0 for auto */
               int        pin,          /* I - Require PIN printing */
 #ifdef HAVE_DNSSD
-              const char *regtype,     /* I - Bonjour service type */
+              const char *subtype,     /* I - Bonjour service subtype */
 #endif /* HAVE_DNSSD */
               const char *directory)   /* I - Spool directory */
 {
@@ -1034,8 +1004,7 @@ create_printer(const char *servername,    /* I - Server hostname (NULL for default)
                                        /* media-size-supported value */
   ipp_t                        *media_col_default;
                                        /* media-col-default value */
-  _ipp_value_t         *media_col_value;
-                                       /* Current media-col-database value */
+  int                  media_col_index;/* Current media-col-database value */
   int                  k_supported;    /* Maximum file size supported */
 #ifdef HAVE_STATVFS
   struct statvfs       spoolinfo;      /* FS info for spool directory */
@@ -1046,10 +1015,10 @@ create_printer(const char *servername,  /* I - Server hostname (NULL for default)
 #endif /* HAVE_STATVFS */
   static const int     orients[4] =    /* orientation-requested-supported values */
   {
-    IPP_PORTRAIT,
-    IPP_LANDSCAPE,
-    IPP_REVERSE_LANDSCAPE,
-    IPP_REVERSE_PORTRAIT
+    IPP_ORIENT_PORTRAIT,
+    IPP_ORIENT_LANDSCAPE,
+    IPP_ORIENT_REVERSE_LANDSCAPE,
+    IPP_ORIENT_REVERSE_PORTRAIT
   };
   static const char * const versions[] =/* ipp-versions-supported values */
   {
@@ -1059,22 +1028,30 @@ create_printer(const char *servername,  /* I - Server hostname (NULL for default)
   };
   static const int     ops[] =         /* operations-supported values */
   {
-    IPP_PRINT_JOB,
-    IPP_PRINT_URI,
-    IPP_VALIDATE_JOB,
-    IPP_CREATE_JOB,
-    IPP_SEND_DOCUMENT,
-    IPP_SEND_URI,
-    IPP_CANCEL_JOB,
-    IPP_GET_JOB_ATTRIBUTES,
-    IPP_GET_JOBS,
-    IPP_GET_PRINTER_ATTRIBUTES
+    IPP_OP_PRINT_JOB,
+    IPP_OP_PRINT_URI,
+    IPP_OP_VALIDATE_JOB,
+    IPP_OP_CREATE_JOB,
+    IPP_OP_SEND_DOCUMENT,
+    IPP_OP_SEND_URI,
+    IPP_OP_CANCEL_JOB,
+    IPP_OP_GET_JOB_ATTRIBUTES,
+    IPP_OP_GET_JOBS,
+    IPP_OP_GET_PRINTER_ATTRIBUTES
   };
   static const char * const charsets[] =/* charset-supported values */
   {
     "us-ascii",
     "utf-8"
   };
+  static const char * const compressions[] =/* compression-supported values */
+  {
+#ifdef HAVE_LIBZ
+    "deflate",
+    "gzip",
+#endif /* HAVE_LIBZ */
+    "none"
+  };
   static const char * const job_creation[] =
   {                                    /* job-creation-attributes-supported values */
     "copies",
@@ -1157,25 +1134,28 @@ create_printer(const char *servername,  /* I - Server hostname (NULL for default)
 
   printer->ipv4          = -1;
   printer->ipv6          = -1;
-  printer->name          = _cupsStrAlloc(name);
+  printer->name          = strdup(name);
 #ifdef HAVE_DNSSD
-  printer->dnssd_name    = _cupsStrRetain(printer->name);
+  printer->dnssd_name    = strdup(printer->name);
 #endif /* HAVE_DNSSD */
-  printer->directory     = _cupsStrAlloc(directory);
-  printer->hostname      = _cupsStrAlloc(servername ? servername :
+  printer->directory     = strdup(directory);
+  printer->hostname      = strdup(servername ? servername :
                                              httpGetHostname(NULL, hostname,
                                                              sizeof(hostname)));
   printer->port          = port;
-  printer->state         = IPP_PRINTER_IDLE;
-  printer->state_reasons = _IPP_PRINTER_NONE;
+  printer->state         = IPP_PSTATE_IDLE;
+  printer->state_reasons = _IPP_PSTATE_NONE;
   printer->jobs          = cupsArrayNew((cups_array_func_t)compare_jobs, NULL);
   printer->next_job_id   = 1;
 
   httpAssembleURI(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
                  printer->hostname, printer->port, "/ipp");
-  printer->uri    = _cupsStrAlloc(uri);
+  printer->uri    = strdup(uri);
   printer->urilen = strlen(uri);
 
+  if (icon)
+    printer->icon = strdup(icon);
+
   _cupsRWInit(&(printer->rwlock));
 
  /*
@@ -1283,11 +1263,13 @@ create_printer(const char *servername,  /* I - Server hostname (NULL for default)
   printer->attrs = ippNew();
 
   /* charset-configured */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_CHARSET | IPP_TAG_COPY,
+  ippAddString(printer->attrs, IPP_TAG_PRINTER,
+               IPP_TAG_CHARSET | IPP_TAG_CUPS_CONST,
                "charset-configured", NULL, "utf-8");
 
   /* charset-supported */
-  ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_CHARSET | IPP_TAG_COPY,
+  ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
+                IPP_TAG_CHARSET | IPP_TAG_CUPS_CONST,
                 "charset-supported", sizeof(charsets) / sizeof(charsets[0]),
                NULL, charsets);
 
@@ -1296,8 +1278,11 @@ create_printer(const char *servername,   /* I - Server hostname (NULL for default)
                 ppm_color > 0);
 
   /* compression-supported */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD | IPP_TAG_COPY,
-              "compression-supported", NULL, "none");
+  ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
+               IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+              "compression-supported",
+              (int)(sizeof(compressions) / sizeof(compressions[0])), NULL,
+              compressions);
 
   /* copies-default */
   ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
@@ -1324,11 +1309,13 @@ create_printer(const char *servername,  /* I - Server hostname (NULL for default)
                 "finishings-supported", IPP_FINISHINGS_NONE);
 
   /* generated-natural-language-supported */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_LANGUAGE | IPP_TAG_COPY,
+  ippAddString(printer->attrs, IPP_TAG_PRINTER,
+               IPP_TAG_LANGUAGE | IPP_TAG_CUPS_CONST,
                "generated-natural-language-supported", NULL, "en");
 
   /* ipp-versions-supported */
-  ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD | IPP_TAG_COPY,
+  ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
+                IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
                 "ipp-versions-supported",
                sizeof(versions) / sizeof(versions[0]), NULL, versions);
 
@@ -1340,7 +1327,8 @@ create_printer(const char *servername,    /* I - Server hostname (NULL for default)
                 "job-accounting-user-id-supported", 1);
 
   /* job-creation-attributes-supported */
-  ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD | IPP_TAG_COPY,
+  ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
+                IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
                 "job-creation-attributes-supported",
                sizeof(job_creation) / sizeof(job_creation[0]),
                NULL, job_creation);
@@ -1362,11 +1350,13 @@ create_printer(const char *servername,  /* I - Server hostname (NULL for default)
                 "job-priority-supported", 100);
 
   /* job-sheets-default */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_NAME | IPP_TAG_COPY,
+  ippAddString(printer->attrs, IPP_TAG_PRINTER,
+               IPP_TAG_NAME | IPP_TAG_CUPS_CONST,
                "job-sheets-default", NULL, "none");
 
   /* job-sheets-supported */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_NAME | IPP_TAG_COPY,
+  ippAddString(printer->attrs, IPP_TAG_PRINTER,
+               IPP_TAG_NAME | IPP_TAG_CUPS_CONST,
                "job-sheets-supported", NULL, "none");
 
   /* media-bottom-margin-supported */
@@ -1394,7 +1384,7 @@ create_printer(const char *servername,    /* I - Server hostname (NULL for default)
   media_col_database = ippAddCollections(printer->attrs, IPP_TAG_PRINTER,
                                          "media-col-database", num_database,
                                         NULL);
-  for (media_col_value = media_col_database->values, i = 0;
+  for (media_col_index = 0, i = 0;
        i < (int)(sizeof(media_col_sizes) / sizeof(media_col_sizes[0]));
        i ++)
   {
@@ -1412,11 +1402,13 @@ create_printer(const char *servername,  /* I - Server hostname (NULL for default)
               strncmp(media_type_supported[j], "photographic-", 13))
        continue;
 
-      media_col_value->collection =
-          create_media_col(media_supported[i], media_type_supported[j],
-                          media_col_sizes[i][0], media_col_sizes[i][1],
-                          media_xxx_margin_supported[1]);
-      media_col_value ++;
+      ippSetCollection(printer->attrs, &media_col_database, media_col_index,
+                       create_media_col(media_supported[i],
+                                        media_type_supported[j],
+                                       media_col_sizes[i][0],
+                                       media_col_sizes[i][1],
+                                       media_xxx_margin_supported[1]));
+      media_col_index ++;
 
       if (media_col_sizes[i][2] != _IPP_ENV_ONLY &&
          (!strcmp(media_type_supported[j], "auto") ||
@@ -1426,11 +1418,13 @@ create_printer(const char *servername,  /* I - Server hostname (NULL for default)
         * Add borderless version for this combination...
        */
 
-       media_col_value->collection =
-           create_media_col(media_supported[i], media_type_supported[j],
-                            media_col_sizes[i][0], media_col_sizes[i][1],
-                            media_xxx_margin_supported[0]);
-       media_col_value ++;
+       ippSetCollection(printer->attrs, &media_col_database, media_col_index,
+                         create_media_col(media_supported[i],
+                                          media_type_supported[j],
+                                         media_col_sizes[i][0],
+                                         media_col_sizes[i][1],
+                                         media_xxx_margin_supported[0]));
+       media_col_index ++;
       }
     }
   }
@@ -1447,14 +1441,16 @@ create_printer(const char *servername,  /* I - Server hostname (NULL for default)
   ippDelete(media_col_default);
 
   /* media-col-supported */
-  ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD | IPP_TAG_COPY,
+  ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
+                IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
                 "media-col-supported",
                (int)(sizeof(media_col_supported) /
                      sizeof(media_col_supported[0])), NULL,
                media_col_supported);
 
   /* media-default */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD | IPP_TAG_COPY,
+  ippAddString(printer->attrs, IPP_TAG_PRINTER,
+               IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
                "media-default", NULL, media_supported[0]);
 
   /* media-left-margin-supported */
@@ -1472,7 +1468,8 @@ create_printer(const char *servername,    /* I - Server hostname (NULL for default)
                 media_xxx_margin_supported);
 
   /* media-supported */
-  ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD | IPP_TAG_COPY,
+  ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
+                IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
                 "media-supported",
                (int)(sizeof(media_supported) / sizeof(media_supported[0])),
                NULL, media_supported);
@@ -1486,8 +1483,9 @@ create_printer(const char *servername,    /* I - Server hostname (NULL for default)
   for (i = 0;
        i < (int)(sizeof(media_col_sizes) / sizeof(media_col_sizes[0]));
        i ++)
-    media_size_supported->values[i].collection =
-        create_media_size(media_col_sizes[i][0], media_col_sizes[i][1]);
+    ippSetCollection(printer->attrs, &media_size_supported, i,
+                    create_media_size(media_col_sizes[i][0],
+                                      media_col_sizes[i][1]));
 
   /* media-top-margin-supported */
   ippAddIntegers(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
@@ -1497,14 +1495,16 @@ create_printer(const char *servername,  /* I - Server hostname (NULL for default)
                 media_xxx_margin_supported);
 
   /* media-type-supported */
-  ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD | IPP_TAG_COPY,
+  ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
+                IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
                 "media-type-supported",
                (int)(sizeof(media_type_supported) /
                      sizeof(media_type_supported[0])),
                NULL, media_type_supported);
 
   /* multiple-document-handling-supported */
-  ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD | IPP_TAG_COPY,
+  ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
+                IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
                 "multiple-document-handling-supported",
                 sizeof(multiple_document_handling) /
                    sizeof(multiple_document_handling[0]), NULL,
@@ -1515,7 +1515,8 @@ create_printer(const char *servername,    /* I - Server hostname (NULL for default)
                 "multiple-document-jobs-supported", 0);
 
   /* natural-language-configured */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_LANGUAGE | IPP_TAG_COPY,
+  ippAddString(printer->attrs, IPP_TAG_PRINTER,
+               IPP_TAG_LANGUAGE | IPP_TAG_CUPS_CONST,
                "natural-language-configured", NULL, "en");
 
   /* number-up-default */
@@ -1539,11 +1540,13 @@ create_printer(const char *servername,  /* I - Server hostname (NULL for default)
                  "orientation-requested-supported", 4, orients);
 
   /* output-bin-default */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD | IPP_TAG_COPY,
+  ippAddString(printer->attrs, IPP_TAG_PRINTER,
+               IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
                "output-bin-default", NULL, "face-down");
 
   /* output-bin-supported */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD | IPP_TAG_COPY,
+  ippAddString(printer->attrs, IPP_TAG_PRINTER,
+               IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
                "output-bin-supported", NULL, "face-down");
 
   /* pages-per-minute */
@@ -1556,7 +1559,8 @@ create_printer(const char *servername,    /* I - Server hostname (NULL for default)
                   "pages-per-minute-color", ppm_color);
 
   /* pdl-override-supported */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD | IPP_TAG_COPY,
+  ippAddString(printer->attrs, IPP_TAG_PRINTER,
+               IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
                "pdl-override-supported", NULL, "attempted");
 
   /* print-quality-default */
@@ -1630,30 +1634,35 @@ create_printer(const char *servername,  /* I - Server hostname (NULL for default)
 
   /* reference-uri-scheme-supported */
   ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
-                IPP_TAG_URISCHEME | IPP_TAG_COPY,
+                IPP_TAG_URISCHEME | IPP_TAG_CUPS_CONST,
                 "reference-uri-schemes-supported",
                 (int)(sizeof(reference_uri_schemes_supported) /
                       sizeof(reference_uri_schemes_supported[0])),
                 NULL, reference_uri_schemes_supported);
 
   /* sides-default */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD | IPP_TAG_COPY,
+  ippAddString(printer->attrs, IPP_TAG_PRINTER,
+               IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
                "sides-default", NULL, "one-sided");
 
   /* sides-supported */
-  ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD | IPP_TAG_COPY,
+  ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
+                IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
                 "sides-supported", duplex ? 3 : 1, NULL, sides_supported);
 
   /* uri-authentication-supported */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD | IPP_TAG_COPY,
+  ippAddString(printer->attrs, IPP_TAG_PRINTER,
+               IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
                "uri-authentication-supported", NULL, "none");
 
   /* uri-security-supported */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD | IPP_TAG_COPY,
+  ippAddString(printer->attrs, IPP_TAG_PRINTER,
+               IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
                "uri-security-supported", NULL, "none");
 
   /* which-jobs-supported */
-  ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD | IPP_TAG_COPY,
+  ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
+                IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
                 "which-jobs-supported",
                 sizeof(which_jobs) / sizeof(which_jobs[0]), NULL, which_jobs);
 
@@ -1667,7 +1676,7 @@ create_printer(const char *servername,    /* I - Server hostname (NULL for default)
   */
 
   if (!register_printer(printer, location, make, model, docformats, adminurl,
-                        ppm_color > 0, duplex, regtype))
+                        ppm_color > 0, duplex, subtype))
     goto bad_printer;
 #endif /* HAVE_DNSSD */
 
@@ -1697,10 +1706,11 @@ static cups_array_t *                   /* O - requested-attributes array */
 create_requested_array(
     _ipp_client_t *client)             /* I - Client */
 {
-  int                  i;              /* Looping var */
+  int                  i,              /* Looping var */
+                       count;          /* Number of values */
   ipp_attribute_t      *requested;     /* requested-attributes attribute */
   cups_array_t         *ra;            /* Requested attributes array */
-  char                 *value;         /* Current value */
+  const char           *value;         /* Current value */
 
 
  /*
@@ -1716,8 +1726,8 @@ create_requested_array(
   * If the attribute contains a single "all" keyword, return NULL...
   */
 
-  if (requested->num_values == 1 &&
-      !strcmp(requested->values[0].string.text, "all"))
+  count = ippGetCount(requested);
+  if (count == 1 && !strcmp(ippGetString(requested, 0, NULL), "all"))
     return (NULL);
 
  /*
@@ -1726,9 +1736,9 @@ create_requested_array(
 
   ra = cupsArrayNew((cups_array_func_t)strcmp, NULL);
 
-  for (i = 0; i < requested->num_values; i ++)
+  for (i = 0; i < count; i ++)
   {
-    value = requested->values[i].string.text;
+    value = ippGetString(requested, i, NULL);
 
     if (!strcmp(value, "job-template"))
     {
@@ -1884,7 +1894,7 @@ create_requested_array(
       cupsArrayAdd(ra, "notify-user-data");
     }
     else
-      cupsArrayAdd(ra, value);
+      cupsArrayAdd(ra, (void *)value);
   }
 
   return (ra);
@@ -1903,38 +1913,39 @@ debug_attributes(const char *title,     /* I - Title */
   ipp_tag_t            group_tag;      /* Current group */
   ipp_attribute_t      *attr;          /* Current attribute */
   char                 buffer[2048];   /* String buffer for value */
+  int                  major, minor;   /* Version */
 
 
   if (Verbosity <= 1)
     return;
 
   fprintf(stderr, "%s:\n", title);
-  fprintf(stderr, "  version=%d.%d\n", ipp->request.any.version[0],
-          ipp->request.any.version[1]);
+  major = ippGetVersion(ipp, &minor);
+  fprintf(stderr, "  version=%d.%d\n", major, minor);
   if (type == 1)
     fprintf(stderr, "  operation-id=%s(%04x)\n",
-            ippOpString(ipp->request.op.operation_id),
-            ipp->request.op.operation_id);
+            ippOpString(ippGetOperation(ipp)), ippGetOperation(ipp));
   else if (type == 2)
     fprintf(stderr, "  status-code=%s(%04x)\n",
-            ippErrorString(ipp->request.status.status_code),
-            ipp->request.status.status_code);
-  fprintf(stderr, "  request-id=%d\n\n", ipp->request.any.request_id);
+            ippErrorString(ippGetStatusCode(ipp)), ippGetStatusCode(ipp));
+  fprintf(stderr, "  request-id=%d\n\n", ippGetRequestId(ipp));
 
-  for (attr = ipp->attrs, group_tag = IPP_TAG_ZERO; attr; attr = attr->next)
+  for (attr = ippFirstAttribute(ipp), group_tag = IPP_TAG_ZERO;
+       attr;
+       attr = ippNextAttribute(ipp))
   {
-    if (attr->group_tag != group_tag)
+    if (ippGetGroupTag(attr) != group_tag)
     {
-      group_tag = attr->group_tag;
+      group_tag = ippGetGroupTag(attr);
       fprintf(stderr, "  %s\n", ippTagString(group_tag));
     }
 
-    if (attr->name)
+    if (ippGetName(attr))
     {
       ippAttributeString(attr, buffer, sizeof(buffer));
-      fprintf(stderr, "    %s (%s%s) %s\n", attr->name,
-             attr->num_values > 1 ? "1setOf " : "",
-             ippTagString(attr->value_tag), buffer);
+      fprintf(stderr, "    %s (%s%s) %s\n", ippGetName(attr),
+             ippGetCount(attr) > 1 ? "1setOf " : "",
+             ippTagString(ippGetValueTag(attr)), buffer);
     }
   }
 }
@@ -1949,27 +1960,21 @@ static void
 delete_client(_ipp_client_t *client)   /* I - Client */
 {
   if (Verbosity)
-    fprintf(stderr, "Closing connection from %s (%s)\n", client->http.hostname,
-           client->http.hostaddr->addr.sa_family == AF_INET ? "IPv4" : "IPv6");
+    fprintf(stderr, "Closing connection from %s\n", client->hostname);
 
  /*
   * Flush pending writes before closing...
   */
 
-  httpFlushWrite(&(client->http));
-
-  if (client->http.fd >= 0)
-    close(client->http.fd);
+  httpFlushWrite(client->http);
 
  /*
   * Free memory...
   */
 
-  httpClearCookie(&(client->http));
-  httpClearFields(&(client->http));
+  httpClose(client->http);
 
   ippDelete(client->request);
-
   ippDelete(client->response);
 
   free(client);
@@ -2022,6 +2027,10 @@ delete_printer(_ipp_printer_t *printer)  /* I - Printer */
   if (printer->ipp_ref)
     DNSServiceRefDeallocate(printer->ipp_ref);
 
+#  ifdef HAVE_SSL
+  if (printer->ipps_ref)
+    DNSServiceRefDeallocate(printer->ipps_ref);
+#  endif /* HAVE_SSL */
   if (printer->http_ref)
     DNSServiceRefDeallocate(printer->http_ref);
 
@@ -2031,19 +2040,19 @@ delete_printer(_ipp_printer_t *printer) /* I - Printer */
   TXTRecordDeallocate(&(printer->ipp_txt));
 
   if (printer->dnssd_name)
-    _cupsStrFree(printer->dnssd_name);
+    free(printer->dnssd_name);
 #endif /* HAVE_DNSSD */
 
   if (printer->name)
-    _cupsStrFree(printer->name);
+    free(printer->name);
   if (printer->icon)
-    _cupsStrFree(printer->icon);
+    free(printer->icon);
   if (printer->directory)
-    _cupsStrFree(printer->directory);
+    free(printer->directory);
   if (printer->hostname)
-    _cupsStrFree(printer->hostname);
+    free(printer->hostname);
   if (printer->uri)
-    _cupsStrFree(printer->uri);
+    free(printer->uri);
 
   ippDelete(printer->attrs);
   cupsArrayDelete(printer->jobs);
@@ -2079,8 +2088,8 @@ dnssd_callback(
       fprintf(stderr, "Now using DNS-SD service name \"%s\".\n", name);
 
     /* No lock needed since only the main thread accesses/changes this */
-    _cupsStrFree(printer->dnssd_name);
-    printer->dnssd_name = _cupsStrAlloc(name);
+    free(printer->dnssd_name);
+    printer->dnssd_name = strdup(name);
   }
 }
 #endif /* HAVE_DNSSD */
@@ -2103,14 +2112,15 @@ find_job(_ipp_client_t *client)         /* I - Client */
   if ((attr = ippFindAttribute(client->request, "job-uri",
                                IPP_TAG_URI)) != NULL)
   {
-    if (!strncmp(attr->values[0].string.text, client->printer->uri,
-                 client->printer->urilen) &&
-        attr->values[0].string.text[client->printer->urilen] == '/')
-      key.id = atoi(attr->values[0].string.text + client->printer->urilen + 1);
+    const char *uri = ippGetString(attr, 0, NULL);
+
+    if (!strncmp(uri, client->printer->uri, client->printer->urilen) &&
+        uri[client->printer->urilen] == '/')
+      key.id = atoi(uri + client->printer->urilen + 1);
   }
   else if ((attr = ippFindAttribute(client->request, "job-id",
                                     IPP_TAG_INTEGER)) != NULL)
-    key.id = attr->values[0].integer;
+    key.id = ippGetInteger(attr, 0);
 
   _cupsRWLockRead(&(client->printer->rwlock));
   job = (_ipp_job_t *)cupsArrayFind(client->printer->jobs, &key);
@@ -2141,12 +2151,12 @@ html_escape(_ipp_client_t *client,      /* I - Client */
     if (*s == '&' || *s == '<')
     {
       if (s > start)
-        httpWrite2(&(client->http), start, s - start);
+        httpWrite2(client->http, start, s - start);
 
       if (*s == '&')
-        httpWrite2(&(client->http), "&amp;", 5);
+        httpWrite2(client->http, "&amp;", 5);
       else
-        httpWrite2(&(client->http), "&lt;", 4);
+        httpWrite2(client->http, "&lt;", 4);
 
       start = s + 1;
     }
@@ -2155,7 +2165,7 @@ html_escape(_ipp_client_t *client,        /* I - Client */
   }
 
   if (s > start)
-    httpWrite2(&(client->http), start, s - start);
+    httpWrite2(client->http, start, s - start);
 }
 
 
@@ -2192,14 +2202,14 @@ html_printf(_ipp_client_t *client,      /* I - Client */
     if (*format == '%')
     {
       if (format > start)
-        httpWrite2(&(client->http), start, format - start);
+        httpWrite2(client->http, start, format - start);
 
       tptr    = tformat;
       *tptr++ = *format++;
 
       if (*format == '%')
       {
-        httpWrite2(&(client->http), "%", 1);
+        httpWrite2(client->http, "%", 1);
         format ++;
        continue;
       }
@@ -2312,7 +2322,7 @@ html_printf(_ipp_client_t *client,        /* I - Client */
 
            sprintf(temp, tformat, va_arg(ap, double));
 
-            httpWrite2(&(client->http), temp, strlen(temp));
+            httpWrite2(client->http, temp, strlen(temp));
            break;
 
         case 'B' : /* Integer formats */
@@ -2336,7 +2346,7 @@ html_printf(_ipp_client_t *client,        /* I - Client */
            else
              sprintf(temp, tformat, va_arg(ap, int));
 
-            httpWrite2(&(client->http), temp, strlen(temp));
+            httpWrite2(client->http, temp, strlen(temp));
            break;
 
        case 'p' : /* Pointer value */
@@ -2345,7 +2355,7 @@ html_printf(_ipp_client_t *client,        /* I - Client */
 
            sprintf(temp, tformat, va_arg(ap, void *));
 
-            httpWrite2(&(client->http), temp, strlen(temp));
+            httpWrite2(client->http, temp, strlen(temp));
            break;
 
         case 'c' : /* Character or character array */
@@ -2372,7 +2382,7 @@ html_printf(_ipp_client_t *client,        /* I - Client */
   }
 
   if (format > start)
-    httpWrite2(&(client->http), start, format - start);
+    httpWrite2(client->http, start, format - start);
 
   va_end(ap);
 }
@@ -2394,7 +2404,7 @@ ipp_cancel_job(_ipp_client_t *client)     /* I - Client */
 
   if ((job = find_job(client)) == NULL)
   {
-    respond_ipp(client, IPP_NOT_FOUND, "Job does not exist.");
+    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job does not exist.");
     return;
   }
 
@@ -2405,18 +2415,18 @@ ipp_cancel_job(_ipp_client_t *client)   /* I - Client */
 
   switch (job->state)
   {
-    case IPP_JOB_CANCELED :
-       respond_ipp(client, IPP_NOT_POSSIBLE,
+    case IPP_JSTATE_CANCELED :
+       respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
                    "Job #%d is already canceled - can\'t cancel.", job->id);
         break;
 
-    case IPP_JOB_ABORTED :
-       respond_ipp(client, IPP_NOT_POSSIBLE,
+    case IPP_JSTATE_ABORTED :
+       respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
                    "Job #%d is already aborted - can\'t cancel.", job->id);
         break;
 
-    case IPP_JOB_COMPLETED :
-       respond_ipp(client, IPP_NOT_POSSIBLE,
+    case IPP_JSTATE_COMPLETED :
+       respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
                    "Job #%d is already completed - can\'t cancel.", job->id);
         break;
 
@@ -2427,18 +2437,18 @@ ipp_cancel_job(_ipp_client_t *client)   /* I - Client */
 
        _cupsRWLockWrite(&(client->printer->rwlock));
 
-       if (job->state == IPP_JOB_PROCESSING ||
-           (job->state == IPP_JOB_HELD && job->fd >= 0))
+       if (job->state == IPP_JSTATE_PROCESSING ||
+           (job->state == IPP_JSTATE_HELD && job->fd >= 0))
           job->cancel = 1;
        else
        {
-         job->state     = IPP_JOB_CANCELED;
+         job->state     = IPP_JSTATE_CANCELED;
          job->completed = time(NULL);
        }
 
        _cupsRWUnlock(&(client->printer->rwlock));
 
-       respond_ipp(client, IPP_OK, NULL);
+       respond_ipp(client, IPP_STATUS_OK, NULL);
         break;
   }
 }
@@ -2461,7 +2471,7 @@ ipp_create_job(_ipp_client_t *client)     /* I - Client */
 
   if (!valid_job_attributes(client))
   {
-    httpFlush(&(client->http));
+    httpFlush(client->http);
     return;
   }
 
@@ -2469,9 +2479,9 @@ ipp_create_job(_ipp_client_t *client)     /* I - Client */
   * Do we have a file to print?
   */
 
-  if (client->http.state == HTTP_POST_RECV)
+  if (httpGetState(client->http) == HTTP_STATE_POST_RECV)
   {
-    respond_ipp(client, IPP_BAD_REQUEST,
+    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
                 "Unexpected document data following request.");
     return;
   }
@@ -2482,7 +2492,8 @@ ipp_create_job(_ipp_client_t *client)     /* I - Client */
 
   if ((job = create_job(client)) == NULL)
   {
-    respond_ipp(client, IPP_PRINTER_BUSY, "Currently printing another job.");
+    respond_ipp(client, IPP_STATUS_ERROR_BUSY,
+                "Currently printing another job.");
     return;
   }
 
@@ -2490,7 +2501,7 @@ ipp_create_job(_ipp_client_t *client)     /* I - Client */
   * Return the job info...
   */
 
-  respond_ipp(client, IPP_OK, NULL);
+  respond_ipp(client, IPP_STATUS_OK, NULL);
 
   ra = cupsArrayNew((cups_array_func_t)strcmp, NULL);
   cupsArrayAdd(ra, "job-id");
@@ -2517,11 +2528,11 @@ ipp_get_job_attributes(
 
   if ((job = find_job(client)) == NULL)
   {
-    respond_ipp(client, IPP_NOT_FOUND, "Job not found.");
+    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job not found.");
     return;
   }
 
-  respond_ipp(client, IPP_OK, NULL);
+  respond_ipp(client, IPP_STATUS_OK, NULL);
 
   ra = create_requested_array(client);
   copy_job_attributes(client, job, ra);
@@ -2537,6 +2548,8 @@ static void
 ipp_get_jobs(_ipp_client_t *client)    /* I - Client */
 {
   ipp_attribute_t      *attr;          /* Current attribute */
+  const char           *which_jobs = NULL;
+                                       /* which-jobs values */
   int                  job_comparison; /* Job comparison */
   ipp_jstate_t         job_state;      /* job-state value */
   int                  first_job_id,   /* First job ID */
@@ -2553,61 +2566,62 @@ ipp_get_jobs(_ipp_client_t *client)     /* I - Client */
 
   if ((attr = ippFindAttribute(client->request, "which-jobs",
                                IPP_TAG_KEYWORD)) != NULL)
-    fprintf(stderr, "%s Get-Jobs which-jobs=%s", client->http.hostname,
-            attr->values[0].string.text);
+  {
+    which_jobs = ippGetString(attr, 0, NULL);
+    fprintf(stderr, "%s Get-Jobs which-jobs=%s", client->hostname, which_jobs);
+  }
 
-  if (!attr || !strcmp(attr->values[0].string.text, "not-completed"))
+  if (!which_jobs || !strcmp(which_jobs, "not-completed"))
   {
     job_comparison = -1;
-    job_state      = IPP_JOB_STOPPED;
+    job_state      = IPP_JSTATE_STOPPED;
   }
-  else if (!strcmp(attr->values[0].string.text, "completed"))
+  else if (!strcmp(which_jobs, "completed"))
   {
     job_comparison = 1;
-    job_state      = IPP_JOB_CANCELED;
+    job_state      = IPP_JSTATE_CANCELED;
   }
-  else if (!strcmp(attr->values[0].string.text, "aborted"))
+  else if (!strcmp(which_jobs, "aborted"))
   {
     job_comparison = 0;
-    job_state      = IPP_JOB_ABORTED;
+    job_state      = IPP_JSTATE_ABORTED;
   }
-  else if (!strcmp(attr->values[0].string.text, "all"))
+  else if (!strcmp(which_jobs, "all"))
   {
     job_comparison = 1;
-    job_state      = IPP_JOB_PENDING;
+    job_state      = IPP_JSTATE_PENDING;
   }
-  else if (!strcmp(attr->values[0].string.text, "canceled"))
+  else if (!strcmp(which_jobs, "canceled"))
   {
     job_comparison = 0;
-    job_state      = IPP_JOB_CANCELED;
+    job_state      = IPP_JSTATE_CANCELED;
   }
-  else if (!strcmp(attr->values[0].string.text, "pending"))
+  else if (!strcmp(which_jobs, "pending"))
   {
     job_comparison = 0;
-    job_state      = IPP_JOB_PENDING;
+    job_state      = IPP_JSTATE_PENDING;
   }
-  else if (!strcmp(attr->values[0].string.text, "pending-held"))
+  else if (!strcmp(which_jobs, "pending-held"))
   {
     job_comparison = 0;
-    job_state      = IPP_JOB_HELD;
+    job_state      = IPP_JSTATE_HELD;
   }
-  else if (!strcmp(attr->values[0].string.text, "processing"))
+  else if (!strcmp(which_jobs, "processing"))
   {
     job_comparison = 0;
-    job_state      = IPP_JOB_PROCESSING;
+    job_state      = IPP_JSTATE_PROCESSING;
   }
-  else if (!strcmp(attr->values[0].string.text, "processing-stopped"))
+  else if (!strcmp(which_jobs, "processing-stopped"))
   {
     job_comparison = 0;
-    job_state      = IPP_JOB_STOPPED;
+    job_state      = IPP_JSTATE_STOPPED;
   }
   else
   {
-    respond_ipp(client, IPP_ATTRIBUTES,
-                "The which-jobs value \"%s\" is not supported.",
-                attr->values[0].string.text);
+    respond_ipp(client, IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES,
+                "The which-jobs value \"%s\" is not supported.", which_jobs);
     ippAddString(client->response, IPP_TAG_UNSUPPORTED_GROUP, IPP_TAG_KEYWORD,
-                 "which-jobs", NULL, attr->values[0].string.text);
+                 "which-jobs", NULL, which_jobs);
     return;
   }
 
@@ -2618,9 +2632,9 @@ ipp_get_jobs(_ipp_client_t *client)       /* I - Client */
   if ((attr = ippFindAttribute(client->request, "limit",
                                IPP_TAG_INTEGER)) != NULL)
   {
-    limit = attr->values[0].integer;
+    limit = ippGetInteger(attr, 0);
 
-    fprintf(stderr, "%s Get-Jobs limit=%d", client->http.hostname, limit);
+    fprintf(stderr, "%s Get-Jobs limit=%d", client->hostname, limit);
   }
   else
     limit = 0;
@@ -2628,9 +2642,9 @@ ipp_get_jobs(_ipp_client_t *client)       /* I - Client */
   if ((attr = ippFindAttribute(client->request, "first-job-id",
                                IPP_TAG_INTEGER)) != NULL)
   {
-    first_job_id = attr->values[0].integer;
+    first_job_id = ippGetInteger(attr, 0);
 
-    fprintf(stderr, "%s Get-Jobs first-job-id=%d", client->http.hostname,
+    fprintf(stderr, "%s Get-Jobs first-job-id=%d", client->hostname,
             first_job_id);
   }
   else
@@ -2645,23 +2659,25 @@ ipp_get_jobs(_ipp_client_t *client)     /* I - Client */
   if ((attr = ippFindAttribute(client->request, "my-jobs",
                                IPP_TAG_BOOLEAN)) != NULL)
   {
-    fprintf(stderr, "%s Get-Jobs my-jobs=%s\n", client->http.hostname,
-            attr->values[0].boolean ? "true" : "false");
+    int my_jobs = ippGetBoolean(attr, 0);
+
+    fprintf(stderr, "%s Get-Jobs my-jobs=%s\n", client->hostname,
+            my_jobs ? "true" : "false");
 
-    if (attr->values[0].boolean)
+    if (my_jobs)
     {
       if ((attr = ippFindAttribute(client->request, "requesting-user-name",
                                        IPP_TAG_NAME)) == NULL)
       {
-       respond_ipp(client, IPP_BAD_REQUEST,
+       respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
                    "Need requesting-user-name with my-jobs.");
        return;
       }
 
-      username = attr->values[0].string.text;
+      username = ippGetString(attr, 0, NULL);
 
       fprintf(stderr, "%s Get-Jobs requesting-user-name=\"%s\"\n",
-              client->http.hostname, username);
+              client->hostname, username);
     }
   }
 
@@ -2683,7 +2699,7 @@ ipp_get_jobs(_ipp_client_t *client)       /* I - Client */
     cupsArrayAdd(ra, "job-uri");
   }
 
-  respond_ipp(client, IPP_OK, NULL);
+  respond_ipp(client, IPP_STATUS_OK, NULL);
 
   _cupsRWLockRead(&(client->printer->rwlock));
 
@@ -2699,7 +2715,8 @@ ipp_get_jobs(_ipp_client_t *client)       /* I - Client */
        (job_comparison == 0 && job->state != job_state) ||
        (job_comparison > 0 && job->state < job_state) ||
        job->id < first_job_id ||
-       (username && job->username && _cups_strcasecmp(username, job->username)))
+       (username && job->username &&
+        _cups_strcasecmp(username, job->username)))
       continue;
 
     if (count > 0)
@@ -2734,12 +2751,12 @@ ipp_get_printer_attributes(
   ra      = create_requested_array(client);
   printer = client->printer;
 
-  respond_ipp(client, IPP_OK, NULL);
+  respond_ipp(client, IPP_STATUS_OK, NULL);
 
   _cupsRWLockRead(&(printer->rwlock));
 
   copy_attributes(client->response, printer->attrs, ra, IPP_TAG_ZERO,
-                 IPP_TAG_COPY);
+                 IPP_TAG_CUPS_CONST);
 
   if (!ra || cupsArrayFind(ra, "printer-state"))
     ippAddInteger(client->response, IPP_TAG_PRINTER, IPP_TAG_ENUM,
@@ -2747,51 +2764,51 @@ ipp_get_printer_attributes(
 
   if (!ra || cupsArrayFind(ra, "printer-state-reasons"))
   {
-    if (printer->state_reasons == _IPP_PRINTER_NONE)
+    if (printer->state_reasons == _IPP_PSTATE_NONE)
       ippAddString(client->response, IPP_TAG_PRINTER,
-                   IPP_TAG_KEYWORD | IPP_TAG_COPY, "printer-state-reasons",
-                  NULL, "none");
+                   IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+                   "printer-state-reasons", NULL, "none");
     else
     {
       int                      num_reasons = 0;/* Number of reasons */
       const char               *reasons[32];   /* Reason strings */
 
-      if (printer->state_reasons & _IPP_PRINTER_OTHER)
+      if (printer->state_reasons & _IPP_PSTATE_OTHER)
        reasons[num_reasons ++] = "other";
-      if (printer->state_reasons & _IPP_PRINTER_COVER_OPEN)
+      if (printer->state_reasons & _IPP_PSTATE_COVER_OPEN)
        reasons[num_reasons ++] = "cover-open";
-      if (printer->state_reasons & _IPP_PRINTER_INPUT_TRAY_MISSING)
+      if (printer->state_reasons & _IPP_PSTATE_INPUT_TRAY_MISSING)
        reasons[num_reasons ++] = "input-tray-missing";
-      if (printer->state_reasons & _IPP_PRINTER_MARKER_SUPPLY_EMPTY)
+      if (printer->state_reasons & _IPP_PSTATE_MARKER_SUPPLY_EMPTY)
        reasons[num_reasons ++] = "marker-supply-empty-warning";
-      if (printer->state_reasons & _IPP_PRINTER_MARKER_SUPPLY_LOW)
+      if (printer->state_reasons & _IPP_PSTATE_MARKER_SUPPLY_LOW)
        reasons[num_reasons ++] = "marker-supply-low-report";
-      if (printer->state_reasons & _IPP_PRINTER_MARKER_WASTE_ALMOST_FULL)
+      if (printer->state_reasons & _IPP_PSTATE_MARKER_WASTE_ALMOST_FULL)
        reasons[num_reasons ++] = "marker-waste-almost-full-report";
-      if (printer->state_reasons & _IPP_PRINTER_MARKER_WASTE_FULL)
+      if (printer->state_reasons & _IPP_PSTATE_MARKER_WASTE_FULL)
        reasons[num_reasons ++] = "marker-waste-full-warning";
-      if (printer->state_reasons & _IPP_PRINTER_MEDIA_EMPTY)
+      if (printer->state_reasons & _IPP_PSTATE_MEDIA_EMPTY)
        reasons[num_reasons ++] = "media-empty-warning";
-      if (printer->state_reasons & _IPP_PRINTER_MEDIA_JAM)
+      if (printer->state_reasons & _IPP_PSTATE_MEDIA_JAM)
        reasons[num_reasons ++] = "media-jam-warning";
-      if (printer->state_reasons & _IPP_PRINTER_MEDIA_LOW)
+      if (printer->state_reasons & _IPP_PSTATE_MEDIA_LOW)
        reasons[num_reasons ++] = "media-low-report";
-      if (printer->state_reasons & _IPP_PRINTER_MEDIA_NEEDED)
+      if (printer->state_reasons & _IPP_PSTATE_MEDIA_NEEDED)
        reasons[num_reasons ++] = "media-needed-report";
-      if (printer->state_reasons & _IPP_PRINTER_MOVING_TO_PAUSED)
+      if (printer->state_reasons & _IPP_PSTATE_MOVING_TO_PAUSED)
        reasons[num_reasons ++] = "moving-to-paused";
-      if (printer->state_reasons & _IPP_PRINTER_PAUSED)
+      if (printer->state_reasons & _IPP_PSTATE_PAUSED)
        reasons[num_reasons ++] = "paused";
-      if (printer->state_reasons & _IPP_PRINTER_SPOOL_AREA_FULL)
+      if (printer->state_reasons & _IPP_PSTATE_SPOOL_AREA_FULL)
        reasons[num_reasons ++] = "spool-area-full";
-      if (printer->state_reasons & _IPP_PRINTER_TONER_EMPTY)
+      if (printer->state_reasons & _IPP_PSTATE_TONER_EMPTY)
        reasons[num_reasons ++] = "toner-empty-warning";
-      if (printer->state_reasons & _IPP_PRINTER_TONER_LOW)
+      if (printer->state_reasons & _IPP_PSTATE_TONER_LOW)
        reasons[num_reasons ++] = "toner-low-report";
 
       ippAddStrings(client->response, IPP_TAG_PRINTER,
-                    IPP_TAG_KEYWORD | IPP_TAG_COPY,  "printer-state-reasons",
-                   num_reasons, NULL, reasons);
+                    IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+                    "printer-state-reasons", num_reasons, NULL, reasons);
     }
   }
 
@@ -2803,7 +2820,7 @@ ipp_get_printer_attributes(
     ippAddInteger(client->response, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
                   "queued-job-count",
                  printer->active_job &&
-                     printer->active_job->state < IPP_JOB_CANCELED);
+                     printer->active_job->state < IPP_JSTATE_CANCELED);
 
   _cupsRWUnlock(&(printer->rwlock));
 
@@ -2831,7 +2848,7 @@ ipp_print_job(_ipp_client_t *client)      /* I - Client */
 
   if (!valid_job_attributes(client))
   {
-    httpFlush(&(client->http));
+    httpFlush(client->http);
     return;
   }
 
@@ -2839,9 +2856,9 @@ ipp_print_job(_ipp_client_t *client)      /* I - Client */
   * Do we have a file to print?
   */
 
-  if (client->http.state == HTTP_POST_SEND)
+  if (httpGetState(client->http) == HTTP_STATE_POST_SEND)
   {
-    respond_ipp(client, IPP_BAD_REQUEST, "No file in request.");
+    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "No file in request.");
     return;
   }
 
@@ -2851,7 +2868,8 @@ ipp_print_job(_ipp_client_t *client)      /* I - Client */
 
   if ((job = create_job(client)) == NULL)
   {
-    respond_ipp(client, IPP_PRINTER_BUSY, "Currently printing another job.");
+    respond_ipp(client, IPP_STATUS_ERROR_BUSY,
+                "Currently printing another job.");
     return;
   }
 
@@ -2877,27 +2895,27 @@ ipp_print_job(_ipp_client_t *client)    /* I - Client */
 
   if ((job->fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0600)) < 0)
   {
-    job->state = IPP_JOB_ABORTED;
+    job->state = IPP_JSTATE_ABORTED;
 
-    respond_ipp(client, IPP_INTERNAL_ERROR,
+    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
                 "Unable to create print file: %s", strerror(errno));
     return;
   }
 
-  while ((bytes = httpRead2(&(client->http), buffer, sizeof(buffer))) > 0)
+  while ((bytes = httpRead2(client->http, buffer, sizeof(buffer))) > 0)
   {
     if (write(job->fd, buffer, bytes) < bytes)
     {
       int error = errno;               /* Write error */
 
-      job->state = IPP_JOB_ABORTED;
+      job->state = IPP_JSTATE_ABORTED;
 
       close(job->fd);
       job->fd = -1;
 
       unlink(filename);
 
-      respond_ipp(client, IPP_INTERNAL_ERROR,
+      respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
                   "Unable to write print file: %s", strerror(error));
       return;
     }
@@ -2909,14 +2927,15 @@ ipp_print_job(_ipp_client_t *client)    /* I - Client */
     * Got an error while reading the print data, so abort this job.
     */
 
-    job->state = IPP_JOB_ABORTED;
+    job->state = IPP_JSTATE_ABORTED;
 
     close(job->fd);
     job->fd = -1;
 
     unlink(filename);
 
-    respond_ipp(client, IPP_INTERNAL_ERROR, "Unable to read print file.");
+    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
+                "Unable to read print file.");
     return;
   }
 
@@ -2924,19 +2943,19 @@ ipp_print_job(_ipp_client_t *client)    /* I - Client */
   {
     int error = errno;         /* Write error */
 
-    job->state = IPP_JOB_ABORTED;
+    job->state = IPP_JSTATE_ABORTED;
     job->fd    = -1;
 
     unlink(filename);
 
-    respond_ipp(client, IPP_INTERNAL_ERROR, "Unable to write print file: %s",
-                strerror(error));
+    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
+                "Unable to write print file: %s", strerror(error));
     return;
   }
 
   job->fd       = -1;
   job->filename = strdup(filename);
-  job->state    = IPP_JOB_PENDING;
+  job->state    = IPP_JSTATE_PENDING;
 
  /*
   * Process the job...
@@ -2945,8 +2964,8 @@ ipp_print_job(_ipp_client_t *client)      /* I - Client */
 #if 0
   if (!_cupsThreadCreate((_cups_thread_func_t)process_job, job))
   {
-    job->state = IPP_JOB_ABORTED;
-    respond_ipp(client, IPP_INTERNAL_ERROR, "Unable to process job.");
+    job->state = IPP_JSTATE_ABORTED;
+    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL, "Unable to process job.");
     return;
   }
 
@@ -2958,7 +2977,7 @@ ipp_print_job(_ipp_client_t *client)      /* I - Client */
   * Return the job info...
   */
 
-  respond_ipp(client, IPP_OK, NULL);
+  respond_ipp(client, IPP_STATUS_OK, NULL);
 
   ra = cupsArrayNew((cups_array_func_t)strcmp, NULL);
   cupsArrayAdd(ra, "job-id");
@@ -3013,7 +3032,7 @@ ipp_print_uri(_ipp_client_t *client)      /* I - Client */
 
   if (!valid_job_attributes(client))
   {
-    httpFlush(&(client->http));
+    httpFlush(client->http);
     return;
   }
 
@@ -3021,9 +3040,9 @@ ipp_print_uri(_ipp_client_t *client)      /* I - Client */
   * Do we have a file to print?
   */
 
-  if (client->http.state == HTTP_POST_RECV)
+  if (httpGetState(client->http) == HTTP_STATE_POST_RECV)
   {
-    respond_ipp(client, IPP_BAD_REQUEST,
+    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
                 "Unexpected document data following request.");
     return;
   }
@@ -3035,24 +3054,25 @@ ipp_print_uri(_ipp_client_t *client)    /* I - Client */
   if ((uri = ippFindAttribute(client->request, "document-uri",
                               IPP_TAG_URI)) == NULL)
   {
-    respond_ipp(client, IPP_BAD_REQUEST, "Missing document-uri.");
+    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "Missing document-uri.");
     return;
   }
 
-  if (uri->num_values != 1)
+  if (ippGetCount(uri) != 1)
   {
-    respond_ipp(client, IPP_BAD_REQUEST, "Too many document-uri values.");
+    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
+                "Too many document-uri values.");
     return;
   }
 
-  uri_status = httpSeparateURI(HTTP_URI_CODING_ALL, uri->values[0].string.text,
+  uri_status = httpSeparateURI(HTTP_URI_CODING_ALL, ippGetString(uri, 0, NULL),
                                scheme, sizeof(scheme), userpass,
                                sizeof(userpass), hostname, sizeof(hostname),
                                &port, resource, sizeof(resource));
-  if (uri_status < HTTP_URI_OK)
+  if (uri_status < HTTP_URI_STATUS_OK)
   {
-    respond_ipp(client, IPP_BAD_REQUEST, "Bad document-uri: %s",
-                uri_status_strings[uri_status - HTTP_URI_OVERFLOW]);
+    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "Bad document-uri: %s",
+                uri_status_strings[uri_status - HTTP_URI_STATUS_OVERFLOW]);
     return;
   }
 
@@ -3062,15 +3082,15 @@ ipp_print_uri(_ipp_client_t *client)    /* I - Client */
 #endif /* HAVE_SSL */
       strcmp(scheme, "http"))
   {
-    respond_ipp(client, IPP_URI_SCHEME, "URI scheme \"%s\" not supported.",
-                scheme);
+    respond_ipp(client, IPP_STATUS_ERROR_URI_SCHEME,
+                "URI scheme \"%s\" not supported.", scheme);
     return;
   }
 
   if (!strcmp(scheme, "file") && access(resource, R_OK))
   {
-    respond_ipp(client, IPP_DOCUMENT_ACCESS_ERROR, "Unable to access URI: %s",
-                strerror(errno));
+    respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
+                "Unable to access URI: %s", strerror(errno));
     return;
   }
 
@@ -3080,7 +3100,8 @@ ipp_print_uri(_ipp_client_t *client)      /* I - Client */
 
   if ((job = create_job(client)) == NULL)
   {
-    respond_ipp(client, IPP_PRINTER_BUSY, "Currently printing another job.");
+    respond_ipp(client, IPP_STATUS_ERROR_BUSY,
+                "Currently printing another job.");
     return;
   }
 
@@ -3106,9 +3127,9 @@ ipp_print_uri(_ipp_client_t *client)      /* I - Client */
 
   if ((job->fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0600)) < 0)
   {
-    job->state = IPP_JOB_ABORTED;
+    job->state = IPP_JSTATE_ABORTED;
 
-    respond_ipp(client, IPP_INTERNAL_ERROR,
+    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
                 "Unable to create print file: %s", strerror(errno));
     return;
   }
@@ -3117,8 +3138,8 @@ ipp_print_uri(_ipp_client_t *client)      /* I - Client */
   {
     if ((infile = open(resource, O_RDONLY)) < 0)
     {
-      respond_ipp(client, IPP_DOCUMENT_ACCESS_ERROR, "Unable to access URI: %s",
-                 strerror(errno));
+      respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
+                  "Unable to access URI: %s", strerror(errno));
       return;
     }
 
@@ -3131,7 +3152,7 @@ ipp_print_uri(_ipp_client_t *client)      /* I - Client */
       {
        int error = errno;              /* Write error */
 
-       job->state = IPP_JOB_ABORTED;
+       job->state = IPP_JSTATE_ABORTED;
 
        close(job->fd);
        job->fd = -1;
@@ -3139,7 +3160,7 @@ ipp_print_uri(_ipp_client_t *client)      /* I - Client */
        unlink(filename);
        close(infile);
 
-       respond_ipp(client, IPP_INTERNAL_ERROR,
+       respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
                    "Unable to write print file: %s", strerror(error));
        return;
       }
@@ -3152,17 +3173,18 @@ ipp_print_uri(_ipp_client_t *client)    /* I - Client */
   {
 #ifdef HAVE_SSL
     if (port == 443 || !strcmp(scheme, "https"))
-      encryption = HTTP_ENCRYPT_ALWAYS;
+      encryption = HTTP_ENCRYPTION_ALWAYS;
     else
 #endif /* HAVE_SSL */
-    encryption = HTTP_ENCRYPT_IF_REQUESTED;
+    encryption = HTTP_ENCRYPTION_IF_REQUESTED;
 
-    if ((http = httpConnectEncrypt(hostname, port, encryption)) == NULL)
+    if ((http = httpConnect2(hostname, port, NULL, AF_UNSPEC, encryption,
+                             1, 30000, NULL)) == NULL)
     {
-      respond_ipp(client, IPP_DOCUMENT_ACCESS_ERROR,
+      respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
                   "Unable to connect to %s: %s", hostname,
                  cupsLastErrorString());
-      job->state = IPP_JOB_ABORTED;
+      job->state = IPP_JSTATE_ABORTED;
 
       close(job->fd);
       job->fd = -1;
@@ -3175,10 +3197,10 @@ ipp_print_uri(_ipp_client_t *client)    /* I - Client */
     httpSetField(http, HTTP_FIELD_ACCEPT_LANGUAGE, "en");
     if (httpGet(http, resource))
     {
-      respond_ipp(client, IPP_DOCUMENT_ACCESS_ERROR, "Unable to GET URI: %s",
-                 strerror(errno));
+      respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
+                  "Unable to GET URI: %s", strerror(errno));
 
-      job->state = IPP_JOB_ABORTED;
+      job->state = IPP_JSTATE_ABORTED;
 
       close(job->fd);
       job->fd = -1;
@@ -3188,14 +3210,14 @@ ipp_print_uri(_ipp_client_t *client)    /* I - Client */
       return;
     }
 
-    while ((status = httpUpdate(http)) == HTTP_CONTINUE);
+    while ((status = httpUpdate(http)) == HTTP_STATUS_CONTINUE);
 
-    if (status != HTTP_OK)
+    if (status != HTTP_STATUS_OK)
     {
-      respond_ipp(client, IPP_DOCUMENT_ACCESS_ERROR, "Unable to GET URI: %s",
-                 httpStatus(status));
+      respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
+                  "Unable to GET URI: %s", httpStatus(status));
 
-      job->state = IPP_JOB_ABORTED;
+      job->state = IPP_JSTATE_ABORTED;
 
       close(job->fd);
       job->fd = -1;
@@ -3211,7 +3233,7 @@ ipp_print_uri(_ipp_client_t *client)      /* I - Client */
       {
        int error = errno;              /* Write error */
 
-       job->state = IPP_JOB_ABORTED;
+       job->state = IPP_JSTATE_ABORTED;
 
        close(job->fd);
        job->fd = -1;
@@ -3219,7 +3241,7 @@ ipp_print_uri(_ipp_client_t *client)      /* I - Client */
        unlink(filename);
        httpClose(http);
 
-       respond_ipp(client, IPP_INTERNAL_ERROR,
+       respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
                    "Unable to write print file: %s", strerror(error));
        return;
       }
@@ -3232,19 +3254,19 @@ ipp_print_uri(_ipp_client_t *client)    /* I - Client */
   {
     int error = errno;         /* Write error */
 
-    job->state = IPP_JOB_ABORTED;
+    job->state = IPP_JSTATE_ABORTED;
     job->fd    = -1;
 
     unlink(filename);
 
-    respond_ipp(client, IPP_INTERNAL_ERROR, "Unable to write print file: %s",
-               strerror(error));
+    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
+                "Unable to write print file: %s", strerror(error));
     return;
   }
 
   job->fd       = -1;
   job->filename = strdup(filename);
-  job->state    = IPP_JOB_PENDING;
+  job->state    = IPP_JSTATE_PENDING;
 
  /*
   * Process the job...
@@ -3253,8 +3275,8 @@ ipp_print_uri(_ipp_client_t *client)      /* I - Client */
 #if 0
   if (!_cupsThreadCreate((_cups_thread_func_t)process_job, job))
   {
-    job->state = IPP_JOB_ABORTED;
-    respond_ipp(client, IPP_INTERNAL_ERROR, "Unable to process job.");
+    job->state = IPP_JSTATE_ABORTED;
+    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL, "Unable to process job.");
     return;
   }
 
@@ -3266,7 +3288,7 @@ ipp_print_uri(_ipp_client_t *client)      /* I - Client */
   * Return the job info...
   */
 
-  respond_ipp(client, IPP_OK, NULL);
+  respond_ipp(client, IPP_STATUS_OK, NULL);
 
   ra = cupsArrayNew((cups_array_func_t)strcmp, NULL);
   cupsArrayAdd(ra, "job-id");
@@ -3301,8 +3323,8 @@ ipp_send_document(_ipp_client_t *client)/* I - Client */
 
   if ((job = find_job(client)) == NULL)
   {
-    respond_ipp(client, IPP_NOT_FOUND, "Job does not exist.");
-    httpFlush(&(client->http));
+    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job does not exist.");
+    httpFlush(client->http);
     return;
   }
 
@@ -3311,33 +3333,34 @@ ipp_send_document(_ipp_client_t *client)/* I - Client */
   * in a non-pending state...
   */
 
-  if (job->state > IPP_JOB_HELD)
+  if (job->state > IPP_JSTATE_HELD)
   {
-    respond_ipp(client, IPP_NOT_POSSIBLE, "Job is not in a pending state.");
-    httpFlush(&(client->http));
+    respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
+                "Job is not in a pending state.");
+    httpFlush(client->http);
     return;
   }
   else if (job->filename || job->fd >= 0)
   {
-    respond_ipp(client, IPP_MULTIPLE_JOBS_NOT_SUPPORTED,
+    respond_ipp(client, IPP_STATUS_ERROR_MULTIPLE_JOBS_NOT_SUPPORTED,
                 "Multiple document jobs are not supported.");
-    httpFlush(&(client->http));
+    httpFlush(client->http);
     return;
   }
 
   if ((attr = ippFindAttribute(client->request, "last-document",
                                IPP_TAG_ZERO)) == NULL)
   {
-    respond_ipp(client, IPP_BAD_REQUEST,
+    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
                 "Missing required last-document attribute.");
-    httpFlush(&(client->http));
+    httpFlush(client->http);
     return;
   }
-  else if (attr->value_tag != IPP_TAG_BOOLEAN || attr->num_values != 1 ||
-           !attr->values[0].boolean)
+  else if (ippGetValueTag(attr) != IPP_TAG_BOOLEAN || ippGetCount(attr) != 1 ||
+           !ippGetBoolean(attr, 0))
   {
     respond_unsupported(client, attr);
-    httpFlush(&(client->http));
+    httpFlush(client->http);
     return;
   }
 
@@ -3347,7 +3370,7 @@ ipp_send_document(_ipp_client_t *client)/* I - Client */
 
   if (!valid_doc_attributes(client))
   {
-    httpFlush(&(client->http));
+    httpFlush(client->http);
     return;
   }
 
@@ -3359,7 +3382,7 @@ ipp_send_document(_ipp_client_t *client)/* I - Client */
 
   if ((attr = ippFindAttribute(job->attrs, "document-format",
                                IPP_TAG_MIMETYPE)) != NULL)
-    job->format = attr->values[0].string.text;
+    job->format = ippGetString(attr, 0, NULL);
   else
     job->format = "application/octet-stream";
 
@@ -3389,27 +3412,27 @@ ipp_send_document(_ipp_client_t *client)/* I - Client */
 
   if (job->fd < 0)
   {
-    job->state = IPP_JOB_ABORTED;
+    job->state = IPP_JSTATE_ABORTED;
 
-    respond_ipp(client, IPP_INTERNAL_ERROR,
+    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
                 "Unable to create print file: %s", strerror(errno));
     return;
   }
 
-  while ((bytes = httpRead2(&(client->http), buffer, sizeof(buffer))) > 0)
+  while ((bytes = httpRead2(client->http, buffer, sizeof(buffer))) > 0)
   {
     if (write(job->fd, buffer, bytes) < bytes)
     {
       int error = errno;               /* Write error */
 
-      job->state = IPP_JOB_ABORTED;
+      job->state = IPP_JSTATE_ABORTED;
 
       close(job->fd);
       job->fd = -1;
 
       unlink(filename);
 
-      respond_ipp(client, IPP_INTERNAL_ERROR,
+      respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
                   "Unable to write print file: %s", strerror(error));
       return;
     }
@@ -3421,14 +3444,15 @@ ipp_send_document(_ipp_client_t *client)/* I - Client */
     * Got an error while reading the print data, so abort this job.
     */
 
-    job->state = IPP_JOB_ABORTED;
+    job->state = IPP_JSTATE_ABORTED;
 
     close(job->fd);
     job->fd = -1;
 
     unlink(filename);
 
-    respond_ipp(client, IPP_INTERNAL_ERROR, "Unable to read print file.");
+    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
+                "Unable to read print file.");
     return;
   }
 
@@ -3436,13 +3460,13 @@ ipp_send_document(_ipp_client_t *client)/* I - Client */
   {
     int error = errno;                 /* Write error */
 
-    job->state = IPP_JOB_ABORTED;
+    job->state = IPP_JSTATE_ABORTED;
     job->fd    = -1;
 
     unlink(filename);
 
-    respond_ipp(client, IPP_INTERNAL_ERROR, "Unable to write print file: %s",
-                strerror(error));
+    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
+                "Unable to write print file: %s", strerror(error));
     return;
   }
 
@@ -3450,7 +3474,7 @@ ipp_send_document(_ipp_client_t *client)/* I - Client */
 
   job->fd       = -1;
   job->filename = strdup(filename);
-  job->state    = IPP_JOB_PENDING;
+  job->state    = IPP_JSTATE_PENDING;
 
   _cupsRWUnlock(&(client->printer->rwlock));
 
@@ -3461,8 +3485,8 @@ ipp_send_document(_ipp_client_t *client)/* I - Client */
 #if 0
   if (!_cupsThreadCreate((_cups_thread_func_t)process_job, job))
   {
-    job->state = IPP_JOB_ABORTED;
-    respond_ipp(client, IPP_INTERNAL_ERROR, "Unable to process job.");
+    job->state = IPP_JSTATE_ABORTED;
+    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL, "Unable to process job.");
     return;
   }
 
@@ -3474,7 +3498,7 @@ ipp_send_document(_ipp_client_t *client)/* I - Client */
   * Return the job info...
   */
 
-  respond_ipp(client, IPP_OK, NULL);
+  respond_ipp(client, IPP_STATUS_OK, NULL);
 
   ra = cupsArrayNew((cups_array_func_t)strcmp, NULL);
   cupsArrayAdd(ra, "job-id");
@@ -3531,8 +3555,8 @@ ipp_send_uri(_ipp_client_t *client)       /* I - Client */
 
   if ((job = find_job(client)) == NULL)
   {
-    respond_ipp(client, IPP_NOT_FOUND, "Job does not exist.");
-    httpFlush(&(client->http));
+    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job does not exist.");
+    httpFlush(client->http);
     return;
   }
 
@@ -3541,33 +3565,34 @@ ipp_send_uri(_ipp_client_t *client)     /* I - Client */
   * in a non-pending state...
   */
 
-  if (job->state > IPP_JOB_HELD)
+  if (job->state > IPP_JSTATE_HELD)
   {
-    respond_ipp(client, IPP_NOT_POSSIBLE, "Job is not in a pending state.");
-    httpFlush(&(client->http));
+    respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
+                "Job is not in a pending state.");
+    httpFlush(client->http);
     return;
   }
   else if (job->filename || job->fd >= 0)
   {
-    respond_ipp(client, IPP_MULTIPLE_JOBS_NOT_SUPPORTED,
+    respond_ipp(client, IPP_STATUS_ERROR_MULTIPLE_JOBS_NOT_SUPPORTED,
                 "Multiple document jobs are not supported.");
-    httpFlush(&(client->http));
+    httpFlush(client->http);
     return;
   }
 
   if ((attr = ippFindAttribute(client->request, "last-document",
                                IPP_TAG_ZERO)) == NULL)
   {
-    respond_ipp(client, IPP_BAD_REQUEST,
+    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
                 "Missing required last-document attribute.");
-    httpFlush(&(client->http));
+    httpFlush(client->http);
     return;
   }
-  else if (attr->value_tag != IPP_TAG_BOOLEAN || attr->num_values != 1 ||
-           !attr->values[0].boolean)
+  else if (ippGetValueTag(attr) != IPP_TAG_BOOLEAN || ippGetCount(attr) != 1 ||
+           !ippGetBoolean(attr, 0))
   {
     respond_unsupported(client, attr);
-    httpFlush(&(client->http));
+    httpFlush(client->http);
     return;
   }
 
@@ -3577,7 +3602,7 @@ ipp_send_uri(_ipp_client_t *client)       /* I - Client */
 
   if (!valid_doc_attributes(client))
   {
-    httpFlush(&(client->http));
+    httpFlush(client->http);
     return;
   }
 
@@ -3585,9 +3610,9 @@ ipp_send_uri(_ipp_client_t *client)       /* I - Client */
   * Do we have a file to print?
   */
 
-  if (client->http.state == HTTP_POST_RECV)
+  if (httpGetState(client->http) == HTTP_STATE_POST_RECV)
   {
-    respond_ipp(client, IPP_BAD_REQUEST,
+    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
                 "Unexpected document data following request.");
     return;
   }
@@ -3599,24 +3624,25 @@ ipp_send_uri(_ipp_client_t *client)     /* I - Client */
   if ((uri = ippFindAttribute(client->request, "document-uri",
                               IPP_TAG_URI)) == NULL)
   {
-    respond_ipp(client, IPP_BAD_REQUEST, "Missing document-uri.");
+    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "Missing document-uri.");
     return;
   }
 
-  if (uri->num_values != 1)
+  if (ippGetCount(uri) != 1)
   {
-    respond_ipp(client, IPP_BAD_REQUEST, "Too many document-uri values.");
+    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
+                "Too many document-uri values.");
     return;
   }
 
-  uri_status = httpSeparateURI(HTTP_URI_CODING_ALL, uri->values[0].string.text,
+  uri_status = httpSeparateURI(HTTP_URI_CODING_ALL, ippGetString(uri, 0, NULL),
                                scheme, sizeof(scheme), userpass,
                                sizeof(userpass), hostname, sizeof(hostname),
                                &port, resource, sizeof(resource));
-  if (uri_status < HTTP_URI_OK)
+  if (uri_status < HTTP_URI_STATUS_OK)
   {
-    respond_ipp(client, IPP_BAD_REQUEST, "Bad document-uri: %s",
-                uri_status_strings[uri_status - HTTP_URI_OVERFLOW]);
+    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "Bad document-uri: %s",
+                uri_status_strings[uri_status - HTTP_URI_STATUS_OVERFLOW]);
     return;
   }
 
@@ -3626,15 +3652,15 @@ ipp_send_uri(_ipp_client_t *client)     /* I - Client */
 #endif /* HAVE_SSL */
       strcmp(scheme, "http"))
   {
-    respond_ipp(client, IPP_URI_SCHEME, "URI scheme \"%s\" not supported.",
-                scheme);
+    respond_ipp(client, IPP_STATUS_ERROR_URI_SCHEME,
+                "URI scheme \"%s\" not supported.", scheme);
     return;
   }
 
   if (!strcmp(scheme, "file") && access(resource, R_OK))
   {
-    respond_ipp(client, IPP_DOCUMENT_ACCESS_ERROR, "Unable to access URI: %s",
-                strerror(errno));
+    respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
+                "Unable to access URI: %s", strerror(errno));
     return;
   }
 
@@ -3646,7 +3672,7 @@ ipp_send_uri(_ipp_client_t *client)       /* I - Client */
 
   if ((attr = ippFindAttribute(job->attrs, "document-format",
                                IPP_TAG_MIMETYPE)) != NULL)
-    job->format = attr->values[0].string.text;
+    job->format = ippGetString(attr, 0, NULL);
   else
     job->format = "application/octet-stream";
 
@@ -3676,9 +3702,9 @@ ipp_send_uri(_ipp_client_t *client)       /* I - Client */
 
   if (job->fd < 0)
   {
-    job->state = IPP_JOB_ABORTED;
+    job->state = IPP_JSTATE_ABORTED;
 
-    respond_ipp(client, IPP_INTERNAL_ERROR,
+    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
                 "Unable to create print file: %s", strerror(errno));
     return;
   }
@@ -3687,8 +3713,8 @@ ipp_send_uri(_ipp_client_t *client)       /* I - Client */
   {
     if ((infile = open(resource, O_RDONLY)) < 0)
     {
-      respond_ipp(client, IPP_DOCUMENT_ACCESS_ERROR, "Unable to access URI: %s",
-                 strerror(errno));
+      respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
+                  "Unable to access URI: %s", strerror(errno));
       return;
     }
 
@@ -3701,7 +3727,7 @@ ipp_send_uri(_ipp_client_t *client)       /* I - Client */
       {
        int error = errno;              /* Write error */
 
-       job->state = IPP_JOB_ABORTED;
+       job->state = IPP_JSTATE_ABORTED;
 
        close(job->fd);
        job->fd = -1;
@@ -3709,7 +3735,7 @@ ipp_send_uri(_ipp_client_t *client)       /* I - Client */
        unlink(filename);
        close(infile);
 
-       respond_ipp(client, IPP_INTERNAL_ERROR,
+       respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
                    "Unable to write print file: %s", strerror(error));
        return;
       }
@@ -3722,17 +3748,18 @@ ipp_send_uri(_ipp_client_t *client)     /* I - Client */
   {
 #ifdef HAVE_SSL
     if (port == 443 || !strcmp(scheme, "https"))
-      encryption = HTTP_ENCRYPT_ALWAYS;
+      encryption = HTTP_ENCRYPTION_ALWAYS;
     else
 #endif /* HAVE_SSL */
-    encryption = HTTP_ENCRYPT_IF_REQUESTED;
+    encryption = HTTP_ENCRYPTION_IF_REQUESTED;
 
-    if ((http = httpConnectEncrypt(hostname, port, encryption)) == NULL)
+    if ((http = httpConnect2(hostname, port, NULL, AF_UNSPEC, encryption,
+                             1, 30000, NULL)) == NULL)
     {
-      respond_ipp(client, IPP_DOCUMENT_ACCESS_ERROR,
+      respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
                   "Unable to connect to %s: %s", hostname,
                  cupsLastErrorString());
-      job->state = IPP_JOB_ABORTED;
+      job->state = IPP_JSTATE_ABORTED;
 
       close(job->fd);
       job->fd = -1;
@@ -3745,10 +3772,10 @@ ipp_send_uri(_ipp_client_t *client)     /* I - Client */
     httpSetField(http, HTTP_FIELD_ACCEPT_LANGUAGE, "en");
     if (httpGet(http, resource))
     {
-      respond_ipp(client, IPP_DOCUMENT_ACCESS_ERROR, "Unable to GET URI: %s",
-                 strerror(errno));
+      respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
+                  "Unable to GET URI: %s", strerror(errno));
 
-      job->state = IPP_JOB_ABORTED;
+      job->state = IPP_JSTATE_ABORTED;
 
       close(job->fd);
       job->fd = -1;
@@ -3758,14 +3785,14 @@ ipp_send_uri(_ipp_client_t *client)     /* I - Client */
       return;
     }
 
-    while ((status = httpUpdate(http)) == HTTP_CONTINUE);
+    while ((status = httpUpdate(http)) == HTTP_STATUS_CONTINUE);
 
-    if (status != HTTP_OK)
+    if (status != HTTP_STATUS_OK)
     {
-      respond_ipp(client, IPP_DOCUMENT_ACCESS_ERROR, "Unable to GET URI: %s",
-                 httpStatus(status));
+      respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
+                  "Unable to GET URI: %s", httpStatus(status));
 
-      job->state = IPP_JOB_ABORTED;
+      job->state = IPP_JSTATE_ABORTED;
 
       close(job->fd);
       job->fd = -1;
@@ -3781,7 +3808,7 @@ ipp_send_uri(_ipp_client_t *client)       /* I - Client */
       {
        int error = errno;              /* Write error */
 
-       job->state = IPP_JOB_ABORTED;
+       job->state = IPP_JSTATE_ABORTED;
 
        close(job->fd);
        job->fd = -1;
@@ -3789,7 +3816,7 @@ ipp_send_uri(_ipp_client_t *client)       /* I - Client */
        unlink(filename);
        httpClose(http);
 
-       respond_ipp(client, IPP_INTERNAL_ERROR,
+       respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
                    "Unable to write print file: %s", strerror(error));
        return;
       }
@@ -3802,13 +3829,13 @@ ipp_send_uri(_ipp_client_t *client)     /* I - Client */
   {
     int error = errno;         /* Write error */
 
-    job->state = IPP_JOB_ABORTED;
+    job->state = IPP_JSTATE_ABORTED;
     job->fd    = -1;
 
     unlink(filename);
 
-    respond_ipp(client, IPP_INTERNAL_ERROR, "Unable to write print file: %s",
-               strerror(error));
+    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
+                "Unable to write print file: %s", strerror(error));
     return;
   }
 
@@ -3816,7 +3843,7 @@ ipp_send_uri(_ipp_client_t *client)       /* I - Client */
 
   job->fd       = -1;
   job->filename = strdup(filename);
-  job->state    = IPP_JOB_PENDING;
+  job->state    = IPP_JSTATE_PENDING;
 
   _cupsRWUnlock(&(client->printer->rwlock));
 
@@ -3827,8 +3854,8 @@ ipp_send_uri(_ipp_client_t *client)       /* I - Client */
 #if 0
   if (!_cupsThreadCreate((_cups_thread_func_t)process_job, job))
   {
-    job->state = IPP_JOB_ABORTED;
-    respond_ipp(client, IPP_INTERNAL_ERROR, "Unable to process job.");
+    job->state = IPP_JSTATE_ABORTED;
+    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL, "Unable to process job.");
     return;
   }
 
@@ -3840,7 +3867,7 @@ ipp_send_uri(_ipp_client_t *client)       /* I - Client */
   * Return the job info...
   */
 
-  respond_ipp(client, IPP_OK, NULL);
+  respond_ipp(client, IPP_STATUS_OK, NULL);
 
   ra = cupsArrayNew((cups_array_func_t)strcmp, NULL);
   cupsArrayAdd(ra, "job-id");
@@ -3861,7 +3888,7 @@ static void
 ipp_validate_job(_ipp_client_t *client)        /* I - Client */
 {
   if (valid_job_attributes(client))
-    respond_ipp(client, IPP_OK, NULL);
+    respond_ipp(client, IPP_STATUS_OK, NULL);
 }
 
 
@@ -3876,7 +3903,7 @@ process_client(_ipp_client_t *client)     /* I - Client */
   * Loop until we are out of requests or timeout (30 seconds)...
   */
 
-  while (httpWait(&(client->http), 30000))
+  while (httpWait(client->http, 30000))
     if (!process_http(client))
       break;
 
@@ -3897,175 +3924,126 @@ process_client(_ipp_client_t *client) /* I - Client */
 int                                    /* O - 1 on success, 0 on failure */
 process_http(_ipp_client_t *client)    /* I - Client connection */
 {
-  char                 line[4096],     /* Line from client... */
-                       operation[64],  /* Operation code from socket */
-                       uri[1024],      /* URI */
-                       version[64],    /* HTTP version number string */
-                       *ptr;           /* Pointer into strings */
-  int                  major, minor;   /* HTTP version numbers */
-  http_status_t                status;         /* Transfer status */
-  ipp_state_t          state;          /* State of IPP transfer */
-
-
- /*
-  * Abort if we have an error on the connection...
-  */
+  char                 uri[1024];      /* URI */
+  http_state_t         http_state;     /* HTTP state */
+  http_status_t                http_status;    /* HTTP status */
+  ipp_state_t          ipp_state;      /* State of IPP transfer */
+  char                 scheme[32],     /* Method/scheme */
+                       userpass[128],  /* Username:password */
+                       hostname[HTTP_MAX_HOST];
+                                       /* Hostname */
+  int                  port;           /* Port number */
+  const char           *encoding;      /* Content-Encoding value */
+  static const char * const http_states[] =
+  {                                    /* Strings for logging HTTP method */
+    "WAITING",
+    "OPTIONS",
+    "GET",
+    "GET_SEND",
+    "HEAD",
+    "POST",
+    "POST_RECV",
+    "POST_SEND",
+    "PUT",
+    "PUT_RECV",
+    "DELETE",
+    "TRACE",
+    "CONNECT",
+    "STATUS",
+    "UNKNOWN_METHOD",
+    "UNKNOWN_VERSION"
+  };
 
-  if (client->http.error)
-    return (0);
 
  /*
   * Clear state variables...
   */
 
-  httpClearFields(&(client->http));
   ippDelete(client->request);
   ippDelete(client->response);
 
-  client->http.activity       = time(NULL);
-  client->http.version        = HTTP_1_1;
-  client->http.keep_alive     = HTTP_KEEPALIVE_OFF;
-  client->http.data_encoding  = HTTP_ENCODE_LENGTH;
-  client->http.data_remaining = 0;
-  client->request             = NULL;
-  client->response            = NULL;
-  client->operation           = HTTP_WAITING;
+  client->request   = NULL;
+  client->response  = NULL;
+  client->operation = HTTP_STATE_WAITING;
 
  /*
   * Read a request from the connection...
   */
 
-  while ((ptr = httpGets(line, sizeof(line) - 1, &(client->http))) != NULL)
-    if (*ptr)
-      break;
-
-  if (!ptr)
-    return (0);
+  while ((http_state = httpReadRequest(client->http, uri,
+                                       sizeof(uri))) == HTTP_STATE_WAITING)
+    usleep(1);
 
  /*
   * Parse the request line...
   */
 
-  fprintf(stderr, "%s %s\n", client->http.hostname, line);
-
-  switch (sscanf(line, "%63s%1023s%63s", operation, uri, version))
+  if (http_state == HTTP_STATE_ERROR)
   {
-    case 1 :
-       fprintf(stderr, "%s Bad request line.\n", client->http.hostname);
-       respond_http(client, HTTP_BAD_REQUEST, NULL, 0);
-       return (0);
-
-    case 2 :
-       client->http.version = HTTP_0_9;
-       break;
-
-    case 3 :
-       if (sscanf(version, "HTTP/%d.%d", &major, &minor) != 2)
-       {
-         fprintf(stderr, "%s Bad HTTP version.\n", client->http.hostname);
-         respond_http(client, HTTP_BAD_REQUEST, NULL, 0);
-         return (0);
-       }
+    if (httpError(client->http) == EPIPE)
+      fprintf(stderr, "%s Client closed connection.\n", client->hostname);
+    else
+      fprintf(stderr, "%s Bad request line.\n", client->hostname);
 
-       if (major < 2)
-       {
-         client->http.version = (http_version_t)(major * 100 + minor);
-         if (client->http.version == HTTP_1_1)
-           client->http.keep_alive = HTTP_KEEPALIVE_ON;
-         else
-           client->http.keep_alive = HTTP_KEEPALIVE_OFF;
-       }
-       else
-       {
-         respond_http(client, HTTP_NOT_SUPPORTED, NULL, 0);
-         return (0);
-       }
-       break;
+    return (0);
   }
-
- /*
-  * Handle full URLs in the request line...
-  */
-
-  if (!strncmp(client->uri, "http:", 5) || !strncmp(client->uri, "ipp:", 4))
+  else if (http_state == HTTP_STATE_UNKNOWN_METHOD)
   {
-    char       scheme[32],             /* Method/scheme */
-               userpass[128],          /* Username:password */
-               hostname[HTTP_MAX_HOST];/* Hostname */
-    int                port;                   /* Port number */
-
-   /*
-    * Separate the URI into its components...
-    */
-
-    if (httpSeparateURI(HTTP_URI_CODING_MOST, uri, scheme, sizeof(scheme),
-                       userpass, sizeof(userpass),
-                       hostname, sizeof(hostname), &port,
-                       client->uri, sizeof(client->uri)) < HTTP_URI_OK)
-    {
-      fprintf(stderr, "%s Bad URI \"%s\".\n", client->http.hostname, uri);
-      respond_http(client, HTTP_BAD_REQUEST, NULL, 0);
-      return (0);
-    }
+    fprintf(stderr, "%s Bad/unknown operation.\n", client->hostname);
+    respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0);
+    return (0);
   }
-  else
+  else if (http_state == HTTP_STATE_UNKNOWN_VERSION)
   {
-   /*
-    * Decode URI
-    */
-
-    if (!_httpDecodeURI(client->uri, uri, sizeof(client->uri)))
-    {
-      fprintf(stderr, "%s Bad URI \"%s\".\n", client->http.hostname, uri);
-      respond_http(client, HTTP_BAD_REQUEST, NULL, 0);
-      return (0);
-    }
+    fprintf(stderr, "%s Bad HTTP version.\n", client->hostname);
+    respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0);
+    return (0);
   }
 
+  fprintf(stderr, "%s %s %s\n", client->hostname, http_states[http_state],
+          uri);
+
  /*
-  * Process the request...
+  * Separate the URI into its components...
   */
 
-  if (!strcmp(operation, "GET"))
-    client->http.state = HTTP_GET;
-  else if (!strcmp(operation, "POST"))
-    client->http.state = HTTP_POST;
-  else if (!strcmp(operation, "OPTIONS"))
-    client->http.state = HTTP_OPTIONS;
-  else if (!strcmp(operation, "HEAD"))
-    client->http.state = HTTP_HEAD;
-  else
+  if (httpSeparateURI(HTTP_URI_CODING_MOST, uri, scheme, sizeof(scheme),
+                     userpass, sizeof(userpass),
+                     hostname, sizeof(hostname), &port,
+                     client->uri, sizeof(client->uri)) < HTTP_URI_STATUS_OK)
   {
-    fprintf(stderr, "%s Bad operation \"%s\".\n", client->http.hostname,
-            operation);
-    respond_http(client, HTTP_BAD_REQUEST, NULL, 0);
+    fprintf(stderr, "%s Bad URI \"%s\".\n", client->hostname, uri);
+    respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0);
     return (0);
   }
 
-  client->start       = time(NULL);
-  client->operation   = client->http.state;
-  client->http.status = HTTP_OK;
+ /*
+  * Process the request...
+  */
+
+  client->start     = time(NULL);
+  client->operation = httpGetState(client->http);
 
  /*
   * Parse incoming parameters until the status changes...
   */
 
-  while ((status = httpUpdate(&(client->http))) == HTTP_CONTINUE);
+  while ((http_status = httpUpdate(client->http)) == HTTP_STATUS_CONTINUE);
 
-  if (status != HTTP_OK)
+  if (http_status != HTTP_STATUS_OK)
   {
-    respond_http(client, HTTP_BAD_REQUEST, NULL, 0);
+    respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0);
     return (0);
   }
 
-  if (!client->http.fields[HTTP_FIELD_HOST][0] &&
-      client->http.version >= HTTP_1_1)
+  if (!httpGetField(client->http, HTTP_FIELD_HOST)[0] &&
+      httpGetVersion(client->http) >= HTTP_VERSION_1_1)
   {
    /*
     * HTTP/1.1 and higher require the "Host:" field...
     */
 
-    respond_http(client, HTTP_BAD_REQUEST, NULL, 0);
+    respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0);
     return (0);
   }
 
@@ -4073,9 +4051,10 @@ process_http(_ipp_client_t *client)      /* I - Client connection */
   * Handle HTTP Upgrade...
   */
 
-  if (!_cups_strcasecmp(client->http.fields[HTTP_FIELD_CONNECTION], "Upgrade"))
+  if (!_cups_strcasecmp(httpGetField(client->http, HTTP_FIELD_CONNECTION),
+                        "Upgrade"))
   {
-    if (!respond_http(client, HTTP_NOT_IMPLEMENTED, NULL, 0))
+    if (!respond_http(client, HTTP_STATUS_NOT_IMPLEMENTED, NULL, NULL, 0))
       return (0);
   }
 
@@ -4083,16 +4062,17 @@ process_http(_ipp_client_t *client)     /* I - Client connection */
   * Handle HTTP Expect...
   */
 
-  if (client->http.expect &&
-      (client->operation == HTTP_POST || client->operation == HTTP_PUT))
+  if (httpGetExpect(client->http) &&
+      (client->operation == HTTP_STATE_POST ||
+       client->operation == HTTP_STATE_PUT))
   {
-    if (client->http.expect == HTTP_CONTINUE)
+    if (httpGetExpect(client->http) == HTTP_STATUS_CONTINUE)
     {
      /*
       * Send 100-continue header...
       */
 
-      if (!respond_http(client, HTTP_CONTINUE, NULL, 0))
+      if (!respond_http(client, HTTP_STATUS_CONTINUE, NULL, NULL, 0))
        return (0);
     }
     else
@@ -4101,13 +4081,8 @@ process_http(_ipp_client_t *client)      /* I - Client connection */
       * Send 417-expectation-failed header...
       */
 
-      if (!respond_http(client, HTTP_EXPECTATION_FAILED, NULL, 0))
+      if (!respond_http(client, HTTP_STATUS_EXPECTATION_FAILED, NULL, NULL, 0))
        return (0);
-
-      httpPrintf(&(client->http), "Content-Length: 0\r\n");
-      httpPrintf(&(client->http), "\r\n");
-      httpFlushWrite(&(client->http));
-      client->http.data_encoding = HTTP_ENCODE_LENGTH;
     }
   }
 
@@ -4115,25 +4090,27 @@ process_http(_ipp_client_t *client)     /* I - Client connection */
   * Handle new transfers...
   */
 
+  encoding = httpGetContentEncoding(client->http);
+
   switch (client->operation)
   {
-    case HTTP_OPTIONS :
+    case HTTP_STATE_OPTIONS :
        /*
        * Do HEAD/OPTIONS command...
        */
 
-       return (respond_http(client, HTTP_OK, NULL, 0));
+       return (respond_http(client, HTTP_STATUS_OK, NULL, NULL, 0));
 
-    case HTTP_HEAD :
+    case HTTP_STATE_HEAD :
         if (!strcmp(client->uri, "/icon.png"))
-         return (respond_http(client, HTTP_OK, "image/png", 0));
+         return (respond_http(client, HTTP_STATUS_OK, NULL, "image/png", 0));
        else if (!strcmp(client->uri, "/"))
-         return (respond_http(client, HTTP_OK, "text/html", 0));
+         return (respond_http(client, HTTP_STATUS_OK, NULL, "text/html", 0));
        else
-         return (respond_http(client, HTTP_NOT_FOUND, NULL, 0));
+         return (respond_http(client, HTTP_STATUS_NOT_FOUND, NULL, NULL, 0));
        break;
 
-    case HTTP_GET :
+    case HTTP_STATE_GET :
         if (!strcmp(client->uri, "/icon.png"))
        {
         /*
@@ -4145,24 +4122,27 @@ process_http(_ipp_client_t *client)     /* I - Client connection */
          char          buffer[4096];   /* Copy buffer */
          ssize_t       bytes;          /* Bytes */
 
+          fprintf(stderr, "Icon file is \"%s\".\n", client->printer->icon);
+
           if (!stat(client->printer->icon, &fileinfo) &&
              (fd = open(client->printer->icon, O_RDONLY)) >= 0)
          {
-           if (!respond_http(client, HTTP_OK, "image/png", fileinfo.st_size))
+           if (!respond_http(client, HTTP_STATUS_OK, NULL, "image/png",
+                             fileinfo.st_size))
            {
              close(fd);
              return (0);
            }
 
            while ((bytes = read(fd, buffer, sizeof(buffer))) > 0)
-             httpWrite2(&(client->http), buffer, bytes);
+             httpWrite2(client->http, buffer, bytes);
 
-           httpFlushWrite(&(client->http));
+           httpFlushWrite(client->http);
 
            close(fd);
          }
          else
-           return (respond_http(client, HTTP_NOT_FOUND, NULL, 0));
+           return (respond_http(client, HTTP_STATUS_NOT_FOUND, NULL, NULL, 0));
        }
        else if (!strcmp(client->uri, "/"))
        {
@@ -4170,7 +4150,7 @@ process_http(_ipp_client_t *client)       /* I - Client connection */
          * Show web status page...
          */
 
-          if (!respond_http(client, HTTP_OK, "text/html", 0))
+          if (!respond_http(client, HTTP_STATUS_OK, encoding, "text/html", 0))
            return (0);
 
           html_printf(client,
@@ -4184,43 +4164,32 @@ process_http(_ipp_client_t *client)     /* I - Client connection */
                      "</head>\n"
                      "<body>\n"
                      "</body>\n"
-                     "<h1>%s</h1>\n"
+                     "<h1><img align=\"right\" src=\"/icon.png\">%s</h1>\n"
                      "<p>%s, %d job(s).</p>\n"
                      "</body>\n"
                      "</html>\n",
                      client->printer->name, client->printer->name,
-                     client->printer->state == IPP_PRINTER_IDLE ? "Idle" :
-                         client->printer->state == IPP_PRINTER_PROCESSING ?
+                     client->printer->state == IPP_PSTATE_IDLE ? "Idle" :
+                         client->printer->state == IPP_PSTATE_PROCESSING ?
                          "Printing" : "Stopped",
                      cupsArrayCount(client->printer->jobs));
-          httpWrite2(&(client->http), "", 0);
+          httpWrite2(client->http, "", 0);
 
          return (1);
        }
        else
-         return (respond_http(client, HTTP_NOT_FOUND, NULL, 0));
+         return (respond_http(client, HTTP_STATUS_NOT_FOUND, NULL, NULL, 0));
        break;
 
-    case HTTP_POST :
-       if (client->http.data_remaining < 0 ||
-           (!client->http.fields[HTTP_FIELD_CONTENT_LENGTH][0] &&
-            client->http.data_encoding == HTTP_ENCODE_LENGTH))
-       {
-        /*
-         * Negative content lengths are invalid...
-         */
-
-         return (respond_http(client, HTTP_BAD_REQUEST, NULL, 0));
-       }
-
-       if (strcmp(client->http.fields[HTTP_FIELD_CONTENT_TYPE],
+    case HTTP_STATE_POST :
+       if (strcmp(httpGetField(client->http, HTTP_FIELD_CONTENT_TYPE),
                   "application/ipp"))
         {
         /*
          * Not an IPP request...
          */
 
-         return (respond_http(client, HTTP_BAD_REQUEST, NULL, 0));
+         return (respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0));
        }
 
        /*
@@ -4229,14 +4198,17 @@ process_http(_ipp_client_t *client)     /* I - Client connection */
 
        client->request = ippNew();
 
-        while ((state = ippRead(&(client->http), client->request)) != IPP_DATA)
-         if (state == IPP_ERROR)
+        while ((ipp_state = ippRead(client->http,
+                                    client->request)) != IPP_STATE_DATA)
+       {
+         if (ipp_state == IPP_STATE_ERROR)
          {
-            fprintf(stderr, "%s IPP read error (%s).\n", client->http.hostname,
+            fprintf(stderr, "%s IPP read error (%s).\n", client->hostname,
                    cupsLastErrorString());
-           respond_http(client, HTTP_BAD_REQUEST, NULL, 0);
+           respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0);
            return (0);
          }
+       }
 
        /*
         * Now that we have the IPP request, process the request...
@@ -4264,6 +4236,8 @@ process_ipp(_ipp_client_t *client)        /* I - Client */
   ipp_attribute_t      *charset;       /* Character set attribute */
   ipp_attribute_t      *language;      /* Language attribute */
   ipp_attribute_t      *uri;           /* Printer URI attribute */
+  int                  major, minor;   /* Version number */
+  const char           *name;          /* Name of attribute */
 
 
   debug_attributes("Request", client->request, 1);
@@ -4272,37 +4246,30 @@ process_ipp(_ipp_client_t *client)      /* I - Client */
   * First build an empty response message for this request...
   */
 
-  client->operation_id = client->request->request.op.operation_id;
-  client->response     = ippNew();
-
-  client->response->request.status.version[0] =
-      client->request->request.op.version[0];
-  client->response->request.status.version[1] =
-      client->request->request.op.version[1];
-  client->response->request.status.request_id =
-      client->request->request.op.request_id;
+  client->operation_id = ippGetOperation(client->request);
+  client->response     = ippNewResponse(client->request);
 
  /*
   * Then validate the request header and required attributes...
   */
 
-  if (client->request->request.any.version[0] < 1 ||
-      client->request->request.any.version[0] > 2)
+  major = ippGetVersion(client->request, &minor);
+
+  if (major < 1 || major > 2)
   {
    /*
     * Return an error, since we only support IPP 1.x and 2.x.
     */
 
-    respond_ipp(client, IPP_VERSION_NOT_SUPPORTED,
-                "Bad request version number %d.%d.",
-               client->request->request.any.version[0],
-               client->request->request.any.version[1]);
+    respond_ipp(client, IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED,
+                "Bad request version number %d.%d.", major, minor);
   }
-  else if (client->request->request.any.request_id <= 0)
-    respond_ipp(client, IPP_BAD_REQUEST, "Bad request-id %d.",
-                client->request->request.any.request_id);
-  else if (!client->request->attrs)
-    respond_ipp(client, IPP_BAD_REQUEST, "No attributes in request.");
+  else if (ippGetRequestId(client->request) <= 0)
+    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "Bad request-id %d.",
+                ippGetRequestId(client->request));
+  else if (!ippFirstAttribute(client->request))
+    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
+                "No attributes in request.");
   else
   {
    /*
@@ -4310,22 +4277,25 @@ process_ipp(_ipp_client_t *client)      /* I - Client */
     * don't repeat groups...
     */
 
-    for (attr = client->request->attrs, group = attr->group_tag;
+    for (attr = ippFirstAttribute(client->request),
+             group = ippGetGroupTag(attr);
         attr;
-        attr = attr->next)
-      if (attr->group_tag < group && attr->group_tag != IPP_TAG_ZERO)
+        attr = ippNextAttribute(client->request))
+    {
+      if (ippGetGroupTag(attr) < group && ippGetGroupTag(attr) != IPP_TAG_ZERO)
       {
        /*
        * Out of order; return an error...
        */
 
-       respond_ipp(client, IPP_BAD_REQUEST,
-                      "Attribute groups are out of order (%x < %x).",
-                      attr->group_tag, group);
+       respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
+                   "Attribute groups are out of order (%x < %x).",
+                   ippGetGroupTag(attr), group);
        break;
       }
       else
-       group = attr->group_tag;
+       group = ippGetGroupTag(attr);
+    }
 
     if (!attr)
     {
@@ -4337,20 +4307,19 @@ process_ipp(_ipp_client_t *client)      /* I - Client */
       *     printer-uri/job-uri
       */
 
-      attr = client->request->attrs;
-      if (attr && attr->name &&
-          !strcmp(attr->name, "attributes-charset") &&
-         (attr->value_tag & IPP_TAG_MASK) == IPP_TAG_CHARSET)
+      attr = ippFirstAttribute(client->request);
+      name = ippGetName(attr);
+      if (attr && name && !strcmp(name, "attributes-charset") &&
+         ippGetValueTag(attr) == IPP_TAG_CHARSET)
        charset = attr;
       else
        charset = NULL;
 
-      if (attr)
-        attr = attr->next;
+      attr = ippNextAttribute(client->request);
+      name = ippGetName(attr);
 
-      if (attr && attr->name &&
-          !strcmp(attr->name, "attributes-natural-language") &&
-         (attr->value_tag & IPP_TAG_MASK) == IPP_TAG_LANGUAGE)
+      if (attr && name && !strcmp(name, "attributes-natural-language") &&
+         ippGetValueTag(attr) == IPP_TAG_LANGUAGE)
        language = attr;
       else
        language = NULL;
@@ -4364,25 +4333,17 @@ process_ipp(_ipp_client_t *client)      /* I - Client */
       else
        uri = NULL;
 
-      ippAddString(client->response, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
-                  "attributes-charset", NULL,
-                  charset ? charset->values[0].string.text : "utf-8");
-
-      ippAddString(client->response, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
-                  "attributes-natural-language", NULL,
-                  language ? language->values[0].string.text : "en");
-
       if (charset &&
-          _cups_strcasecmp(charset->values[0].string.text, "us-ascii") &&
-          _cups_strcasecmp(charset->values[0].string.text, "utf-8"))
+          _cups_strcasecmp(ippGetString(charset, 0, NULL), "us-ascii") &&
+          _cups_strcasecmp(ippGetString(charset, 0, NULL), "utf-8"))
       {
        /*
         * Bad character set...
        */
 
-       respond_ipp(client, IPP_BAD_REQUEST,
+       respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
                    "Unsupported character set \"%s\".",
-                   charset->values[0].string.text);
+                   ippGetString(charset, 0, NULL));
       }
       else if (!charset || !language || !uri)
       {
@@ -4392,14 +4353,15 @@ process_ipp(_ipp_client_t *client)      /* I - Client */
        * for all operations.
        */
 
-       respond_ipp(client, IPP_BAD_REQUEST, "Missing required attributes.");
+       respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
+                   "Missing required attributes.");
       }
-      else if (strcmp(uri->values[0].string.text, client->printer->uri) &&
-               strncmp(uri->values[0].string.text, client->printer->uri,
+      else if (strcmp(ippGetString(uri, 0, NULL), client->printer->uri) &&
+               strncmp(ippGetString(uri, 0, NULL), client->printer->uri,
                       client->printer->urilen))
       {
-        respond_ipp(client, IPP_NOT_FOUND, "%s %s not found.", uri->name,
-                   uri->values[0].string.text);
+        respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "%s %s not found.",
+                    ippGetName(uri), ippGetString(uri, 0, NULL));
       }
       else
       {
@@ -4407,60 +4369,62 @@ process_ipp(_ipp_client_t *client)      /* I - Client */
         * Try processing the operation...
        */
 
-        if (client->http.expect == HTTP_CONTINUE)
+#if 0 /* Already doing this in process_http()... */
+        if (httpGetExpect(client->http) == HTTP_STATUS_CONTINUE)
        {
         /*
          * Send 100-continue header...
          */
 
-         if (!respond_http(client, HTTP_CONTINUE, NULL, 0))
+         if (!respond_http(client, HTTP_STATUS_CONTINUE, NULL, NULL, 0))
            return (0);
        }
+#endif /* 0 */
 
-       switch (client->request->request.op.operation_id)
+       switch (ippGetOperation(client->request))
        {
-         case IPP_PRINT_JOB :
+         case IPP_OP_PRINT_JOB :
               ipp_print_job(client);
               break;
 
-         case IPP_PRINT_URI :
+         case IPP_OP_PRINT_URI :
               ipp_print_uri(client);
               break;
 
-         case IPP_VALIDATE_JOB :
+         case IPP_OP_VALIDATE_JOB :
               ipp_validate_job(client);
               break;
 
-          case IPP_CREATE_JOB :
+          case IPP_OP_CREATE_JOB :
               ipp_create_job(client);
               break;
 
-          case IPP_SEND_DOCUMENT :
+          case IPP_OP_SEND_DOCUMENT :
               ipp_send_document(client);
               break;
 
-          case IPP_SEND_URI :
+          case IPP_OP_SEND_URI :
               ipp_send_uri(client);
               break;
 
-         case IPP_CANCEL_JOB :
+         case IPP_OP_CANCEL_JOB :
               ipp_cancel_job(client);
               break;
 
-         case IPP_GET_JOB_ATTRIBUTES :
+         case IPP_OP_GET_JOB_ATTRIBUTES :
               ipp_get_job_attributes(client);
               break;
 
-         case IPP_GET_JOBS :
+         case IPP_OP_GET_JOBS :
               ipp_get_jobs(client);
               break;
 
-         case IPP_GET_PRINTER_ATTRIBUTES :
+         case IPP_OP_GET_PRINTER_ATTRIBUTES :
               ipp_get_printer_attributes(client);
               break;
 
          default :
-             respond_ipp(client, IPP_OPERATION_NOT_SUPPORTED,
+             respond_ipp(client, IPP_STATUS_ERROR_OPERATION_NOT_SUPPORTED,
                          "Operation not supported.");
              break;
        }
@@ -4472,10 +4436,10 @@ process_ipp(_ipp_client_t *client)      /* I - Client */
   * Send the HTTP header and return...
   */
 
-  if (client->http.state != HTTP_POST_SEND)
-    httpFlush(&(client->http));                /* Flush trailing (junk) data */
+  if (httpGetState(client->http) != HTTP_STATE_POST_SEND)
+    httpFlush(client->http);           /* Flush trailing (junk) data */
 
-  return (respond_http(client, HTTP_OK, "application/ipp",
+  return (respond_http(client, HTTP_STATUS_OK, NULL, "application/ipp",
                        ippLength(client->response)));
 }
 
@@ -4487,18 +4451,18 @@ process_ipp(_ipp_client_t *client)      /* I - Client */
 static void *                          /* O - Thread exit status */
 process_job(_ipp_job_t *job)           /* I - Job */
 {
-  job->state          = IPP_JOB_PROCESSING;
-  job->printer->state = IPP_PRINTER_PROCESSING;
+  job->state          = IPP_JSTATE_PROCESSING;
+  job->printer->state = IPP_PSTATE_PROCESSING;
 
   sleep(5);
 
   if (job->cancel)
-    job->state = IPP_JOB_CANCELED;
+    job->state = IPP_JSTATE_CANCELED;
   else
-    job->state = IPP_JOB_COMPLETED;
+    job->state = IPP_JSTATE_COMPLETED;
 
   job->completed           = time(NULL);
-  job->printer->state      = IPP_PRINTER_IDLE;
+  job->printer->state      = IPP_PSTATE_IDLE;
   job->printer->active_job = NULL;
 
   return (NULL);
@@ -4520,11 +4484,12 @@ register_printer(
     const char     *adminurl,          /* I - Web interface URL */
     int            color,              /* I - 1 = color, 0 = monochrome */
     int            duplex,             /* I - 1 = duplex, 0 = simplex */
-    const char     *regtype)           /* I - Service type */
+    const char     *subtype)           /* I - Service subtype */
 {
   DNSServiceErrorType  error;          /* Error from Bonjour */
   char                 make_model[256],/* Make and model together */
-                       product[256];   /* Product string */
+                       product[256],   /* Product string */
+                       regtype[256];   /* Bonjour service type */
 
 
  /*
@@ -4535,16 +4500,14 @@ register_printer(
   snprintf(product, sizeof(product), "(%s)", model);
 
   TXTRecordCreate(&(printer->ipp_txt), 1024, NULL);
-  TXTRecordSetValue(&(printer->ipp_txt), "txtvers", 1, "1");
-  TXTRecordSetValue(&(printer->ipp_txt), "qtotal", 1, "1");
   TXTRecordSetValue(&(printer->ipp_txt), "rp", 3, "ipp");
   TXTRecordSetValue(&(printer->ipp_txt), "ty", (uint8_t)strlen(make_model),
                     make_model);
   TXTRecordSetValue(&(printer->ipp_txt), "adminurl", (uint8_t)strlen(adminurl),
                     adminurl);
-  TXTRecordSetValue(&(printer->ipp_txt), "note", (uint8_t)strlen(location),
-                    location);
-  TXTRecordSetValue(&(printer->ipp_txt), "priority", 1, "0");
+  if (*location)
+    TXTRecordSetValue(&(printer->ipp_txt), "note", (uint8_t)strlen(location),
+                     location);
   TXTRecordSetValue(&(printer->ipp_txt), "product", (uint8_t)strlen(product),
                     product);
   TXTRecordSetValue(&(printer->ipp_txt), "pdl", (uint8_t)strlen(formats),
@@ -4555,7 +4518,6 @@ register_printer(
                     make);
   TXTRecordSetValue(&(printer->ipp_txt), "usb_MDL", (uint8_t)strlen(model),
                     model);
-  TXTRecordSetValue(&(printer->ipp_txt), "air", 4, "none");
 
  /*
   * Create a shared service reference for Bonjour...
@@ -4596,6 +4558,11 @@ register_printer(
 
   printer->ipp_ref = printer->common_ref;
 
+  if (subtype && *subtype)
+    snprintf(regtype, sizeof(regtype), "_ipp._tcp,%s", subtype);
+  else
+    strlcpy(regtype, "_ipp._tcp", sizeof(regtype));
+
   if ((error = DNSServiceRegister(&(printer->ipp_ref),
                                   kDNSServiceFlagsShareConnection,
                                   0 /* interfaceIndex */, printer->dnssd_name,
@@ -4611,6 +4578,35 @@ register_printer(
     return (0);
   }
 
+#  ifdef HAVE_SSL
+ /*
+  * Then register the _ipps._tcp (IPP) service type with the real port number to
+  * advertise our IPP printer...
+  */
+
+  printer->ipps_ref = printer->common_ref;
+
+  if (subtype && *subtype)
+    snprintf(regtype, sizeof(regtype), "_ipps._tcp,%s", subtype);
+  else
+    strlcpy(regtype, "_ipps._tcp", sizeof(regtype));
+
+  if ((error = DNSServiceRegister(&(printer->ipps_ref),
+                                  kDNSServiceFlagsShareConnection,
+                                  0 /* interfaceIndex */, printer->dnssd_name,
+                                 regtype, NULL /* domain */,
+                                 NULL /* host */, htons(printer->port),
+                                 TXTRecordGetLength(&(printer->ipp_txt)),
+                                 TXTRecordGetBytesPtr(&(printer->ipp_txt)),
+                                 (DNSServiceRegisterReply)dnssd_callback,
+                                 printer)) != kDNSServiceErr_NoError)
+  {
+    fprintf(stderr, "Unable to register \"%s.%s\": %d\n",
+            printer->dnssd_name, regtype, error);
+    return (0);
+  }
+#  endif /* HAVE_SSL */
+
  /*
   * Similarly, register the _http._tcp,_printer (HTTP) service type with the
   * real port number to advertise our IPP printer...
@@ -4642,32 +4638,32 @@ register_printer(
  */
 
 int                                    /* O - 1 on success, 0 on failure */
-respond_http(_ipp_client_t *client,    /* I - Client */
-            http_status_t code,        /* I - HTTP status of response */
-            const char    *type,       /* I - MIME type of response */
-            size_t        length)      /* I - Length of response */
+respond_http(
+    _ipp_client_t *client,             /* I - Client */
+    http_status_t code,                        /* I - HTTP status of response */
+    const char    *content_encoding,   /* I - Content-Encoding of response */
+    const char    *type,               /* I - MIME media type of response */
+    size_t        length)              /* I - Length of response */
 {
   char message[1024];                  /* Text message */
 
 
-  fprintf(stderr, "%s %s\n", client->http.hostname, httpStatus(code));
+  fprintf(stderr, "%s %s\n", client->hostname, httpStatus(code));
 
-  if (code == HTTP_CONTINUE)
+  if (code == HTTP_STATUS_CONTINUE)
   {
    /*
     * 100-continue doesn't send any headers...
     */
 
-    return (httpPrintf(&(client->http), "HTTP/%d.%d 100 Continue\r\n\r\n",
-                      client->http.version / 100,
-                      client->http.version % 100) > 0);
+    return (httpWriteResponse(client->http, HTTP_STATUS_CONTINUE) == 0);
   }
 
  /*
   * Format an error message...
   */
 
-  if (!type && !length && code != HTTP_OK)
+  if (!type && !length && code != HTTP_STATUS_OK)
   {
     snprintf(message, sizeof(message), "%d - %s\n", code, httpStatus(code));
 
@@ -4678,60 +4674,30 @@ respond_http(_ipp_client_t *client,     /* I - Client */
     message[0] = '\0';
 
  /*
-  * Send the HTTP status header...
-  */
-
-  httpFlushWrite(&(client->http));
-
-  client->http.data_encoding = HTTP_ENCODE_FIELDS;
-
-  if (httpPrintf(&(client->http), "HTTP/%d.%d %d %s\r\n", client->http.version / 100,
-                 client->http.version % 100, code, httpStatus(code)) < 0)
-    return (0);
-
- /*
-  * Follow the header with the response fields...
+  * Send the HTTP response header...
   */
 
-  if (httpPrintf(&(client->http), "Date: %s\r\n", httpGetDateString(time(NULL))) < 0)
-    return (0);
+  httpClearFields(client->http);
 
-  if (client->http.keep_alive && client->http.version >= HTTP_1_0)
-  {
-    if (httpPrintf(&(client->http),
-                   "Connection: Keep-Alive\r\n"
-                   "Keep-Alive: timeout=10\r\n") < 0)
-      return (0);
-  }
-
-  if (code == HTTP_METHOD_NOT_ALLOWED || client->operation == HTTP_OPTIONS)
-  {
-    if (httpPrintf(&(client->http), "Allow: GET, HEAD, OPTIONS, POST\r\n") < 0)
-      return (0);
-  }
+  if (code == HTTP_STATUS_METHOD_NOT_ALLOWED ||
+      client->operation == HTTP_STATE_OPTIONS)
+    httpSetField(client->http, HTTP_FIELD_ALLOW, "GET, HEAD, OPTIONS, POST");
 
   if (type)
   {
     if (!strcmp(type, "text/html"))
-    {
-      if (httpPrintf(&(client->http),
-                     "Content-Type: text/html; charset=utf-8\r\n") < 0)
-       return (0);
-    }
-    else if (httpPrintf(&(client->http), "Content-Type: %s\r\n", type) < 0)
-      return (0);
-  }
+      httpSetField(client->http, HTTP_FIELD_CONTENT_TYPE,
+                   "text/html; charset=utf-8");
+    else
+      httpSetField(client->http, HTTP_FIELD_CONTENT_TYPE, type);
 
-  if (length == 0 && !message[0])
-  {
-    if (httpPrintf(&(client->http), "Transfer-Encoding: chunked\r\n\r\n") < 0)
-      return (0);
+    if (content_encoding)
+      httpSetField(client->http, HTTP_FIELD_CONTENT_ENCODING, content_encoding);
   }
-  else if (httpPrintf(&(client->http), "Content-Length: " CUPS_LLFMT "\r\n\r\n",
-                      CUPS_LLCAST length) < 0)
-    return (0);
 
-  if (httpFlushWrite(&(client->http)) < 0)
+  httpSetLength(client->http, length);
+
+  if (httpWriteResponse(client->http, code) < 0)
     return (0);
 
  /*
@@ -4744,7 +4710,10 @@ respond_http(_ipp_client_t *client,      /* I - Client */
     * Send a plain text message.
     */
 
-    if (httpPrintf(&(client->http), "%s", message) < 0)
+    if (httpPrintf(client->http, "%s", message) < 0)
+      return (0);
+
+    if (httpWrite2(client->http, "", 0) < 0)
       return (0);
   }
   else if (client->response)
@@ -4755,21 +4724,13 @@ respond_http(_ipp_client_t *client,     /* I - Client */
 
     debug_attributes("Response", client->response, 2);
 
-    client->http.data_encoding  = HTTP_ENCODE_LENGTH;
-    client->http.data_remaining = (off_t)ippLength(client->response);
-    client->response->state     = IPP_IDLE;
+    ippSetState(client->response, IPP_STATE_IDLE);
 
-    if (ippWrite(&(client->http), client->response) != IPP_DATA)
+    if (ippWrite(client->http, client->response) != IPP_STATE_DATA)
       return (0);
   }
-  else
-    client->http.data_encoding = HTTP_ENCODE_CHUNKED;
-
- /*
-  * Flush the data and return...
-  */
 
-  return (httpFlushWrite(&(client->http)) >= 0);
+  return (1);
 }
 
 
@@ -4783,36 +4744,35 @@ respond_ipp(_ipp_client_t *client,      /* I - Client */
            const char    *message,     /* I - printf-style status-message */
            ...)                        /* I - Additional args as needed */
 {
-  va_list      ap;                     /* Pointer to additional args */
-  char         formatted[1024];        /* Formatted errror message */
+  const char   *formatted = NULL;      /* Formatted message */
 
 
-  client->response->request.status.status_code = status;
-
-  if (!client->response->attrs)
-  {
-    ippAddString(client->response, IPP_TAG_OPERATION,
-                 IPP_TAG_CHARSET | IPP_TAG_COPY, "attributes-charset", NULL,
-                "utf-8");
-    ippAddString(client->response, IPP_TAG_OPERATION,
-                 IPP_TAG_LANGUAGE | IPP_TAG_COPY, "attributes-natural-language",
-                NULL, "en-us");
-  }
+  ippSetStatusCode(client->response, status);
 
   if (message)
   {
+    va_list            ap;             /* Pointer to additional args */
+    ipp_attribute_t    *attr;          /* New status-message attribute */
+
     va_start(ap, message);
-    vsnprintf(formatted, sizeof(formatted), message, ap);
+    if ((attr = ippFindAttribute(client->response, "status-message",
+                                IPP_TAG_TEXT)) != NULL)
+      ippSetStringfv(client->response, &attr, 0, message, ap);
+    else
+      attr = ippAddStringfv(client->response, IPP_TAG_OPERATION, IPP_TAG_TEXT,
+                           "status-message", NULL, message, ap);
     va_end(ap);
 
-    ippAddString(client->response, IPP_TAG_OPERATION, IPP_TAG_TEXT,
-                "status-message", NULL, formatted);
+    formatted = ippGetString(attr, 0, NULL);
   }
-  else
-    formatted[0] = '\0';
 
-  fprintf(stderr, "%s %s %s (%s)\n", client->http.hostname,
-          ippOpString(client->operation_id), ippErrorString(status), formatted);
+  if (formatted)
+    fprintf(stderr, "%s %s %s (%s)\n", client->hostname,
+           ippOpString(client->operation_id), ippErrorString(status),
+           formatted);
+  else
+    fprintf(stderr, "%s %s %s\n", client->hostname,
+           ippOpString(client->operation_id), ippErrorString(status));
 }
 
 
@@ -4828,12 +4788,10 @@ respond_unsupported(
   ipp_attribute_t      *temp;          /* Copy of attribute */
 
 
-  if (!client->response->attrs)
-    respond_ipp(client, IPP_ATTRIBUTES, "Unsupported %s %s%s value.",
-               attr->name, attr->num_values > 1 ? "1setOf " : "",
-               ippTagString(attr->value_tag));
-  else
-    ippSetStatusCode(client->response, IPP_ATTRIBUTES);
+  respond_ipp(client, IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES,
+              "Unsupported %s %s%s value.", ippGetName(attr),
+              ippGetCount(attr) > 1 ? "1setOf " : "",
+             ippTagString(ippGetValueTag(attr)));
 
   temp = ippCopyAttribute(client->response, attr, 0);
   ippSetGroupTag(client->response, &temp, IPP_TAG_UNSUPPORTED_GROUP);
@@ -4934,7 +4892,8 @@ usage(int status)                 /* O - Exit status */
 {
   if (!status)
   {
-    puts(CUPS_SVERSION " - Copyright 2010 by Apple Inc. All rights reserved.");
+    puts(CUPS_SVERSION " - Copyright 2010-2012 by Apple Inc. All rights "
+         "reserved.");
     puts("");
   }
 
@@ -4953,7 +4912,7 @@ usage(int status)                 /* O - Exit status */
   puts("-m model                Model name (default=Printer)");
   puts("-n hostname             Hostname for printer");
   puts("-p port                 Port number (default=auto)");
-  puts("-r regtype              Bonjour service type (default=_ipp._tcp)");
+  puts("-r subtype              Bonjour service subtype (default=_print)");
   puts("-s speed[,color-speed]  Speed in pages per minute (default=10,0)");
   puts("-v[vvv]                 Be (very) verbose");
 
@@ -4973,10 +4932,16 @@ static int                              /* O - 1 if valid, 0 if not */
 valid_doc_attributes(
     _ipp_client_t *client)             /* I - Client */
 {
-  int                  i;              /* Looping var */
+  int                  valid = 1;      /* Valid attributes? */
+  ipp_op_t             op = ippGetOperation(client->request);
+                                       /* IPP operation */
+  const char           *op_name = ippOpString(op);
+                                       /* IPP operation name */
   ipp_attribute_t      *attr,          /* Current attribute */
-                       *supported;     /* document-format-supported */
-  const char           *format = NULL; /* document-format value */
+                       *supported;     /* xxx-supported attribute */
+  const char           *compression = NULL,
+                                       /* compression value */
+                       *format = NULL; /* document-format value */
 
 
  /*
@@ -4987,17 +4952,30 @@ valid_doc_attributes(
                                IPP_TAG_ZERO)) != NULL)
   {
    /*
-    * If compression is specified, only accept "none"...
+    * If compression is specified, only accept a supported value in a Print-Job
+    * or Send-Document request...
     */
 
-    if (attr->num_values != 1 || attr->value_tag != IPP_TAG_KEYWORD ||
-        strcmp(attr->values[0].string.text, "none"))
+    compression = ippGetString(attr, 0, NULL);
+    supported   = ippFindAttribute(client->printer->attrs,
+                                   "compression-supported", IPP_TAG_KEYWORD);
+
+    if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_KEYWORD ||
+        ippGetGroupTag(attr) != IPP_TAG_OPERATION ||
+        (op != IPP_OP_PRINT_JOB && op != IPP_OP_SEND_DOCUMENT) ||
+        !ippContainsString(supported, compression))
+    {
       respond_unsupported(client, attr);
+      valid = 0;
+    }
     else
+    {
       fprintf(stderr, "%s %s compression=\"%s\"\n",
-              client->http.hostname,
-              ippOpString(client->request->request.op.operation_id),
-              attr->values[0].string.text);
+              client->hostname, op_name, compression);
+
+      if (strcmp(compression, "none"))
+        httpSetField(client->http, HTTP_FIELD_CONTENT_ENCODING, compression);
+    }
   }
 
  /*
@@ -5007,23 +4985,30 @@ valid_doc_attributes(
   if ((attr = ippFindAttribute(client->request, "document-format",
                                IPP_TAG_ZERO)) != NULL)
   {
-    if (attr->num_values != 1 || attr->value_tag != IPP_TAG_MIMETYPE)
+    if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_MIMETYPE ||
+        ippGetGroupTag(attr) != IPP_TAG_OPERATION)
+    {
       respond_unsupported(client, attr);
+      valid = 0;
+    }
     else
     {
-      format = attr->values[0].string.text;
+      format = ippGetString(attr, 0, NULL);
 
       fprintf(stderr, "%s %s document-format=\"%s\"\n",
-             client->http.hostname,
-             ippOpString(client->request->request.op.operation_id), format);
+             client->hostname, op_name, format);
     }
   }
   else
+  {
     format = "application/octet-stream";
+    attr   = ippAddString(client->request, IPP_TAG_JOB, IPP_TAG_MIMETYPE,
+                         "document-format", NULL, format);
+  }
 
   if (!strcmp(format, "application/octet-stream") &&
-      (client->request->request.op.operation_id == IPP_PRINT_JOB ||
-       client->request->request.op.operation_id == IPP_SEND_DOCUMENT))
+      (ippGetOperation(client->request) == IPP_OP_PRINT_JOB ||
+       ippGetOperation(client->request) == IPP_OP_SEND_DOCUMENT))
   {
    /*
     * Auto-type the file using the first 4 bytes of the file...
@@ -5032,7 +5017,7 @@ valid_doc_attributes(
     unsigned char      header[4];      /* First 4 bytes of file */
 
     memset(header, 0, sizeof(header));
-    _httpPeek(&(client->http), (char *)header, sizeof(header));
+    httpPeek(client->http, (char *)header, sizeof(header));
 
     if (!memcmp(header, "%PDF", 4))
       format = "application/pdf";
@@ -5046,35 +5031,26 @@ valid_doc_attributes(
 
     if (format)
       fprintf(stderr, "%s %s Auto-typed document-format=\"%s\"\n",
-             client->http.hostname,
-             ippOpString(client->request->request.op.operation_id), format);
+             client->hostname, op_name, format);
 
     if (!attr)
       attr = ippAddString(client->request, IPP_TAG_JOB, IPP_TAG_MIMETYPE,
                           "document-format", NULL, format);
     else
-    {
-      _cupsStrFree(attr->values[0].string.text);
-      attr->values[0].string.text = _cupsStrAlloc(format);
-    }
+      ippSetString(client->request, &attr, 0, format);
   }
 
-  if (client->request->request.op.operation_id != IPP_CREATE_JOB &&
+  if (op != IPP_OP_CREATE_JOB &&
       (supported = ippFindAttribute(client->printer->attrs,
                                     "document-format-supported",
-                                   IPP_TAG_MIMETYPE)) != NULL)
+                                   IPP_TAG_MIMETYPE)) != NULL &&
+      !ippContainsString(supported, format))
   {
-    for (i = 0; i < supported->num_values; i ++)
-      if (!_cups_strcasecmp(format, supported->values[i].string.text))
-       break;
-
-    if (i >= supported->num_values && attr)
-      respond_unsupported(client, attr);
+    respond_unsupported(client, attr);
+    valid = 0;
   }
 
-  return (!client->response->attrs ||
-          !client->response->attrs->next ||
-          !client->response->attrs->next->next);
+  return (valid);
 }
 
 
@@ -5089,7 +5065,8 @@ static int                                /* O - 1 if valid, 0 if not */
 valid_job_attributes(
     _ipp_client_t *client)             /* I - Client */
 {
-  int                  i;              /* Looping var */
+  int                  i,              /* Looping var */
+                       valid = 1;      /* Valid attributes? */
   ipp_attribute_t      *attr,          /* Current attribute */
                        *supported;     /* xxx-supported attribute */
 
@@ -5098,7 +5075,7 @@ valid_job_attributes(
   * Check operation attributes...
   */
 
-  valid_doc_attributes(client);
+  valid = valid_doc_attributes(client);
 
  /*
   * Check the various job template attributes...
@@ -5107,90 +5084,98 @@ valid_job_attributes(
   if ((attr = ippFindAttribute(client->request, "copies",
                                IPP_TAG_ZERO)) != NULL)
   {
-    if (attr->num_values != 1 || attr->value_tag != IPP_TAG_INTEGER ||
-        attr->values[0].integer < 1 || attr->values[0].integer > 999)
+    if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_INTEGER ||
+        ippGetInteger(attr, 0) < 1 || ippGetInteger(attr, 0) > 999)
     {
       respond_unsupported(client, attr);
+      valid = 0;
     }
   }
 
   if ((attr = ippFindAttribute(client->request, "ipp-attribute-fidelity",
                                IPP_TAG_ZERO)) != NULL)
   {
-    if (attr->num_values != 1 || attr->value_tag != IPP_TAG_BOOLEAN)
+    if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_BOOLEAN)
     {
       respond_unsupported(client, attr);
+      valid = 0;
     }
   }
 
   if ((attr = ippFindAttribute(client->request, "job-hold-until",
                                IPP_TAG_ZERO)) != NULL)
   {
-    if (attr->num_values != 1 ||
-        (attr->value_tag != IPP_TAG_NAME &&
-        attr->value_tag != IPP_TAG_NAMELANG &&
-        attr->value_tag != IPP_TAG_KEYWORD) ||
-       strcmp(attr->values[0].string.text, "no-hold"))
+    if (ippGetCount(attr) != 1 ||
+        (ippGetValueTag(attr) != IPP_TAG_NAME &&
+        ippGetValueTag(attr) != IPP_TAG_NAMELANG &&
+        ippGetValueTag(attr) != IPP_TAG_KEYWORD) ||
+       strcmp(ippGetString(attr, 0, NULL), "no-hold"))
     {
       respond_unsupported(client, attr);
+      valid = 0;
     }
   }
 
   if ((attr = ippFindAttribute(client->request, "job-name",
                                IPP_TAG_ZERO)) != NULL)
   {
-    if (attr->num_values != 1 ||
-        (attr->value_tag != IPP_TAG_NAME &&
-        attr->value_tag != IPP_TAG_NAMELANG))
+    if (ippGetCount(attr) != 1 ||
+        (ippGetValueTag(attr) != IPP_TAG_NAME &&
+        ippGetValueTag(attr) != IPP_TAG_NAMELANG))
     {
       respond_unsupported(client, attr);
+      valid = 0;
     }
   }
 
   if ((attr = ippFindAttribute(client->request, "job-priority",
                                IPP_TAG_ZERO)) != NULL)
   {
-    if (attr->num_values != 1 || attr->value_tag != IPP_TAG_INTEGER ||
-        attr->values[0].integer < 1 || attr->values[0].integer > 100)
+    if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_INTEGER ||
+        ippGetInteger(attr, 0) < 1 || ippGetInteger(attr, 0) > 100)
     {
       respond_unsupported(client, attr);
+      valid = 0;
     }
   }
 
   if ((attr = ippFindAttribute(client->request, "job-sheets",
                                IPP_TAG_ZERO)) != NULL)
   {
-    if (attr->num_values != 1 ||
-        (attr->value_tag != IPP_TAG_NAME &&
-        attr->value_tag != IPP_TAG_NAMELANG &&
-        attr->value_tag != IPP_TAG_KEYWORD) ||
-       strcmp(attr->values[0].string.text, "none"))
+    if (ippGetCount(attr) != 1 ||
+        (ippGetValueTag(attr) != IPP_TAG_NAME &&
+        ippGetValueTag(attr) != IPP_TAG_NAMELANG &&
+        ippGetValueTag(attr) != IPP_TAG_KEYWORD) ||
+       strcmp(ippGetString(attr, 0, NULL), "none"))
     {
       respond_unsupported(client, attr);
+      valid = 0;
     }
   }
 
   if ((attr = ippFindAttribute(client->request, "media",
                                IPP_TAG_ZERO)) != NULL)
   {
-    if (attr->num_values != 1 ||
-        (attr->value_tag != IPP_TAG_NAME &&
-        attr->value_tag != IPP_TAG_NAMELANG &&
-        attr->value_tag != IPP_TAG_KEYWORD))
+    if (ippGetCount(attr) != 1 ||
+        (ippGetValueTag(attr) != IPP_TAG_NAME &&
+        ippGetValueTag(attr) != IPP_TAG_NAMELANG &&
+        ippGetValueTag(attr) != IPP_TAG_KEYWORD))
     {
       respond_unsupported(client, attr);
+      valid = 0;
     }
     else
     {
       for (i = 0;
            i < (int)(sizeof(media_supported) / sizeof(media_supported[0]));
           i ++)
-        if (!strcmp(attr->values[0].string.text, media_supported[i]))
+        if (!strcmp(ippGetString(attr, 0, NULL), media_supported[i]))
          break;
 
       if (i >= (int)(sizeof(media_supported) / sizeof(media_supported[0])))
       {
        respond_unsupported(client, attr);
+       valid = 0;
       }
     }
   }
@@ -5198,9 +5183,11 @@ valid_job_attributes(
   if ((attr = ippFindAttribute(client->request, "media-col",
                                IPP_TAG_ZERO)) != NULL)
   {
-    if (attr->num_values != 1 || attr->value_tag != IPP_TAG_BEGIN_COLLECTION)
+    if (ippGetCount(attr) != 1 ||
+        ippGetValueTag(attr) != IPP_TAG_BEGIN_COLLECTION)
     {
       respond_unsupported(client, attr);
+      valid = 0;
     }
     /* TODO: check for valid media-col */
   }
@@ -5208,24 +5195,26 @@ valid_job_attributes(
   if ((attr = ippFindAttribute(client->request, "multiple-document-handling",
                                IPP_TAG_ZERO)) != NULL)
   {
-    if (attr->num_values != 1 || attr->value_tag != IPP_TAG_KEYWORD ||
-        (strcmp(attr->values[0].string.text,
+    if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_KEYWORD ||
+        (strcmp(ippGetString(attr, 0, NULL),
                "separate-documents-uncollated-copies") &&
-        strcmp(attr->values[0].string.text,
+        strcmp(ippGetString(attr, 0, NULL),
                "separate-documents-collated-copies")))
     {
       respond_unsupported(client, attr);
+      valid = 0;
     }
   }
 
   if ((attr = ippFindAttribute(client->request, "orientation-requested",
                                IPP_TAG_ZERO)) != NULL)
   {
-    if (attr->num_values != 1 || attr->value_tag != IPP_TAG_ENUM ||
-        attr->values[0].integer < IPP_PORTRAIT ||
-        attr->values[0].integer > IPP_REVERSE_PORTRAIT)
+    if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_ENUM ||
+        ippGetInteger(attr, 0) < IPP_ORIENT_PORTRAIT ||
+        ippGetInteger(attr, 0) > IPP_ORIENT_REVERSE_PORTRAIT)
     {
       respond_unsupported(client, attr);
+      valid = 0;
     }
   }
 
@@ -5233,16 +5222,18 @@ valid_job_attributes(
                                IPP_TAG_ZERO)) != NULL)
   {
     respond_unsupported(client, attr);
+      valid = 0;
   }
 
   if ((attr = ippFindAttribute(client->request, "print-quality",
                                IPP_TAG_ZERO)) != NULL)
   {
-    if (attr->num_values != 1 || attr->value_tag != IPP_TAG_ENUM ||
-        attr->values[0].integer < IPP_QUALITY_DRAFT ||
-        attr->values[0].integer > IPP_QUALITY_HIGH)
+    if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_ENUM ||
+        ippGetInteger(attr, 0) < IPP_QUALITY_DRAFT ||
+        ippGetInteger(attr, 0) > IPP_QUALITY_HIGH)
     {
       respond_unsupported(client, attr);
+      valid = 0;
     }
   }
 
@@ -5250,38 +5241,42 @@ valid_job_attributes(
                                IPP_TAG_ZERO)) != NULL)
   {
     respond_unsupported(client, attr);
+    valid = 0;
   }
 
   if ((attr = ippFindAttribute(client->request, "sides",
                                IPP_TAG_ZERO)) != NULL)
   {
-    if (attr->num_values != 1 || attr->value_tag != IPP_TAG_KEYWORD)
+    if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_KEYWORD)
     {
       respond_unsupported(client, attr);
+      valid = 0;
     }
 
     if ((supported = ippFindAttribute(client->printer->attrs, "sides",
                                       IPP_TAG_KEYWORD)) != NULL)
     {
-      for (i = 0; i < supported->num_values; i ++)
-        if (!strcmp(attr->values[0].string.text,
-                   supported->values[i].string.text))
+      int count = ippGetCount(supported);
+      const char *sides = ippGetString(attr, 0, NULL);
+
+      for (i = 0; i < count; i ++)
+        if (!strcmp(sides, ippGetString(supported, i, NULL)))
          break;
 
-      if (i >= supported->num_values)
+      if (i >= count)
       {
        respond_unsupported(client, attr);
+       valid = 0;
       }
     }
     else
     {
       respond_unsupported(client, attr);
+      valid = 0;
     }
   }
 
-  return (!client->response->attrs ||
-          !client->response->attrs->next ||
-          !client->response->attrs->next->next);
+  return (valid);
 }
 
 
index a364a93f7f81699ce4953f656f786b4104e8f58c..3882ef6478ee9f19792b6b94067091f8e1789891 100644 (file)
@@ -815,8 +815,8 @@ do_tests(_cups_vars_t *vars,                /* I - Variables */
   * Connect to the server...
   */
 
-  if ((http = _httpCreate(vars->hostname, vars->port, NULL, vars->encryption,
-                         vars->family)) == NULL)
+  if ((http = _httpCreate(vars->hostname, vars->port, NULL, vars->family,
+                          vars->encryption, 1, _HTTP_MODE_CLIENT)) == NULL)
   {
     print_fatal_error("Unable to connect to %s on port %d - %s", vars->hostname,
                       vars->port, cupsLastErrorString());
@@ -1741,9 +1741,14 @@ do_tests(_cups_vars_t *vars,             /* I - Variables */
 
                 for (ptr = strchr(token, ','); ptr; ptr = strchr(ptr, ','))
                {
-                 *ptr++ = '\0';
-                 values[num_values] = ptr;
-                 num_values ++;
+                 if (ptr > token && ptr[-1] == '\\')
+                   _cups_strcpy(ptr - 1, ptr);
+                 else
+                 {
+                   *ptr++ = '\0';
+                   values[num_values] = ptr;
+                   num_values ++;
+                 }
                }
 
                attrptr = ippAddStrings(request, group, value, attr, num_values,
@@ -2142,6 +2147,20 @@ do_tests(_cups_vars_t *vars,             /* I - Variables */
            * WITH-VALUE is a literal value...
            */
 
+           char *ptr;                  /* Pointer into value */
+
+            for (ptr = token; *ptr; ptr ++)
+            {
+             if (*ptr == '\\' && ptr[1])
+             {
+              /*
+               * Remove \ from \foo...
+               */
+
+               _cups_strcpy(ptr, ptr + 1);
+             }
+           }
+
            last_expect->with_value = strdup(token);
            last_expect->with_flags |= _CUPS_WITH_LITERAL;
          }
@@ -3437,6 +3456,9 @@ get_collection(_cups_vars_t *vars,        /* I  - Variables */
              goto col_error;
            }
            break;
+       case IPP_TAG_STRING :
+           ippAddOctetString(col, IPP_TAG_ZERO, attr, token, strlen(token));
+           break;
 
        default :
            if (!strchr(token, ','))
@@ -4570,7 +4592,7 @@ validate_attr(cups_array_t    *errors,    /* I - Errors array */
     case IPP_TAG_STRING :
         for (i = 0; i < attr->num_values; i ++)
        {
-         if (attr->values[i].unknown.length > 1023)
+         if (attr->values[i].unknown.length > IPP_MAX_OCTETSTRING)
          {
            valid = 0;
 
@@ -4813,7 +4835,7 @@ validate_attr(cups_array_t    *errors,    /* I - Errors array */
                        attr->values[i].string.text);
          }
 
-         if ((ptr - attr->values[i].string.text) > 1023)
+         if ((ptr - attr->values[i].string.text) > (IPP_MAX_TEXT - 1))
          {
            valid = 0;
 
@@ -4873,7 +4895,7 @@ validate_attr(cups_array_t    *errors,    /* I - Errors array */
                        attr->values[i].string.text);
          }
 
-         if ((ptr - attr->values[i].string.text) > 1023)
+         if ((ptr - attr->values[i].string.text) > (IPP_MAX_NAME - 1))
          {
            valid = 0;
 
@@ -4904,7 +4926,7 @@ validate_attr(cups_array_t    *errors,    /* I - Errors array */
                        attr->name, attr->values[i].string.text);
          }
 
-         if ((ptr - attr->values[i].string.text) > 255)
+         if ((ptr - attr->values[i].string.text) > (IPP_MAX_KEYWORD - 1))
          {
            valid = 0;
 
@@ -4939,7 +4961,7 @@ validate_attr(cups_array_t    *errors,    /* I - Errors array */
                                         HTTP_URI_OVERFLOW]);
          }
 
-         if (strlen(attr->values[i].string.text) > 1023)
+         if (strlen(attr->values[i].string.text) > (IPP_MAX_URI - 1))
          {
            valid = 0;
 
@@ -4974,7 +4996,7 @@ validate_attr(cups_array_t    *errors,    /* I - Errors array */
                        attr->name, attr->values[i].string.text);
          }
 
-         if ((ptr - attr->values[i].string.text) > 63)
+         if ((ptr - attr->values[i].string.text) > (IPP_MAX_URISCHEME - 1))
          {
            valid = 0;
 
@@ -5005,7 +5027,7 @@ validate_attr(cups_array_t    *errors,    /* I - Errors array */
                        attr->name, attr->values[i].string.text);
          }
 
-         if ((ptr - attr->values[i].string.text) > 40)
+         if ((ptr - attr->values[i].string.text) > (IPP_MAX_CHARSET - 1))
          {
            valid = 0;
 
@@ -5061,7 +5083,7 @@ validate_attr(cups_array_t    *errors,    /* I - Errors array */
                        attr->name, attr->values[i].string.text);
          }
 
-         if (strlen(attr->values[i].string.text) > 63)
+         if (strlen(attr->values[i].string.text) > (IPP_MAX_LANGUAGE - 1))
          {
            valid = 0;
 
@@ -5114,7 +5136,7 @@ validate_attr(cups_array_t    *errors,    /* I - Errors array */
                        attr->name, attr->values[i].string.text);
          }
 
-         if (strlen(attr->values[i].string.text) > 255)
+         if (strlen(attr->values[i].string.text) > (IPP_MAX_MIMETYPE - 1))
          {
            valid = 0;
 
index 7ab618f045c95be2681eacf36062f1b8fe5ca3ba..4a1174e3d37bf078da39b849f5d114fd54ab895f 100755 (executable)
@@ -605,7 +605,7 @@ done
 #
 
 date=`date "+%Y-%m-%d"`
-strfile=/tmp/cups-$user/cups-str-1.6-$date-$user.html
+strfile=/tmp/cups-$user/cups-str-1.7-$date-$user.html
 
 rm -f $strfile
 cat str-header.html >$strfile
index c1a32a00db6072c0d6e79ccb3be37a7e6747686c..4f8a2419bbb38ade2007f36ea3a24a500ea811a1 100644 (file)
                72BF96371333042100B1EAD7 /* Project object */ = {
                        isa = PBXProject;
                        attributes = {
-                               LastUpgradeCheck = 0440;
+                               LastUpgradeCheck = 0450;
                                ORGANIZATIONNAME = "Apple Inc.";
                        };
                        buildConfigurationList = 72BF963A1333042100B1EAD7 /* Build configuration list for PBXProject "CUPS" */;
index 441c4c41ff63e1f794a0e52eb0ea12bf0927c16e..00c3f3dc89ebde07b933a1f200e9c0ac3d9beecf 100644 (file)
  */
 
 #define HAVE_AUTHORIZATION_H 1
-#define HAVE_SECBASEPRIV_H 1
+/* #undef HAVE_SECBASEPRIV_H */
 #define HAVE_SECCERTIFICATE_H 1
-#define HAVE_SECIDENTITYSEARCHPRIV_H 1
+/* #undef HAVE_SECIDENTITYSEARCHPRIV_H */
 #define HAVE_SECITEM_H 1
-#define HAVE_SECITEMPRIV_H 1
+/* #undef HAVE_SECITEMPRIV_H */
 #define HAVE_SECPOLICY_H 1
-#define HAVE_SECPOLICYPRIV_H 1
-#define HAVE_SECURETRANSPORTPRIV_H 1
+/* #undef HAVE_SECPOLICYPRIV_H */
+/* #undef HAVE_SECURETRANSPORTPRIV_H */
 
 
 /*
  */
 
 #define HAVE_COREFOUNDATION_H 1
-#define HAVE_CFPRIV_H 1
-#define HAVE_CFBUNDLEPRIV_H 1
+/* #undef HAVE_CFPRIV_H */
+/* #undef HAVE_CFBUNDLEPRIV_H */
 
 
 /*
  */
 
 #define HAVE_MEMBERSHIP_H 1
-#define HAVE_MEMBERSHIPPRIV_H 1
+/* #undef HAVE_MEMBERSHIPPRIV_H */
 #define HAVE_MBR_UID_TO_UUID 1
 
 
  * Do we have Darwin's IOKit private headers?
  */
 
-#define HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H 1
+/* #undef HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H */
 
 
 /*
 #define HAVE_GSS_ACQUIRE_CRED_EX_F 1
 #define HAVE_GSS_C_NT_HOSTBASED_SERVICE 1
 #define HAVE_GSS_GSSAPI_H 1
-#define HAVE_GSS_GSSAPI_SPI_H 1
+/* #undef HAVE_GSS_GSSAPI_SPI_H */
 #define HAVE_GSSAPI 1
 /* #undef HAVE_GSSAPI_GENERIC_H */
 /* #undef HAVE_GSSAPI_GSSAPI_H */
  */
 
 #define HAVE_XPC 1
-#define HAVE_XPC_PRIVATE_H 1
+/* #undef HAVE_XPC_PRIVATE_H */
 
 
 /*