From a469f8a57669e1948d5cc29005d8c097312de63a Mon Sep 17 00:00:00 2001 From: msweet Date: Fri, 16 Nov 2012 01:00:05 +0000 Subject: [PATCH] Merge changes from CUPS 1.7svn-r10704. git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@4027 a1ca3aef-8c08-0410-bb20-df032aa958be --- CHANGES-1.6.txt | 2 +- CHANGES.txt | 7 +- backend/ipp.c | 442 ++-- backend/lpd.c | 4 +- backend/socket.c | 17 +- backend/usb-darwin.c | 63 +- cups/adminutil.c | 7 +- cups/array.c | 25 +- cups/cups-private.h | 5 + cups/cups.h | 6 +- cups/debug.c | 44 +- cups/dest-job.c | 4 +- cups/dest-localization.c | 2 +- cups/dest.c | 3 +- cups/encode.c | 264 ++- cups/globals.c | 12 + cups/http-addr.c | 101 +- cups/http-addrlist.c | 64 +- cups/http-private.h | 52 +- cups/http-support.c | 14 +- cups/http.c | 1707 +++++++++++++--- cups/http.h | 329 ++- cups/ipp-private.h | 7 +- cups/ipp-support.c | 213 +- cups/ipp.c | 785 +++++++- cups/ipp.h | 613 ++++-- cups/ppd-cache.c | 13 +- cups/ppd-private.h | 3 +- cups/pwg-media.c | 37 +- cups/raster.h | 4 +- cups/request.c | 33 +- cups/testarray.c | 84 +- cups/testhttp.c | 18 +- cups/testipp.c | 18 +- cups/util.c | 9 +- cups/versioning.h | 30 +- doc/help/api-httpipp.html | 1160 ++++++++--- locale/cups.pot | 839 ++++---- locale/cups.strings | 22 +- locale/cups_ca.po | 1733 +--------------- locale/cups_es.po | 2775 +++++--------------------- locale/cups_ja.po | 2050 +++---------------- monitor/tbcp.c | 9 +- scheduler/client.c | 65 +- scheduler/conf.c | 6 +- scheduler/conf.h | 5 +- scheduler/dirsvc.c | 4 +- scheduler/ipp.c | 3 +- scheduler/job.c | 28 +- scheduler/listen.c | 2 +- scheduler/main.c | 2 +- scheduler/network.c | 2 +- scheduler/printers.c | 4 + scheduler/statbuf.c | 9 +- systemv/cupstestppd.c | 7 +- test/ippserver.c | 1775 ++++++++-------- test/ipptool.c | 50 +- test/run-stp-tests.sh | 2 +- xcode/CUPS.xcodeproj/project.pbxproj | 2 +- xcode/config.h | 22 +- 60 files changed, 7250 insertions(+), 8367 deletions(-) diff --git a/CHANGES-1.6.txt b/CHANGES-1.6.txt index b7b72b8c1..e5e87ae88 100644 --- a/CHANGES-1.6.txt +++ b/CHANGES-1.6.txt @@ -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) diff --git a/CHANGES.txt b/CHANGES.txt index 637f4357a..3f4664159 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -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) diff --git a/backend/ipp.c b/backend/ipp.c index 7f8a17e1b..180586e05 100644 --- a/backend/ipp.c +++ b/backend/ipp.c @@ -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); } diff --git a/backend/lpd.c b/backend/lpd.c index 9d9e01b2b..c4f73155e 100644 --- a/backend/lpd.c +++ b/backend/lpd.c @@ -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... diff --git a/backend/socket.c b/backend/socket.c index 77255a394..2da3d07f2 100644 --- a/backend/socket.c +++ b/backend/socket.c @@ -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(¤t_time)) - if (wait_bc(device_fd, wait_time - current_time) <= 0) - break; -#endif /* __APPLE__ */ - if (waiteof) { /* diff --git a/backend/usb-darwin.c b/backend/usb-darwin.c index 5f303bec5..98cf9804a 100644 --- a/backend/usb-darwin.c +++ b/backend/usb-darwin.c @@ -96,6 +96,7 @@ #include #include #include +#include #include #include @@ -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. diff --git a/cups/adminutil.c b/cups/adminutil.c index 440e443b5..dba769e0f 100644 --- a/cups/adminutil.c +++ b/cups/adminutil.c @@ -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); diff --git a/cups/array.c b/cups/array.c index a84f3e2a2..7a036784f 100644 --- a/cups/array.c +++ b/cups/array.c @@ -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); } diff --git a/cups/cups-private.h b/cups/cups-private.h index 4918755bf..babc0d081 100644 --- a/cups/cups-private.h +++ b/cups/cups-private.h @@ -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 */ diff --git a/cups/cups.h b/cups/cups.h index e50468508..544841b49 100644 --- a/cups/cups.h +++ b/cups/cups.h @@ -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, diff --git a/cups/debug.c b/cups/debug.c index 71b693c70..27ade63ca 100644 --- a/cups/debug.c +++ b/cups/debug.c @@ -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 */ diff --git a/cups/dest-job.c b/cups/dest-job.c index f0792c728..c9a0d797f 100644 --- a/cups/dest-job.c +++ b/cups/dest-job.c @@ -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); /* diff --git a/cups/dest-localization.c b/cups/dest-localization.c index ad709ee82..fb52a9a69 100644 --- a/cups/dest-localization.c +++ b/cups/dest-localization.c @@ -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... diff --git a/cups/dest.c b/cups/dest.c index 46bc3adb1..1474eb41e 100644 --- a/cups/dest.c +++ b/cups/dest.c @@ -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... diff --git a/cups/encode.c b/cups/encode.c index 565a43705..224221c76 100644 --- a/cups/encode.c +++ b/cups/encode.c @@ -31,11 +31,100 @@ /* - * 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. */ diff --git a/cups/globals.c b/cups/globals.c index d7bd5ac50..eed949f83 100644 --- a/cups/globals.c +++ b/cups/globals.c @@ -38,6 +38,10 @@ */ +#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... */ diff --git a/cups/http-addr.c b/cups/http-addr.c index d80bb8d01..9cb9bee30 100644 --- a/cups/http-addr.c +++ b/cups/http-addr.c @@ -14,16 +14,19 @@ * * 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. diff --git a/cups/http-addrlist.c b/cups/http-addrlist.c index 223a68695..e62a556f4 100644 --- a/cups/http-addrlist.c +++ b/cups/http-addrlist.c @@ -14,11 +14,12 @@ * * 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. * diff --git a/cups/http-private.h b/cups/http-private.h index 5e21c472d..d6cbeaf83 100644 --- a/cups/http-private.h +++ b/cups/http-private.h @@ -136,6 +136,10 @@ typedef int socklen_t; # endif /* HAVE_GETIFADDRS */ # endif /* !WIN32 */ +# ifdef HAVE_LIBZ +# include +# 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), diff --git a/cups/http-support.c b/cups/http-support.c index e69b44d05..2b0d9a827 100644 --- a/cups/http-support.c +++ b/cups/http-support.c @@ -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 { diff --git a/cups/http.c b/cups/http.c index c53465b2f..a547c47af 100644 --- a/cups/http.c +++ b/cups/http.c @@ -19,105 +19,120 @@ * * 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. */ /* @@ -143,6 +158,11 @@ * 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) { diff --git a/cups/http.h b/cups/http.h index 3aefd53b3..3c8a32113 100644 --- a/cups/http.h +++ b/cups/http.h @@ -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... */ diff --git a/cups/ipp-private.h b/cups/ipp-private.h index 1d3003c3f..c29d54895 100644 --- a/cups/ipp-private.h +++ b/cups/ipp-private.h @@ -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... */ diff --git a/cups/ipp-support.c b/cups/ipp-support.c index 8ad921dd5..dfe610352 100644 --- a/cups/ipp-support.c +++ b/cups/ipp-support.c @@ -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); } diff --git a/cups/ipp.c b/cups/ipp.c index 9290edbbc..0c54a2803 100644 --- a/cups/ipp.c +++ b/cups/ipp.c @@ -33,7 +33,13 @@ * 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 @@ -47,14 +53,15 @@ * 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 @@ -66,13 +73,14 @@ * 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. @@ -80,10 +88,12 @@ * 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. * diff --git a/cups/ipp.h b/cups/ipp.h index 2118dd353..65e4f285a 100644 --- a/cups/ipp.h +++ b/cups/ipp.h @@ -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... diff --git a/cups/ppd-cache.c b/cups/ppd-cache.c index 2e7a5d626..be4c64e98 100644 --- a/cups/ppd-cache.c +++ b/cups/ppd-cache.c @@ -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"); diff --git a/cups/ppd-private.h b/cups/ppd-private.h index 1eaa2c816..03b014783 100644 --- a/cups/ppd-private.h +++ b/cups/ppd-private.h @@ -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 */ }; diff --git a/cups/pwg-media.c b/cups/pwg-media.c index 222b6ef7c..a1ec90028 100644 --- a/cups/pwg-media.c +++ b/cups/pwg-media.c @@ -15,6 +15,19 @@ * * 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) }; diff --git a/cups/raster.h b/cups/raster.h index c83d0bf7b..cfacc906d 100644 --- a/cups/raster.h +++ b/cups/raster.h @@ -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); diff --git a/cups/request.c b/cups/request.c index 51457df84..01b8764ef 100644 --- a/cups/request.c +++ b/cups/request.c @@ -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)) { diff --git a/cups/testarray.c b/cups/testarray.c index 9f7eb2a71..5ae622606 100644 --- a/cups/testarray.c +++ b/cups/testarray.c @@ -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... */ diff --git a/cups/testhttp.c b/cups/testhttp.c index 089e4d28c..3e699cd3b 100644 --- a/cups/testhttp.c +++ b/cups/testhttp.c @@ -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); diff --git a/cups/testipp.c b/cups/testipp.c index 5655b6be2..88ed7dfac 100644 --- a/cups/testipp.c +++ b/cups/testipp.c @@ -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 diff --git a/cups/util.c b/cups/util.c index c9826549c..77e3e79eb 100644 --- a/cups/util.c +++ b/cups/util.c @@ -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 */ diff --git a/cups/versioning.h b/cups/versioning.h index 38bfddbeb..f1b02d648 100644 --- a/cups/versioning.h +++ b/cups/versioning.h @@ -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 */ /* @@ -73,16 +78,27 @@ * 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_ */ /* diff --git a/doc/help/api-httpipp.html b/doc/help/api-httpipp.html index b30af9eb8..23d9e7f90 100644 --- a/doc/help/api-httpipp.html +++ b/doc/help/api-httpipp.html @@ -404,12 +404,17 @@ current thread.">cupsLastErrorString
  • cupsReadResponseData
  • cupsSendRequest
  • cupsWriteRequestData
  • +
  • httpAcceptConnection
  • httpAddCredential
  • httpAddrAny
  • httpAddrEqual
  • httpAddrLength
  • +
  • httpAddrListen
  • httpAddrLocalhost
  • httpAddrLookup
  • +
  • httpAddrPort
  • httpAddrString
  • httpAssembleURI
  • @@ -421,6 +426,7 @@ components with a formatted resource.">httpAssembleURIf
  • httpClearFields
  • httpClose
  • httpConnect
  • +
  • httpConnect2
  • httpConnectEncrypt
  • httpCopyCredentials
  • @@ -437,10 +443,13 @@ connection.">httpCopyCredentials
  • httpGet
  • httpGetAuthString
  • httpGetBlocking
  • +
  • httpGetContentEncoding
  • httpGetCookie
  • httpGetDateString
  • httpGetDateString2
  • httpGetDateTime
  • +
  • httpGetExpect
  • httpGetFd
  • httpGetField
  • httpMD5Final
  • httpMD5String
  • httpOptions
  • +
  • httpPeek
  • httpPost
  • httpPut
  • httpRead
  • httpRead2
  • +
  • httpReadRequest
  • httpReconnect
  • httpReconnect2
  • @@ -492,6 +503,7 @@ connection.">httpSetCredentials
  • httpWait
  • httpWrite
  • httpWrite2
  • +
  • httpWriteResponse
  • ippAddBoolean
  • ippAddBooleans
  • ippAddCollection
  • @@ -507,8 +519,14 @@ connection.">httpSetCredentials
  • ippAddResolutions
  • ippAddSeparator
  • ippAddString
  • +
  • ippAddStringf
  • +
  • ippAddStringfv
  • ippAddStrings
  • ippAttributeString
  • +
  • ippContainsInteger
  • +
  • ippContainsString
  • ippCopyAttribute
  • ippCopyAttributes
  • ippDateToTime
  • ippLength
  • ippNew
  • ippNewRequest
  • +
  • ippNewResponse
  • ippNextAttribute
  • ippOpString
  • ippOpValue
  • @@ -563,6 +582,8 @@ in seconds.">ippDateToTime
  • ippSetState
  • ippSetStatusCode
  • ippSetString
  • +
  • ippSetStringf
  • +
  • ippSetStringfv
  • ippSetValueTag
  • ippSetVersion
  • ippTagString
  • @@ -590,7 +611,6 @@ with a hostname. ">http_addrlist_t
  • http_keepalive_t
  • http_state_t
  • -
  • http_status_t
  • http_t
  • http_timeout_cb_t
  • http_uri_coding_t
  • @@ -601,7 +621,7 @@ are server-oriented...">http_state_t 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
  • ipp_dstate_t
  • -
  • ipp_finish_t
  • +
  • ipp_finish_t
  • ipp_iocb_t
  • ipp_jcollate_t
  • ipp_orient_t
  • @@ -634,7 +654,7 @@ are server-oriented...">http_state_e
  • http_uri_status_e
  • http_version_e
  • ipp_dstate_e
  • -
  • ipp_finish_e
  • +
  • ipp_finishings_e
  • ipp_jcollate_e
  • ipp_jstate_e
  • ipp_op_e
  • @@ -1160,7 +1180,7 @@ the request respectively.

     CUPS 1.1.20/OS X 10.4 cupsGetFd

    Get a file from the server.

    -http_status_t cupsGetFd (
    +http_status_t cupsGetFd (
        http_t *http,
        const char *resource,
        int fd
    @@ -1183,7 +1203,7 @@ the request respectively.

     CUPS 1.1.20/OS X 10.4 cupsGetFile

    Get a file from the server.

    -http_status_t cupsGetFile (
    +http_status_t cupsGetFile (
        http_t *http,
        const char *resource,
        const char *filename
    @@ -1243,7 +1263,7 @@ const char *cupsLastErrorString (void);

     CUPS 1.1.20/OS X 10.4 cupsPutFd

    Put a file on the server.

    -http_status_t cupsPutFd (
    +http_status_t cupsPutFd (
        http_t *http,
        const char *resource,
        int fd
    @@ -1267,7 +1287,7 @@ successfully.

     CUPS 1.1.20/OS X 10.4 cupsPutFile

    Put a file on the server.

    -http_status_t cupsPutFile (
    +http_status_t cupsPutFile (
        http_t *http,
        const char *resource,
        const char *filename
    @@ -1316,7 +1336,7 @@ respectively.

     CUPS 1.4/OS X 10.6 cupsSendRequest

    Send an IPP request.

    -http_status_t cupsSendRequest (
    +http_status_t cupsSendRequest (
        http_t *http,
        ipp_t *request,
        const char *resource,
    @@ -1352,7 +1372,7 @@ Note: Unlike cupsDoFileRequest,  CUPS 1.4/OS X 10.6 cupsWriteRequestData

    Write additional data after an IPP request.

    -http_status_t cupsWriteRequestData (
    +http_status_t cupsWriteRequestData (
        http_t *http,
        const char *buffer,
        size_t length
    @@ -1373,6 +1393,24 @@ Note: Unlike cupsDoFileRequest, cupsStartDocument to provide a document file.

    +

     CUPS 1.7 httpAcceptConnection

    +

    Accept a new HTTP client connection from the +specified listening socket.

    +

    +http_t *httpAcceptConnection (
    +    int fd,
    +    int blocking
    +);

    +

    Parameters

    +
    +
    fd
    +
    Listen socket file descriptor
    +
    blocking
    +
    1 if the connection should be +blocking, 0 otherwise
    +
    +

    Return Value

    +

    HTTP connection or NULL

     CUPS 1.5/OS X 10.7 httpAddCredential

    Allocates and adds a single credential to an array.

    @@ -1438,6 +1476,23 @@ int httpAddrLength (

    Return Value

    Length in bytes

    +

     CUPS 1.7 httpAddrListen

    +

    Create a listening socket bound to the specified +address and port.

    +

    +int httpAddrListen (
    +    http_addr_t *addr,
    +    int port
    +);

    +

    Parameters

    +
    +
    addr
    +
    Address to bind to
    +
    port
    +
    Port number to bind to
    +
    +

    Return Value

    +

    Socket or -1 on error

     CUPS 1.2/OS X 10.5 httpAddrLocalhost

    Check for the local loopback address.

    @@ -1470,6 +1525,19 @@ char *httpAddrLookup (

    Return Value

    Host name

    +

     CUPS 1.7 httpAddrPort

    +

    Get the port number associated with an address.

    +

    +int httpAddrPort (
    +    http_addr_t *addr
    +);

    +

    Parameters

    +
    +
    addr
    +
    Address
    +
    +

    Return Value

    +

    Port number

     CUPS 1.2/OS X 10.5 httpAddrString

    Convert an address to a numeric string.

    @@ -1654,10 +1722,44 @@ void httpClose (

    Return Value

    New HTTP connection

    Discussion

    -

    This function is deprecated - use httpConnectEncrypt instead. +

    This function is deprecated - use httpConnect2 instead.

    -

    httpConnectEncrypt

    +

     CUPS 1.7 httpConnect2

    +

    Connect to a HTTP server.

    +

    +http_t *httpConnect2 (
    +    const char *host,
    +    int port,
    +    http_addrlist_t *addrlist,
    +    int family,
    +    http_encryption_t encryption,
    +    int blocking,
    +    int msec,
    +    int *cancel
    +);

    +

    Parameters

    +
    +
    host
    +
    Host to connect to
    +
    port
    +
    Port number
    +
    addrlist
    +
    List of addresses or NULL to lookup
    +
    family
    +
    Address family to use or AF_UNSPEC for any
    +
    encryption
    +
    Type of encryption to use
    +
    blocking
    +
    1 for blocking connection, 0 for non-blocking
    +
    msec
    +
    Connection timeout in milliseconds
    +
    cancel
    +
    Pointer to "cancel" variable
    +
    +

    Return Value

    +

    New HTTP connection

    +

     DEPRECATED httpConnectEncrypt

    Connect to a HTTP server using encryption.

    http_t *httpConnectEncrypt (
    @@ -1676,6 +1778,11 @@ void httpClose (

    Return Value

    New HTTP connection

    +

    Discussion

    +

    This function is now deprecated. Please use the httpConnect2 function +instead. + +

     CUPS 1.5/OS X 10.7 httpCopyCredentials

    Copy the credentials associated with an encrypted connection.

    @@ -1905,6 +2012,29 @@ int httpGetBlocking (

    Return Value

    1 if blocking, 0 if non-blocking

    +

     CUPS 1.7 httpGetContentEncoding

    +

    Get a common content encoding, if any, between +the client and server.

    +

    +const char *httpGetContentEncoding (
    +    http_t *http
    +);

    +

    Parameters

    +
    +
    http
    +
    Connection to client/server
    +
    +

    Return Value

    +

    Content-Coding value or +NULL for the identity +coding.

    +

    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. + +

     CUPS 1.1.19/OS X 10.3 httpGetCookie

    Get any cookie data from the response.

    @@ -1963,6 +2093,24 @@ time_t httpGetDateTime (

    Return Value

    UNIX time

    +

     CUPS 1.7 httpGetExpect

    +

    Get the value of the Expect header, if any.

    +

    +http_status_t httpGetExpect (
    +    http_t *http
    +);

    +

    Parameters

    +
    +
    http
    +
    Connection to client
    +
    +

    Return Value

    +

    Expect: status, if any

    +

    Discussion

    +

    Returns HTTP_STATUS_NONE if there is no Expect header, otherwise +returns the expected HTTP status code, typically HTTP_STATUS_CONTINUE. + +

     CUPS 1.2/OS X 10.5 httpGetFd

    Get the file descriptor associated with a connection.

    @@ -2086,7 +2234,7 @@ content larger than 2^31 - 1.

     CUPS 1.2/OS X 10.5 httpGetStatus

    Get the status of the last HTTP request.

    -http_status_t httpGetStatus (
    +http_status_t httpGetStatus (
        http_t *http
    );

    Parameters

    @@ -2274,6 +2422,33 @@ int httpOptions (

    Return Value

    Status of call (0 = success)

    +

     CUPS 1.7 httpPeek

    +

    Peek at data from a HTTP connection.

    +

    +ssize_t httpPeek (
    +    http_t *http,
    +    char *buffer,
    +    size_t length
    +);

    +

    Parameters

    +
    +
    http
    +
    Connection to server
    +
    buffer
    +
    Buffer for data
    +
    length
    +
    Maximum number of bytes
    +
    +

    Return Value

    +

    Number of bytes copied

    +

    Discussion

    +

    This function copies available data from the given HTTP connection, reading +a buffer as needed. The data is still available for reading using +httpRead or httpRead2.
    +
    +For non-blocking connections the usual timeouts apply. + +

    httpPost

    Send a POST request to the server.

    @@ -2349,7 +2524,26 @@ ssize_t httpRead2 (

    Return Value

    Number of bytes read

    -

    httpReconnect

    +

     CUPS 1.7 httpReadRequest

    +

    Read a HTTP request from a connection.

    +

    +http_state_t httpReadRequest (
    +    http_t *http,
    +    char *uri,
    +    size_t urilen
    +);

    +

    Parameters

    +
    +
    http
    +
    HTTP connection
    +
    uri
    +
    URI buffer
    +
    urilen
    +
    Size of URI buffer
    +
    +

    Return Value

    +

    New state of connection

    +

     DEPRECATED httpReconnect

    Reconnect to a HTTP server.

    int httpReconnect (
    @@ -2362,6 +2556,11 @@ int httpReconnect (

    Return Value

    0 on success, non-zero on failure

    +

    Discussion

    +

    This function is deprecated. Please use the httpReconnect2 function +instead. + +

    httpReconnect2

    Reconnect to a HTTP server with timeout and optional cancel.

    @@ -2561,17 +2760,19 @@ int httpSetCredentials (

    void httpSetExpect (
        http_t *http,
    -    http_status_t expect
    +    http_status_t expect
    );

    Parameters

    http
    Connection to server
    expect
    -
    HTTP status to expect (HTTP_CONTINUE)
    +
    HTTP status to expect +(HTTP_CONTINUE)

    Discussion

    -

    Currently only HTTP_CONTINUE is supported for the "expect" argument. +

    Currently only HTTP_STATUS_CONTINUE is supported for the "expect" +argument.

    httpSetField

    @@ -2635,7 +2836,7 @@ data pointer and must return 1 to continue or 0 to error (time) out.

    Return a short string describing a HTTP status code.

    const char *httpStatus (
    -    http_status_t status
    +    http_status_t status
    );

    Parameters

    @@ -2666,7 +2867,7 @@ int httpTrace (

    httpUpdate

    Update the current HTTP state for incoming data.

    -http_status_t httpUpdate (
    +http_status_t httpUpdate (
        http_t *http
    );

    Parameters

    @@ -2735,6 +2936,22 @@ ssize_t httpWrite2 (

    Return Value

    Number of bytes written

    +

     CUPS 1.7 httpWriteResponse

    +

    Write a HTTP response to a client connection.

    +

    +int httpWriteResponse (
    +    http_t *http,
    +    http_status_t status
    +);

    +

    Parameters

    +
    +
    http
    +
    HTTP connection
    +
    status
    +
    Status code
    +
    +

    Return Value

    +

    0 on success, -1 on error

    ippAddBoolean

    Add a boolean attribute to an IPP message.

    @@ -2758,8 +2975,8 @@ ssize_t httpWrite2 (

    Return Value

    New attribute

    Discussion

    -

    The ipp parameter refers to an IPP message previously created using the -ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The group parameter specifies the IPP attribute group tag: none (IPP_TAG_ZERO, for member attributes), document (IPP_TAG_DOCUMENT), @@ -2792,8 +3009,8 @@ event notification (IPP_TAG_EVENT_NOTIFICATION), operation

    Return Value

    New attribute

    Discussion

    -

    The ipp parameter refers to an IPP message previously created using the -ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The group parameter specifies the IPP attribute group tag: none (IPP_TAG_ZERO, for member attributes), document (IPP_TAG_DOCUMENT), @@ -2823,8 +3040,8 @@ event notification (IPP_TAG_EVENT_NOTIFICATION), operation

    Return Value

    New attribute

    Discussion

    -

    The ipp parameter refers to an IPP message previously created using the -ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The group parameter specifies the IPP attribute group tag: none (IPP_TAG_ZERO, for member attributes), document (IPP_TAG_DOCUMENT), @@ -2859,8 +3076,8 @@ event notification (IPP_TAG_EVENT_NOTIFICATION), operation

    Return Value

    New attribute

    Discussion

    -

    The ipp parameter refers to an IPP message previously created using the -ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The group parameter specifies the IPP attribute group tag: none (IPP_TAG_ZERO, for member attributes), document (IPP_TAG_DOCUMENT), @@ -2892,8 +3109,8 @@ event notification (IPP_TAG_EVENT_NOTIFICATION), operation

    Return Value

    New attribute

    Discussion

    -

    The ipp parameter refers to an IPP message previously created using the -ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The group parameter specifies the IPP attribute group tag: none (IPP_TAG_ZERO, for member attributes), document (IPP_TAG_DOCUMENT), @@ -2926,8 +3143,8 @@ event notification (IPP_TAG_EVENT_NOTIFICATION), operation

    Return Value

    New attribute

    Discussion

    -

    The ipp parameter refers to an IPP message previously created using the -ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The group parameter specifies the IPP attribute group tag: none (IPP_TAG_ZERO, for member attributes), document (IPP_TAG_DOCUMENT), @@ -2966,8 +3183,8 @@ Supported values include enum (IPP_TAG_ENUM) and integer

    Return Value

    New attribute

    Discussion

    -

    The ipp parameter refers to an IPP message previously created using the -ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The group parameter specifies the IPP attribute group tag: none (IPP_TAG_ZERO, for member attributes), document (IPP_TAG_DOCUMENT), @@ -3003,8 +3220,8 @@ Supported values include enum (IPP_TAG_ENUM) and integer

    Return Value

    New attribute

    Discussion

    -

    The ipp parameter refers to an IPP message previously created using the -ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The group parameter specifies the IPP attribute group tag: none (IPP_TAG_ZERO, for member attributes), document (IPP_TAG_DOCUMENT), @@ -3036,8 +3253,8 @@ event notification (IPP_TAG_EVENT_NOTIFICATION), operation

    Return Value

    New attribute

    Discussion

    -

    The ipp parameter refers to an IPP message previously created using the -ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The group parameter specifies the IPP attribute group tag: none (IPP_TAG_ZERO, for member attributes), document (IPP_TAG_DOCUMENT), @@ -3078,8 +3295,8 @@ admin-define (IPP_TAG_ADMINDEFINE).

    Return Value

    New attribute

    Discussion

    -

    The ipp parameter refers to an IPP message previously created using the -ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The group parameter specifies the IPP attribute group tag: none (IPP_TAG_ZERO, for member attributes), document (IPP_TAG_DOCUMENT), @@ -3117,8 +3334,8 @@ The lower parameter must be less than or equal to the upperReturn Value

    New attribute

    Discussion

    -

    The ipp parameter refers to an IPP message previously created using the -ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The group parameter specifies the IPP attribute group tag: none (IPP_TAG_ZERO, for member attributes), document (IPP_TAG_DOCUMENT), @@ -3154,8 +3371,8 @@ event notification (IPP_TAG_EVENT_NOTIFICATION), operation

    Return Value

    New attribute

    Discussion

    -

    The ipp parameter refers to an IPP message previously created using the -ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The group parameter specifies the IPP attribute group tag: none (IPP_TAG_ZERO, for member attributes), document (IPP_TAG_DOCUMENT), @@ -3194,8 +3411,8 @@ event notification (IPP_TAG_EVENT_NOTIFICATION), operation

    Return Value

    New attribute

    Discussion

    -

    The ipp parameter refers to an IPP message previously created using the -ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The group parameter specifies the IPP attribute group tag: none (IPP_TAG_ZERO, for member attributes), document (IPP_TAG_DOCUMENT), @@ -3216,8 +3433,8 @@ event notification (IPP_TAG_EVENT_NOTIFICATION), operation

    Return Value

    New attribute

    Discussion

    -

    The ipp parameter refers to an IPP message previously created using the -ippNew or ippNewRequest functions.

    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    ippAddString

    Add a language-encoded string to an IPP message.

    @@ -3247,8 +3464,8 @@ event notification (IPP_TAG_EVENT_NOTIFICATION), operation

    Return Value

    New attribute

    Discussion

    -

    The ipp parameter refers to an IPP message previously created using the -ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The group parameter specifies the IPP attribute group tag: none (IPP_TAG_ZERO, for member attributes), document (IPP_TAG_DOCUMENT), @@ -3265,6 +3482,124 @@ Supported string values include charset (IPP_TAG_CHARSET), keyword
    The language parameter must be non-NULL for nameWithLanguage and textWithLanguage string values and must be NULL for all other string values.

    +

     CUPS 1.7 ippAddStringf

    +

    Add a formatted string to an IPP message.

    +

    +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,
    +    ...
    +);

    +

    Parameters

    +
    +
    ipp
    +
    IPP message
    +
    group
    +
    IPP group
    +
    value_tag
    +
    Type of attribute
    +
    name
    +
    Name of attribute
    +
    language
    +
    Language code (NULL for default)
    +
    format
    +
    Printf-style format string
    +
    ...
    +
    Additional arguments as needed
    +
    +

    Return Value

    +

    New attribute

    +

    Discussion

    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.
    +
    +The group parameter specifies the IPP attribute group tag: none +(IPP_TAG_ZERO, for member attributes), document +(IPP_TAG_DOCUMENT), event notification +(IPP_TAG_EVENT_NOTIFICATION), operation (IPP_TAG_OPERATION), +printer (IPP_TAG_PRINTER), subscription (IPP_TAG_SUBSCRIPTION), +or unsupported (IPP_TAG_UNSUPPORTED_GROUP).
    +
    +Supported string values include charset (IPP_TAG_CHARSET), keyword +(IPP_TAG_KEYWORD), language (IPP_TAG_LANGUAGE), mimeMediaType +(IPP_TAG_MIMETYPE), name (IPP_TAG_NAME), nameWithLanguage +(IPP_TAG_NAMELANG), text (code IPP_TAG_TEXT@), textWithLanguage +(IPP_TAG_TEXTLANG), uri (IPP_TAG_URI), and uriScheme +(IPP_TAG_URISCHEME).
    +
    +The language parameter must be non-NULL for nameWithLanguage +and textWithLanguage string values and must be NULL for all other +string values.
    +
    +The 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. + +

    +

     CUPS 1.7 ippAddStringfv

    +

    Add a formatted string to an IPP message.

    +

    +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
    +);

    +

    Parameters

    +
    +
    ipp
    +
    IPP message
    +
    group
    +
    IPP group
    +
    value_tag
    +
    Type of attribute
    +
    name
    +
    Name of attribute
    +
    language
    +
    Language code (NULL for default)
    +
    format
    +
    Printf-style format string
    +
    ap
    +
    Additional arguments
    +
    +

    Return Value

    +

    New attribute

    +

    Discussion

    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.
    +
    +The group parameter specifies the IPP attribute group tag: none +(IPP_TAG_ZERO, for member attributes), document +(IPP_TAG_DOCUMENT), event notification +(IPP_TAG_EVENT_NOTIFICATION), operation (IPP_TAG_OPERATION), +printer (IPP_TAG_PRINTER), subscription (IPP_TAG_SUBSCRIPTION), +or unsupported (IPP_TAG_UNSUPPORTED_GROUP).
    +
    +Supported string values include charset (IPP_TAG_CHARSET), keyword +(IPP_TAG_KEYWORD), language (IPP_TAG_LANGUAGE), mimeMediaType +(IPP_TAG_MIMETYPE), name (IPP_TAG_NAME), nameWithLanguage +(IPP_TAG_NAMELANG), text (code IPP_TAG_TEXT@), textWithLanguage +(IPP_TAG_TEXTLANG), uri (IPP_TAG_URI), and uriScheme +(IPP_TAG_URISCHEME).
    +
    +The language parameter must be non-NULL for nameWithLanguage +and textWithLanguage string values and must be NULL for all other +string values.
    +
    +The format parameter uses formatting characters compatible with the +printf family of standard functions. Additional arguments are passed in the +stdarg pointer ap. The formatted string is truncated as needed to the +maximum length of the corresponding value type. + +

    ippAddStrings

    Add language-encoded strings to an IPP message.

    @@ -3297,8 +3632,8 @@ textWithLanguage string values and must be NULL for all other strin

    Return Value

    New attribute

    Discussion

    -

    The ipp parameter refers to an IPP message previously created using the -ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The group parameter specifies the IPP attribute group tag: none (IPP_TAG_ZERO, for member attributes), document (IPP_TAG_DOCUMENT), @@ -3339,6 +3674,51 @@ size_t ippAttributeString (
    trailing nul. The buffer pointer can be NULL to get the required length, just like (v)snprintf. +

    +

     CUPS 1.7 ippContainsInteger

    +

    Determine whether an attribute contains the +specified value or is within the list of ranges.

    +

    +int ippContainsInteger (
    +    ipp_attribute_t *attr,
    +    int value
    +);

    +

    Parameters

    +
    +
    attr
    +
    Attribute
    +
    value
    +
    Integer/enum value
    +
    +

    Return Value

    +

    1 on a match, 0 on no match

    +

    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. + +

    +

     CUPS 1.7 ippContainsString

    +

    Determine whether an attribute contains the +specified string value.

    +

    +int ippContainsString (
    +    ipp_attribute_t *attr,
    +    const char *value
    +);

    +

    Parameters

    +
    +
    attr
    +
    Attribute
    +
    value
    +
    String value
    +
    +

    Return Value

    +

    1 on a match, 0 on no match

    +

    Discussion

    +

    Returns non-zero when the attribute contains a matching charset, keyword, +language, mimeMediaType, name, text, URI, or URI scheme value. +

     CUPS 1.6/OS X 10.8 ippCopyAttribute

    Copy an attribute.

    @@ -3897,6 +4277,28 @@ size_t ippLength (
    attributes-natural-language attributes added. The attributes-natural-language value is derived from the current locale. +

    +

     CUPS 1.7 ippNewResponse

    +

    Allocate a new IPP response message.

    +

    +ipp_t *ippNewResponse (
    +    ipp_t *request
    +);

    +

    Parameters

    +
    +
    request
    +
    IPP request message
    +
    +

    Return Value

    +

    IPP response message

    +

    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, +"utf-8" and a value derived from the current locale are substituted, +respectively. +

     CUPS 1.6/OS X 10.8 ippNextAttribute

    Return the next attribute in the message.

    @@ -4023,8 +4425,8 @@ int ippSetBoolean (

    Return Value

    1 on success, 0 on failure

    Discussion

    -

    The ipp parameter refers to the IPP message containing the attribute that was -previously created using the ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The attr parameter may be modified as a result of setting the value.

    @@ -4055,8 +4457,8 @@ int ippSetCollection (

    Return Value

    1 on success, 0 on failure

    Discussion

    -

    The ipp parameter refers to the IPP message containing the attribute that was -previously created using the ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The attr parameter may be modified as a result of setting the value.

    @@ -4087,8 +4489,8 @@ int ippSetDate (

    Return Value

    1 on success, 0 on failure

    Discussion

    -

    The ipp parameter refers to the IPP message containing the attribute that was -previously created using the ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The attr parameter may be modified as a result of setting the value.

    @@ -4116,8 +4518,8 @@ int ippSetGroupTag (

    Return Value

    1 on success, 0 on failure

    Discussion

    -

    The ipp parameter refers to the IPP message containing the attribute that was -previously created using the ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The attr parameter may be modified as a result of setting the value.

    @@ -4151,8 +4553,8 @@ int ippSetInteger (

    Return Value

    1 on success, 0 on failure

    Discussion

    -

    The ipp parameter refers to the IPP message containing the attribute that was -previously created using the ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The attr parameter may be modified as a result of setting the value.

    @@ -4180,8 +4582,8 @@ int ippSetName (

    Return Value

    1 on success, 0 on failure

    Discussion

    -

    The ipp parameter refers to the IPP message containing the attribute that was -previously created using the ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The attr parameter may be modified as a result of setting the value. @@ -4203,8 +4605,8 @@ int ippSetOperation (

    Return Value

    1 on success, 0 on failure

    Discussion

    -

    The ipp parameter refers to an IPP message previously created using the -ippNew or ippNewRequest functions. +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    ippSetPort

    @@ -4244,8 +4646,8 @@ int ippSetRange (

    Return Value

    1 on success, 0 on failure

    Discussion

    -

    The ipp parameter refers to the IPP message containing the attribute that was -previously created using the ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The attr parameter may be modified as a result of setting the value.

    @@ -4270,8 +4672,8 @@ int ippSetRequestId (

    Return Value

    1 on success, 0 on failure

    Discussion

    -

    The ipp parameter refers to an IPP message previously created using the -ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The request_id parameter must be greater than 0. @@ -4305,8 +4707,8 @@ int ippSetResolution (

    Return Value

    1 on success, 0 on failure

    Discussion

    -

    The ipp parameter refers to the IPP message containing the attribute that was -previously created using the ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The attr parameter may be modified as a result of setting the value.

    @@ -4347,8 +4749,8 @@ int ippSetStatusCode (

    Return Value

    1 on success, 0 on failure

    Discussion

    -

    The ipp parameter refers to an IPP message previously created using the -ippNew or ippNewRequest functions. +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

     CUPS 1.6/OS X 10.8 ippSetString

    @@ -4374,14 +4776,94 @@ int ippSetString (

    Return Value

    1 on success, 0 on failure

    Discussion

    -

    The ipp parameter refers to the IPP message containing the attribute that was -previously created using the ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The attr parameter may be modified as a result of setting the value.

    The element parameter specifies which value to set from 0 to ippGetCount(attr). +

    +

     CUPS 1.7 ippSetStringf

    +

    Set a formatted string value of an attribute.

    +

    +int ippSetStringf (
    +    ipp_t *ipp,
    +    ipp_attribute_t **attr,
    +    int element,
    +    const char *format,
    +    ...
    +);

    +

    Parameters

    +
    +
    ipp
    +
    IPP message
    +
    attr
    +
    IPP attribute
    +
    element
    +
    Value number (0-based)
    +
    format
    +
    Printf-style format string
    +
    ...
    +
    Additional arguments as needed
    +
    +

    Return Value

    +

    1 on success, 0 on failure

    +

    Discussion

    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.
    +
    +The attr parameter may be modified as a result of setting the value.
    +
    +The element parameter specifies which value to set from 0 to +ippGetCount(attr).
    +
    +The 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. + +

    +

     CUPS 1.7 ippSetStringfv

    +

    Set a formatted string value of an attribute.

    +

    +int ippSetStringfv (
    +    ipp_t *ipp,
    +    ipp_attribute_t **attr,
    +    int element,
    +    const char *format,
    +    va_list ap
    +);

    +

    Parameters

    +
    +
    ipp
    +
    IPP message
    +
    attr
    +
    IPP attribute
    +
    element
    +
    Value number (0-based)
    +
    format
    +
    Printf-style format string
    +
    ap
    +
    Pointer to additional arguments
    +
    +

    Return Value

    +

    1 on success, 0 on failure

    +

    Discussion

    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.
    +
    +The attr parameter may be modified as a result of setting the value.
    +
    +The element parameter specifies which value to set from 0 to +ippGetCount(attr).
    +
    +The 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. +

     CUPS 1.6/OS X 10.8 ippSetValueTag

    Set the value tag of an attribute.

    @@ -4403,8 +4885,8 @@ int ippSetValueTag (

    Return Value

    1 on success, 0 on failure

    Discussion

    -

    The ipp parameter refers to the IPP message containing the attribute that was -previously created using the ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The attr parameter may be modified as a result of setting the value.

    @@ -4441,8 +4923,8 @@ int ippSetVersion (

    Return Value

    1 on success, 0 on failure

    Discussion

    -

    The ipp parameter refers to an IPP message previously created using the -ippNew or ippNewRequest functions.
    +

    The ipp parameter refers to an IPP message previously created using +the ippNew, ippNewRequest, or ippNewResponse functions.

    The valid version numbers are currently 1.0, 1.1, 2.0, 2.1, and 2.2. @@ -4607,12 +5089,7 @@ typedef enum http_keepalive_e http_keepalive_t;

    HTTP state values; states are server-oriented...

    -typedef enum http_state_e / http_state_t; -

    -

    http_status_t

    -

    HTTP status codes

    -

    -typedef enum http_status_e http_status_t; +typedef enum http_state_e http_state_t;

    http_t

    HTTP connection type

    @@ -4657,9 +5134,9 @@ typedef int (*ipp_copycb_t)(void *context, ipp_t *dst, ipp_dstate_e ipp_dstate_t;

    ipp_finish_t

    -

    Finishings

    +

    Job collation types

    -typedef enum ipp_finish_e ipp_finish_t; +typedef enum ipp_finishings_e ipp_finish_t;

     CUPS 1.2/OS X 10.5 ipp_iocb_t

    IPP IO Callback Function

    @@ -4790,34 +5267,38 @@ with a hostname.

    HTTP transfer encoding values

    Constants

    -
    HTTP_ENCODE_CHUNKED
    +
    HTTP_ENCODING_CHUNKED
    Data is chunked
    -
    HTTP_ENCODE_FIELDS
    +
    HTTP_ENCODING_FIELDS
    Sending HTTP fields
    -
    HTTP_ENCODE_LENGTH
    +
    HTTP_ENCODING_LENGTH
    Data is sent with Content-Length

    http_encryption_e

    HTTP encryption values

    Constants

    -
    HTTP_ENCRYPT_ALWAYS
    +
    HTTP_ENCRYPTION_ALWAYS
    Always encrypt (SSL)
    -
    HTTP_ENCRYPT_IF_REQUESTED
    +
    HTTP_ENCRYPTION_IF_REQUESTED
    Encrypt if requested (TLS upgrade)
    -
    HTTP_ENCRYPT_NEVER
    +
    HTTP_ENCRYPTION_NEVER
    Never encrypt
    -
    HTTP_ENCRYPT_REQUIRED
    +
    HTTP_ENCRYPTION_REQUIRED
    Encryption is required (TLS upgrade)

    http_field_e

    HTTP field names

    Constants

    +
    HTTP_FIELD_ACCEPT_ENCODING  CUPS 1.7 
    +
    Accepting-Encoding field
    HTTP_FIELD_ACCEPT_LANGUAGE
    Accept-Language field
    HTTP_FIELD_ACCEPT_RANGES
    Accept-Ranges field
    +
    HTTP_FIELD_ALLOW  CUPS 1.7 
    +
    Allow field
    HTTP_FIELD_AUTHORIZATION
    Authorization field
    HTTP_FIELD_CONNECTION
    @@ -4862,6 +5343,8 @@ with a hostname.

    Referer field
    HTTP_FIELD_RETRY_AFTER
    Retry-After field
    +
    HTTP_FIELD_SERVER  CUPS 1.7 
    +
    Server field
    HTTP_FIELD_TRANSFER_ENCODING
    Transfer-Encoding field
    HTTP_FIELD_UNKNOWN
    @@ -4887,124 +5370,132 @@ with a hostname.

    are server-oriented...

    Constants

    -
    HTTP_CLOSE
    -
    CLOSE command, waiting for blank line
    -
    HTTP_DELETE
    +
    HTTP_STATE_CONNECT
    +
    CONNECT command, waiting for blank line
    +
    HTTP_STATE_DELETE
    DELETE command, waiting for blank line
    -
    HTTP_GET
    +
    HTTP_STATE_ERROR
    +
    Error on socket
    +
    HTTP_STATE_GET
    GET command, waiting for blank line
    -
    HTTP_GET_SEND
    +
    HTTP_STATE_GET_SEND
    GET command, sending data
    -
    HTTP_HEAD
    +
    HTTP_STATE_HEAD
    HEAD command, waiting for blank line
    -
    HTTP_OPTIONS
    +
    HTTP_STATE_OPTIONS
    OPTIONS command, waiting for blank line
    -
    HTTP_POST
    +
    HTTP_STATE_POST
    POST command, waiting for blank line
    -
    HTTP_POST_RECV
    +
    HTTP_STATE_POST_RECV
    POST command, receiving data
    -
    HTTP_POST_SEND
    +
    HTTP_STATE_POST_SEND
    POST command, sending data
    -
    HTTP_PUT
    +
    HTTP_STATE_PUT
    PUT command, waiting for blank line
    -
    HTTP_PUT_RECV
    +
    HTTP_STATE_PUT_RECV
    PUT command, receiving data
    -
    HTTP_STATUS
    +
    HTTP_STATE_STATUS
    Command complete, sending status
    -
    HTTP_TRACE
    +
    HTTP_STATE_TRACE
    TRACE command, waiting for blank line
    -
    HTTP_WAITING
    +
    HTTP_STATE_UNKNOWN_METHOD  CUPS 1.7 
    +
    Unknown request method, waiting for blank line
    +
    HTTP_STATE_UNKNOWN_VERSION  CUPS 1.7 
    +
    Unknown request method, waiting for blank line
    +
    HTTP_STATE_WAITING
    Waiting for command

    http_status_e

    HTTP status codes

    Constants

    -
    HTTP_ACCEPTED
    -
    DELETE command was successful
    -
    HTTP_AUTHORIZATION_CANCELED  CUPS 1.4 
    +
    CUPS_STATUS_AUTHORIZATION_CANCELED  CUPS 1.4 
    User canceled authorization
    -
    HTTP_BAD_GATEWAY
    +
    CUPS_STATUS_PKI_ERROR  CUPS 1.5/OS X 10.7 
    +
    Error negotiating a secure connection
    +
    HTTP_STATUS_ACCEPTED
    +
    DELETE command was successful
    +
    HTTP_STATUS_BAD_GATEWAY
    Bad gateway
    -
    HTTP_BAD_REQUEST
    +
    HTTP_STATUS_BAD_REQUEST
    Bad request
    -
    HTTP_CONFLICT
    +
    HTTP_STATUS_CONFLICT
    Request is self-conflicting
    -
    HTTP_CONTINUE
    +
    HTTP_STATUS_CONTINUE
    Everything OK, keep going...
    -
    HTTP_CREATED
    +
    HTTP_STATUS_CREATED
    PUT command was successful
    -
    HTTP_ERROR
    +
    HTTP_STATUS_ERROR
    An error response from httpXxxx()
    -
    HTTP_EXPECTATION_FAILED
    +
    HTTP_STATUS_EXPECTATION_FAILED
    The expectation given in an Expect header field was not met
    -
    HTTP_FORBIDDEN
    +
    HTTP_STATUS_FORBIDDEN
    Forbidden to access this URI
    -
    HTTP_GATEWAY_TIMEOUT
    +
    HTTP_STATUS_GATEWAY_TIMEOUT
    Gateway connection timed out
    -
    HTTP_GONE
    +
    HTTP_STATUS_GONE
    Server has gone away
    -
    HTTP_LENGTH_REQUIRED
    +
    HTTP_STATUS_LENGTH_REQUIRED
    A content length or encoding is required
    -
    HTTP_METHOD_NOT_ALLOWED
    +
    HTTP_STATUS_METHOD_NOT_ALLOWED
    Method is not allowed
    -
    HTTP_MOVED_PERMANENTLY
    +
    HTTP_STATUS_MOVED_PERMANENTLY
    Document has moved permanently
    -
    HTTP_MOVED_TEMPORARILY
    +
    HTTP_STATUS_MOVED_TEMPORARILY
    Document has moved temporarily
    -
    HTTP_MULTIPLE_CHOICES
    +
    HTTP_STATUS_MULTIPLE_CHOICES
    Multiple files match request
    -
    HTTP_NOT_ACCEPTABLE
    +
    HTTP_STATUS_NONE  CUPS 1.7 
    +
    No Expect value
    +
    HTTP_STATUS_NOT_ACCEPTABLE
    Not Acceptable
    -
    HTTP_NOT_AUTHORITATIVE
    +
    HTTP_STATUS_NOT_AUTHORITATIVE
    Information isn't authoritative
    -
    HTTP_NOT_FOUND
    +
    HTTP_STATUS_NOT_FOUND
    URI was not found
    -
    HTTP_NOT_IMPLEMENTED
    +
    HTTP_STATUS_NOT_IMPLEMENTED
    Feature not implemented
    -
    HTTP_NOT_MODIFIED
    +
    HTTP_STATUS_NOT_MODIFIED
    File not modified
    -
    HTTP_NOT_SUPPORTED
    +
    HTTP_STATUS_NOT_SUPPORTED
    HTTP version not supported
    -
    HTTP_NO_CONTENT
    +
    HTTP_STATUS_NO_CONTENT
    Successful command, no new data
    -
    HTTP_OK
    +
    HTTP_STATUS_OK
    OPTIONS/GET/HEAD/POST/TRACE command was successful
    -
    HTTP_PARTIAL_CONTENT
    +
    HTTP_STATUS_PARTIAL_CONTENT
    Only a partial file was recieved/sent
    -
    HTTP_PAYMENT_REQUIRED
    +
    HTTP_STATUS_PAYMENT_REQUIRED
    Payment required
    -
    HTTP_PKI_ERROR  CUPS 1.5/OS X 10.7 
    -
    Error negotiating a secure connection
    -
    HTTP_PRECONDITION
    +
    HTTP_STATUS_PRECONDITION
    Precondition failed
    -
    HTTP_PROXY_AUTHENTICATION
    +
    HTTP_STATUS_PROXY_AUTHENTICATION
    Proxy Authentication is Required
    -
    HTTP_REQUESTED_RANGE
    +
    HTTP_STATUS_REQUESTED_RANGE
    The requested range is not satisfiable
    -
    HTTP_REQUEST_TIMEOUT
    +
    HTTP_STATUS_REQUEST_TIMEOUT
    Request timed out
    -
    HTTP_REQUEST_TOO_LARGE
    +
    HTTP_STATUS_REQUEST_TOO_LARGE
    Request entity too large
    -
    HTTP_RESET_CONTENT
    +
    HTTP_STATUS_RESET_CONTENT
    Content was reset/recreated
    -
    HTTP_SEE_OTHER
    +
    HTTP_STATUS_SEE_OTHER
    See this other link...
    -
    HTTP_SERVER_ERROR
    +
    HTTP_STATUS_SERVER_ERROR
    Internal server error
    -
    HTTP_SERVICE_UNAVAILABLE
    +
    HTTP_STATUS_SERVICE_UNAVAILABLE
    Service is unavailable
    -
    HTTP_SWITCHING_PROTOCOLS
    +
    HTTP_STATUS_SWITCHING_PROTOCOLS
    HTTP upgrade to TLS/SSL
    -
    HTTP_UNAUTHORIZED
    +
    HTTP_STATUS_UNAUTHORIZED
    Unauthorized to access host
    -
    HTTP_UNSUPPORTED_MEDIATYPE
    +
    HTTP_STATUS_UNSUPPORTED_MEDIATYPE
    The requested media type is unsupported
    -
    HTTP_UPGRADE_REQUIRED
    +
    HTTP_STATUS_UPGRADE_REQUIRED
    Upgrade to SSL/TLS required
    -
    HTTP_URI_TOO_LONG
    +
    HTTP_STATUS_URI_TOO_LONG
    URI too long
    -
    HTTP_USE_PROXY
    +
    HTTP_STATUS_USE_PROXY
    Must use a proxy to access this URI

    http_uri_coding_e

    @@ -5030,40 +5521,40 @@ are server-oriented...

    URI separation status

    Constants

    -
    HTTP_URI_BAD_ARGUMENTS
    +
    HTTP_URI_STATUS_BAD_ARGUMENTS
    Bad arguments to function (error)
    -
    HTTP_URI_BAD_HOSTNAME
    +
    HTTP_URI_STATUS_BAD_HOSTNAME
    Bad hostname in URI (error)
    -
    HTTP_URI_BAD_PORT
    +
    HTTP_URI_STATUS_BAD_PORT
    Bad port number in URI (error)
    -
    HTTP_URI_BAD_RESOURCE
    +
    HTTP_URI_STATUS_BAD_RESOURCE
    Bad resource in URI (error)
    -
    HTTP_URI_BAD_SCHEME
    +
    HTTP_URI_STATUS_BAD_SCHEME
    Bad scheme in URI (error)
    -
    HTTP_URI_BAD_URI
    +
    HTTP_URI_STATUS_BAD_URI
    Bad/empty URI (error)
    -
    HTTP_URI_BAD_USERNAME
    +
    HTTP_URI_STATUS_BAD_USERNAME
    Bad username in URI (error)
    -
    HTTP_URI_MISSING_RESOURCE
    +
    HTTP_URI_STATUS_MISSING_RESOURCE
    Missing resource in URI (warning)
    -
    HTTP_URI_MISSING_SCHEME
    +
    HTTP_URI_STATUS_MISSING_SCHEME
    Missing scheme in URI (warning)
    -
    HTTP_URI_OK
    +
    HTTP_URI_STATUS_OK
    URI decoded OK
    -
    HTTP_URI_OVERFLOW
    +
    HTTP_URI_STATUS_OVERFLOW
    URI buffer for httpAssembleURI is too small
    -
    HTTP_URI_UNKNOWN_SCHEME
    +
    HTTP_URI_STATUS_UNKNOWN_SCHEME
    Unknown scheme in URI (warning)

    http_version_e

    HTTP version numbers

    Constants

    -
    HTTP_0_9
    +
    HTTP_VERSION_0_9
    HTTP/0.9
    -
    HTTP_1_0
    +
    HTTP_VERSION_1_0
    HTTP/1.0
    -
    HTTP_1_1
    +
    HTTP_VERSION_1_1
    HTTP/1.1

    ipp_dstate_e

    @@ -5071,12 +5562,17 @@ are server-oriented...

    Constants

    IPP_DOCUMENT_ABORTED
    +
    Document is aborted
    IPP_DOCUMENT_CANCELED
    +
    Document is canceled
    IPP_DOCUMENT_COMPLETED
    +
    Document is completed
    IPP_DOCUMENT_PENDING
    +
    Document is pending
    IPP_DOCUMENT_PROCESSING
    +
    Document is processing
    -

    ipp_finish_e

    +

    ipp_finishings_e

    Finishings

    Constants

    @@ -5096,6 +5592,38 @@ are server-oriented...

    Fold to make booklet
    IPP_FINISHINGS_COVER
    Add cover
    +
    IPP_FINISHINGS_CUPS_PUNCH_BOTTOM_LEFT
    +
    Punch 1 hole bottom left
    +
    IPP_FINISHINGS_CUPS_PUNCH_BOTTOM_RIGHT
    +
    Punch 1 hole bottom right
    +
    IPP_FINISHINGS_CUPS_PUNCH_DUAL_BOTTOM
    +
    Punch 2 holes bottom edge
    +
    IPP_FINISHINGS_CUPS_PUNCH_DUAL_LEFT
    +
    Punch 2 holes left side
    +
    IPP_FINISHINGS_CUPS_PUNCH_DUAL_RIGHT
    +
    Punch 2 holes right side
    +
    IPP_FINISHINGS_CUPS_PUNCH_DUAL_TOP
    +
    Punch 2 holes top edge
    +
    IPP_FINISHINGS_CUPS_PUNCH_QUAD_BOTTOM
    +
    Punch 4 holes bottom edge
    +
    IPP_FINISHINGS_CUPS_PUNCH_QUAD_LEFT
    +
    Punch 4 holes left side
    +
    IPP_FINISHINGS_CUPS_PUNCH_QUAD_RIGHT
    +
    Punch 4 holes right side
    +
    IPP_FINISHINGS_CUPS_PUNCH_QUAD_TOP
    +
    Punch 4 holes top edge
    +
    IPP_FINISHINGS_CUPS_PUNCH_TOP_LEFT
    +
    Punch 1 hole top left
    +
    IPP_FINISHINGS_CUPS_PUNCH_TOP_RIGHT
    +
    Punch 1 hole top right
    +
    IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_BOTTOM
    +
    Punch 3 holes bottom edge
    +
    IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_LEFT
    +
    Punch 3 holes left side
    +
    IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_RIGHT
    +
    Punch 3 holes right side
    +
    IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_TOP
    +
    Punch 3 holes top edge
    IPP_FINISHINGS_EDGE_STITCH
    Stitch along any side
    IPP_FINISHINGS_EDGE_STITCH_BOTTOM
    @@ -5149,152 +5677,152 @@ are server-oriented...

    Job collation types

    Constants

    -
    IPP_JOB_COLLATED_DOCUMENTS
    -
    IPP_JOB_UNCOLLATED_DOCUMENTS
    -
    IPP_JOB_UNCOLLATED_SHEETS
    +
    IPP_JCOLLATE_COLLATED_DOCUMENTS
    +
    IPP_JCOLLATE_UNCOLLATED_DOCUMENTS
    +
    IPP_JCOLLATE_UNCOLLATED_SHEETS

    ipp_jstate_e

    Job states

    Constants

    -
    IPP_JOB_ABORTED
    +
    IPP_JSTATE_ABORTED
    Job has aborted due to error
    -
    IPP_JOB_CANCELED
    +
    IPP_JSTATE_CANCELED
    Job has been canceled
    -
    IPP_JOB_COMPLETED
    +
    IPP_JSTATE_COMPLETED
    Job has completed successfully
    -
    IPP_JOB_HELD
    +
    IPP_JSTATE_HELD
    Job is held for printing
    -
    IPP_JOB_PENDING
    +
    IPP_JSTATE_PENDING
    Job is waiting to be printed
    -
    IPP_JOB_PROCESSING
    +
    IPP_JSTATE_PROCESSING
    Job is currently printing
    -
    IPP_JOB_STOPPED
    +
    IPP_JSTATE_STOPPED
    Job has been stopped

    ipp_op_e

    IPP operations

    Constants

    -
    CUPS_ACCEPT_JOBS
    +
    IPP_OP_CANCEL_JOB
    +
    Cancel a job
    +
    IPP_OP_CANCEL_JOBS
    +
    Cancel-Jobs
    +
    IPP_OP_CANCEL_MY_JOBS
    +
    Cancel-My-Jobs
    +
    IPP_OP_CANCEL_SUBSCRIPTION  CUPS 1.2/OS X 10.5 
    +
    Cancel a subscription
    +
    IPP_OP_CLOSE_JOB
    +
    Close-Job
    +
    IPP_OP_CREATE_JOB
    +
    Create an empty print job
    +
    IPP_OP_CREATE_JOB_SUBSCRIPTION  CUPS 1.2/OS X 10.5 
    +
    Create a job subscription
    +
    IPP_OP_CREATE_PRINTER_SUBSCRIPTION  CUPS 1.2/OS X 10.5 
    +
    Create a printer subscription
    +
    IPP_OP_CUPS_ACCEPT_JOBS
    Accept new jobs on a printer
    -
    CUPS_ADD_MODIFY_CLASS
    +
    IPP_OP_CUPS_ADD_MODIFY_CLASS
    Add or modify a class
    -
    CUPS_ADD_MODIFY_PRINTER
    +
    IPP_OP_CUPS_ADD_MODIFY_PRINTER
    Add or modify a printer
    -
    CUPS_AUTHENTICATE_JOB  CUPS 1.2/OS X 10.5 
    +
    IPP_OP_CUPS_AUTHENTICATE_JOB  CUPS 1.2/OS X 10.5 
    Authenticate a job
    -
    CUPS_DELETE_CLASS
    +
    IPP_OP_CUPS_DELETE_CLASS
    Delete a class
    -
    CUPS_DELETE_PRINTER
    +
    IPP_OP_CUPS_DELETE_PRINTER
    Delete a printer
    -
    CUPS_GET_CLASSES  DEPRECATED 
    +
    IPP_OP_CUPS_GET_CLASSES  DEPRECATED 
    Get a list of classes
    -
    CUPS_GET_DEFAULT
    +
    IPP_OP_CUPS_GET_DEFAULT
    Get the default printer
    -
    CUPS_GET_DEVICES
    +
    IPP_OP_CUPS_GET_DEVICES
    Get a list of supported devices
    -
    CUPS_GET_DOCUMENT  CUPS 1.4/OS X 10.6 
    +
    IPP_OP_CUPS_GET_DOCUMENT  CUPS 1.4/OS X 10.6 
    Get a document file
    -
    CUPS_GET_PPD  CUPS 1.3/OS X 10.5 
    +
    IPP_OP_CUPS_GET_PPD  CUPS 1.3/OS X 10.5 
    Get a PPD file
    -
    CUPS_GET_PPDS
    +
    IPP_OP_CUPS_GET_PPDS
    Get a list of supported drivers
    -
    CUPS_GET_PRINTERS
    +
    IPP_OP_CUPS_GET_PRINTERS
    Get a list of printers and/or classes
    -
    CUPS_MOVE_JOB
    +
    IPP_OP_CUPS_INVALID
    +
    Invalid operation name for ippOpValue
    +
    IPP_OP_CUPS_MOVE_JOB
    Move a job to a different printer
    -
    CUPS_REJECT_JOBS
    +
    IPP_OP_CUPS_REJECT_JOBS
    Reject new jobs on a printer
    -
    CUPS_SET_DEFAULT
    +
    IPP_OP_CUPS_SET_DEFAULT
    Set the default printer
    -
    IPP_CANCEL_JOB
    -
    Cancel a job
    -
    IPP_CANCEL_JOBS
    -
    Cancel-Jobs
    -
    IPP_CANCEL_MY_JOBS
    -
    Cancel-My-Jobs
    -
    IPP_CANCEL_SUBSCRIPTION  CUPS 1.2/OS X 10.5 
    -
    Cancel a subscription
    -
    IPP_CLOSE_JOB
    -
    Close-Job
    -
    IPP_CREATE_JOB
    -
    Create an empty print job
    -
    IPP_CREATE_JOB_SUBSCRIPTION  CUPS 1.2/OS X 10.5 
    -
    Create a job subscription
    -
    IPP_CREATE_PRINTER_SUBSCRIPTION  CUPS 1.2/OS X 10.5 
    -
    Create a printer subscription
    -
    IPP_DISABLE_PRINTER
    +
    IPP_OP_DISABLE_PRINTER
    Stop a printer
    -
    IPP_ENABLE_PRINTER
    +
    IPP_OP_ENABLE_PRINTER
    Start a printer
    -
    IPP_GET_JOBS
    +
    IPP_OP_GET_JOBS
    Get a list of jobs
    -
    IPP_GET_JOB_ATTRIBUTES
    +
    IPP_OP_GET_JOB_ATTRIBUTES
    Get job attributes
    -
    IPP_GET_NOTIFICATIONS  CUPS 1.2/OS X 10.5 
    +
    IPP_OP_GET_NOTIFICATIONS  CUPS 1.2/OS X 10.5 
    Get notification events
    -
    IPP_GET_PRINTER_ATTRIBUTES
    +
    IPP_OP_GET_PRINTER_ATTRIBUTES
    Get printer attributes
    -
    IPP_GET_PRINTER_SUPPORTED_VALUES
    +
    IPP_OP_GET_PRINTER_SUPPORTED_VALUES
    Get supported attribute values
    -
    IPP_GET_SUBSCRIPTIONS  CUPS 1.2/OS X 10.5 
    +
    IPP_OP_GET_SUBSCRIPTIONS  CUPS 1.2/OS X 10.5 
    Get list of subscriptions
    -
    IPP_GET_SUBSCRIPTION_ATTRIBUTES  CUPS 1.2/OS X 10.5 
    +
    IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES  CUPS 1.2/OS X 10.5 
    Get subscription attributes
    -
    IPP_HOLD_JOB
    +
    IPP_OP_HOLD_JOB
    Hold a job for printing
    -
    IPP_IDENTIFY_PRINTER
    +
    IPP_OP_IDENTIFY_PRINTER
    Identify-Printer (proposed IPP JPS3)
    -
    IPP_OP_CUPS_INVALID
    -
    Invalid operation name for ippOpValue
    -
    IPP_PAUSE_PRINTER
    +
    IPP_OP_PAUSE_PRINTER
    Stop a printer
    -
    IPP_PRINT_JOB
    +
    IPP_OP_PRINT_JOB
    Print a single file
    -
    IPP_PURGE_JOBS
    +
    IPP_OP_PURGE_JOBS
    Cancel all jobs
    -
    IPP_RELEASE_JOB
    +
    IPP_OP_RELEASE_JOB
    Release a job for printing
    -
    IPP_RENEW_SUBSCRIPTION  CUPS 1.2/OS X 10.5 
    +
    IPP_OP_RENEW_SUBSCRIPTION  CUPS 1.2/OS X 10.5 
    Renew a printer subscription
    -
    IPP_RESTART_JOB
    +
    IPP_OP_RESTART_JOB
    Reprint a job
    -
    IPP_RESUBMIT_JOB
    +
    IPP_OP_RESUBMIT_JOB
    Resubmit-Job
    -
    IPP_RESUME_PRINTER
    +
    IPP_OP_RESUME_PRINTER
    Start a printer
    -
    IPP_SEND_DOCUMENT
    +
    IPP_OP_SEND_DOCUMENT
    Add a file to a job
    -
    IPP_SET_JOB_ATTRIBUTES
    +
    IPP_OP_SET_JOB_ATTRIBUTES
    Set job attributes
    -
    IPP_VALIDATE_DOCUMENT
    +
    IPP_OP_VALIDATE_DOCUMENT
    Validate-Document (proposed IPP JPS3)
    -
    IPP_VALIDATE_JOB
    +
    IPP_OP_VALIDATE_JOB
    Validate job options

    ipp_orient_e

    Orientation values

    Constants

    -
    IPP_LANDSCAPE
    +
    IPP_ORIENT_LANDSCAPE
    90 degrees counter-clockwise
    -
    IPP_PORTRAIT
    +
    IPP_ORIENT_PORTRAIT
    No rotation
    -
    IPP_REVERSE_LANDSCAPE
    +
    IPP_ORIENT_REVERSE_LANDSCAPE
    90 degrees clockwise
    -
    IPP_REVERSE_PORTRAIT
    +
    IPP_ORIENT_REVERSE_PORTRAIT
    180 degrees

    ipp_pstate_e

    Printer states

    Constants

    -
    IPP_PRINTER_IDLE
    +
    IPP_PSTATE_IDLE
    Printer is idle
    -
    IPP_PRINTER_PROCESSING
    +
    IPP_PSTATE_PROCESSING
    Printer is working
    -
    IPP_PRINTER_STOPPED
    +
    IPP_PSTATE_STOPPED
    Printer is stopped

    ipp_quality_e

    @@ -5321,121 +5849,129 @@ are server-oriented...

    IPP states

    Constants

    -
    IPP_ATTRIBUTE
    +
    IPP_STATE_ATTRIBUTE
    One or more attributes need to be sent/received
    -
    IPP_DATA
    +
    IPP_STATE_DATA
    IPP request data needs to be sent/received
    -
    IPP_ERROR
    +
    IPP_STATE_ERROR
    An error occurred
    -
    IPP_HEADER
    +
    IPP_STATE_HEADER
    The request header needs to be sent/received
    -
    IPP_IDLE
    +
    IPP_STATE_IDLE
    Nothing is happening/request completed

    ipp_status_e

    IPP status codes

    Constants

    -
    CUPS_SEE_OTHER
    +
    IPP_STATUS_CUPS_INVALID
    +
    Invalid status name for ippErrorValue
    +
    IPP_STATUS_CUPS_SEE_OTHER
    cups-see-other
    -
    IPP_ATTRIBUTES
    -
    client-error-attributes-or-values-not-supported
    -
    IPP_ATTRIBUTES_NOT_SETTABLE
    +
    IPP_STATUS_ERROR_ATTRIBUTES_NOT_SETTABLE
    client-error-attributes-not-settable
    -
    IPP_AUTHENTICATION_CANCELED  CUPS 1.5/OS X 10.7 
    -
    Authentication canceled by user
    -
    IPP_BAD_REQUEST
    +
    IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES
    +
    client-error-attributes-or-values-not-supported
    +
    IPP_STATUS_ERROR_BAD_REQUEST
    client-error-bad-request
    -
    IPP_CHARSET
    +
    IPP_STATUS_ERROR_BUSY
    +
    server-error-busy
    +
    IPP_STATUS_ERROR_CHARSET
    client-error-charset-not-supported
    -
    IPP_COMPRESSION_ERROR
    +
    IPP_STATUS_ERROR_COMPRESSION_ERROR
    client-error-compression-error
    -
    IPP_COMPRESSION_NOT_SUPPORTED
    +
    IPP_STATUS_ERROR_COMPRESSION_NOT_SUPPORTED
    client-error-compression-not-supported
    -
    IPP_CONFLICT
    +
    IPP_STATUS_ERROR_CONFLICTING
    client-error-conflicting-attributes
    -
    IPP_DEVICE_ERROR
    +
    IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED  CUPS 1.7 
    +
    cups-error-account-authorization-failed
    +
    IPP_STATUS_ERROR_CUPS_ACCOUNT_CLOSED  CUPS 1.7 
    +
    cups-error-account-closed
    +
    IPP_STATUS_ERROR_CUPS_ACCOUNT_INFO_NEEDED  CUPS 1.7 
    +
    cups-error-account-info-needed
    +
    IPP_STATUS_ERROR_CUPS_ACCOUNT_LIMIT_REACHED  CUPS 1.7 
    +
    cups-error-account-limit-reached
    +
    IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED  CUPS 1.5/OS X 10.7 
    +
    cups-authentication-canceled - Authentication canceled by user
    +
    IPP_STATUS_ERROR_CUPS_PKI  CUPS 1.5/OS X 10.7 
    +
    cups-pki-error - Error negotiating a secure connection
    +
    IPP_STATUS_ERROR_CUPS_UPGRADE_REQUIRED
    +
    cups-upgrade-required - TLS upgrade required
    +
    IPP_STATUS_ERROR_DEVICE
    server-error-device-error
    -
    IPP_DOCUMENT_ACCESS_ERROR
    +
    IPP_STATUS_ERROR_DOCUMENT_ACCESS
    client-error-document-access-error
    -
    IPP_DOCUMENT_FORMAT
    -
    client-error-document-format-not-supported
    -
    IPP_DOCUMENT_FORMAT_ERROR
    +
    IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR
    client-error-document-format-error
    -
    IPP_DOCUMENT_PASSWORD_ERROR
    +
    IPP_STATUS_ERROR_DOCUMENT_FORMAT_NOT_SUPPORTED
    +
    client-error-document-format-not-supported
    +
    IPP_STATUS_ERROR_DOCUMENT_PASSWORD
    client-error-document-password-error
    -
    IPP_DOCUMENT_PERMISSION_ERROR
    +
    IPP_STATUS_ERROR_DOCUMENT_PERMISSION
    client-error-document-permission-error
    -
    IPP_DOCUMENT_SECURITY_ERROR
    +
    IPP_STATUS_ERROR_DOCUMENT_SECURITY
    client-error-document-security-error
    -
    IPP_DOCUMENT_UNPRINTABLE_ERROR
    +
    IPP_STATUS_ERROR_DOCUMENT_UNPRINTABLE
    client-error-document-unprintable-error
    -
    IPP_ERROR_JOB_CANCELED
    -
    server-error-job-canceled
    -
    IPP_FORBIDDEN
    +
    IPP_STATUS_ERROR_FORBIDDEN
    client-error-forbidden
    -
    IPP_GONE
    +
    IPP_STATUS_ERROR_GONE
    client-error-gone
    -
    IPP_IGNORED_ALL_SUBSCRIPTIONS
    +
    IPP_STATUS_ERROR_IGNORED_ALL_SUBSCRIPTIONS
    client-error-ignored-all-subscriptions
    -
    IPP_INTERNAL_ERROR
    +
    IPP_STATUS_ERROR_INTERNAL
    server-error-internal-error
    -
    IPP_MULTIPLE_JOBS_NOT_SUPPORTED
    +
    IPP_STATUS_ERROR_JOB_CANCELED
    +
    server-error-job-canceled
    +
    IPP_STATUS_ERROR_MULTIPLE_JOBS_NOT_SUPPORTED
    server-error-multiple-document-jobs-not-supported
    -
    IPP_NOT_ACCEPTING
    +
    IPP_STATUS_ERROR_NOT_ACCEPTING_JOBS
    server-error-not-accepting-jobs
    -
    IPP_NOT_AUTHENTICATED
    +
    IPP_STATUS_ERROR_NOT_AUTHENTICATED
    client-error-not-authenticated
    -
    IPP_NOT_AUTHORIZED
    +
    IPP_STATUS_ERROR_NOT_AUTHORIZED
    client-error-not-authorized
    -
    IPP_NOT_FOUND
    +
    IPP_STATUS_ERROR_NOT_FOUND
    client-error-not-found
    -
    IPP_NOT_POSSIBLE
    +
    IPP_STATUS_ERROR_NOT_POSSIBLE
    client-error-not-possible
    -
    IPP_OK
    -
    successful-ok
    -
    IPP_OK_CONFLICT
    -
    successful-ok-conflicting-attributes
    -
    IPP_OK_EVENTS_COMPLETE
    -
    successful-ok-events-complete
    -
    IPP_OK_IGNORED_SUBSCRIPTIONS
    -
    successful-ok-ignored-subscriptions
    -
    IPP_OK_SUBST
    -
    successful-ok-ignored-or-substituted-attributes
    -
    IPP_OK_TOO_MANY_EVENTS
    -
    successful-ok-too-many-events
    -
    IPP_OPERATION_NOT_SUPPORTED
    +
    IPP_STATUS_ERROR_OPERATION_NOT_SUPPORTED
    server-error-operation-not-supported
    -
    IPP_PKI_ERROR  CUPS 1.5/OS X 10.7 
    -
    Error negotiating a secure connection
    -
    IPP_PRINTER_BUSY
    -
    server-error-busy
    -
    IPP_PRINTER_IS_DEACTIVATED
    +
    IPP_STATUS_ERROR_PRINTER_IS_DEACTIVATED
    server-error-printer-is-deactivated
    -
    IPP_REQUEST_ENTITY
    +
    IPP_STATUS_ERROR_REQUEST_ENTITY
    client-error-request-entity-too-large
    -
    IPP_REQUEST_VALUE
    +
    IPP_STATUS_ERROR_REQUEST_VALUE
    client-error-request-value-too-long
    -
    IPP_SERVICE_UNAVAILABLE
    +
    IPP_STATUS_ERROR_SERVICE_UNAVAILABLE
    server-error-service-unavailable
    -
    IPP_STATUS_CUPS_INVALID
    -
    Invalid status name for ippErrorValue
    -
    IPP_TEMPORARY_ERROR
    +
    IPP_STATUS_ERROR_TEMPORARY
    server-error-temporary-error
    -
    IPP_TIMEOUT
    +
    IPP_STATUS_ERROR_TIMEOUT
    client-error-timeout
    -
    IPP_TOO_MANY_DOCUMENTS
    +
    IPP_STATUS_ERROR_TOO_MANY_DOCUMENTS
    server-error-too-many-documents
    -
    IPP_TOO_MANY_JOBS
    +
    IPP_STATUS_ERROR_TOO_MANY_JOBS
    server-error-too-many-jobs
    -
    IPP_TOO_MANY_SUBSCRIPTIONS
    +
    IPP_STATUS_ERROR_TOO_MANY_SUBSCRIPTIONS
    client-error-too-many-subscriptions
    -
    IPP_UPGRADE_REQUIRED
    -
    TLS upgrade required
    -
    IPP_URI_SCHEME
    +
    IPP_STATUS_ERROR_URI_SCHEME
    client-error-uri-scheme-not-supported
    -
    IPP_VERSION_NOT_SUPPORTED
    +
    IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED
    server-error-version-not-supported
    +
    IPP_STATUS_OK
    +
    successful-ok
    +
    IPP_STATUS_OK_CONFLICTING
    +
    successful-ok-conflicting-attributes
    +
    IPP_STATUS_OK_EVENTS_COMPLETE
    +
    successful-ok-events-complete
    +
    IPP_STATUS_OK_IGNORED_OR_SUBSTITUTED
    +
    successful-ok-ignored-or-substituted-attributes
    +
    IPP_STATUS_OK_IGNORED_SUBSCRIPTIONS
    +
    successful-ok-ignored-subscriptions
    +
    IPP_STATUS_OK_TOO_MANY_EVENTS
    +
    successful-ok-too-many-events

    ipp_tag_e

    Format tags for attributes

    diff --git a/locale/cups.pot b/locale/cups.pot index ddb65575c..cc8c2f99d 100644 --- a/locale/cups.pot +++ b/locale/cups.pot @@ -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 \n" "Language-Team: LANGUAGE \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 "" diff --git a/locale/cups.strings b/locale/cups.strings index 745be0f84..164144f15 100644 --- a/locale/cups.strings +++ b/locale/cups.strings @@ -269,7 +269,6 @@ "%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."; @@ -579,6 +578,7 @@ "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"; @@ -775,14 +775,21 @@ "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"; @@ -967,6 +974,7 @@ "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"; @@ -976,12 +984,10 @@ "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"; @@ -1045,7 +1051,9 @@ "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"; @@ -1066,9 +1074,8 @@ "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."; @@ -1217,6 +1224,9 @@ "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\"."; diff --git a/locale/cups_ca.po b/locale/cups_ca.po index cde14d651..d128cdcb3 100644 --- a/locale/cups_ca.po +++ b/locale/cups_ca.po @@ -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ó \n" "Language-Team: Catalan <>\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 https://" @@ -5986,7 +4616,6 @@ msgstr "" "Heu d'accedir a aquesta pagina a través de la URL https://%s:%d%s." -#: 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." diff --git a/locale/cups_es.po b/locale/cups_es.po index 1fe5bb9fd..148877235 100644 --- a/locale/cups_es.po +++ b/locale/cups_es.po @@ -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 \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 https://%s:%d%s." -msgstr "Debe acceder a esta página usando el URL https://%s:%d%s." +msgid "" +"You must access this page using the URL https://" +"%s:%d%s." +msgstr "" +"Debe acceder a esta página usando el URL https://" +"%s:%d%s." -#: 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." diff --git a/locale/cups_ja.po b/locale/cups_ja.po index 4982be5f9..7a49ad5c8 100644 --- a/locale/cups_ja.po +++ b/locale/cups_ja.po @@ -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 \n" "Language-Team: OPFC TRANSCUPS \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 https://" @@ -5856,289 +4572,228 @@ msgstr "" "このページには URL https://%s:%d%s を使ってア" "クセスする必要があります。" -#: 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 を試します。" diff --git a/monitor/tbcp.c b/monitor/tbcp.c index 4170d493b..e369975bc 100644 --- a/monitor/tbcp.c +++ b/monitor/tbcp.c @@ -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... diff --git a/scheduler/client.c b/scheduler/client.c index d4d6ac8b4..e3c35658a 100644 --- a/scheduler/client.c +++ b/scheduler/client.c @@ -60,20 +60,23 @@ 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; } diff --git a/scheduler/conf.c b/scheduler/conf.c index 9b48da503..3c9fcaf33 100644 --- a/scheduler/conf.c +++ b/scheduler/conf.c @@ -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)); } /* diff --git a/scheduler/conf.h b/scheduler/conf.h index 434300774..51783eecb 100644 --- a/scheduler/conf.h +++ b/scheduler/conf.h @@ -20,9 +20,10 @@ 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 */ diff --git a/scheduler/dirsvc.c b/scheduler/dirsvc.c index 6dfdb1361..74459f7f6 100644 --- a/scheduler/dirsvc.c +++ b/scheduler/dirsvc.c @@ -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; diff --git a/scheduler/ipp.c b/scheduler/ipp.c index e52c28462..c32b0d14f 100644 --- a/scheduler/ipp.c +++ b/scheduler/ipp.c @@ -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"); diff --git a/scheduler/job.c b/scheduler/job.c index 2f5002fb7..72ef3e869 100644 --- a/scheduler/job.c +++ b/scheduler/job.c @@ -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); diff --git a/scheduler/listen.c b/scheduler/listen.c index 16528b9dd..208cbbbae 100644 --- a/scheduler/listen.c +++ b/scheduler/listen.c @@ -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... diff --git a/scheduler/main.c b/scheduler/main.c index 07b0c1534..b0185e1ab 100644 --- a/scheduler/main.c +++ b/scheduler/main.c @@ -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 */ } diff --git a/scheduler/network.c b/scheduler/network.c index 87e660ce3..bf0dea758 100644 --- a/scheduler/network.c +++ b/scheduler/network.c @@ -264,7 +264,7 @@ cupsdNetIFUpdate(void) if (match) { - temp->port = _httpAddrPort(&(lis->address)); + temp->port = httpAddrPort(&(lis->address)); break; } } diff --git a/scheduler/printers.c b/scheduler/printers.c index b7b84c13e..ea2f8dda5 100644 --- a/scheduler/printers.c +++ b/scheduler/printers.c @@ -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); diff --git a/scheduler/statbuf.c b/scheduler/statbuf.c index e719aebdb..7d500d4c1 100644 --- a/scheduler/statbuf.c +++ b/scheduler/statbuf.c @@ -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; diff --git a/systemv/cupstestppd.c b/systemv/cupstestppd.c index 491b14640..eb918d879 100644 --- a/systemv/cupstestppd.c +++ b/systemv/cupstestppd.c @@ -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)) diff --git a/test/ippserver.c b/test/ippserver.c index a6b53cbcf..ae604196e 100644 --- a/test/ippserver.c +++ b/test/ippserver.c @@ -72,11 +72,24 @@ * 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 +#include /* Public API */ +#include /* CUPS configuration header */ +#include /* For string functions */ +#include /* For multithreading functions */ + #ifdef HAVE_DNSSD # include #endif /* HAVE_DNSSD */ @@ -102,29 +115,29 @@ 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), "&", 5); + httpWrite2(client->http, "&", 5); else - httpWrite2(&(client->http), "<", 4); + httpWrite2(client->http, "<", 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 */ "\n" "\n" "\n" - "

    %s

    \n" + "

    %s

    \n" "

    %s, %d job(s).

    \n" "\n" "\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); } diff --git a/test/ipptool.c b/test/ipptool.c index a364a93f7..3882ef647 100644 --- a/test/ipptool.c +++ b/test/ipptool.c @@ -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; diff --git a/test/run-stp-tests.sh b/test/run-stp-tests.sh index 7ab618f04..4a1174e3d 100755 --- a/test/run-stp-tests.sh +++ b/test/run-stp-tests.sh @@ -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 diff --git a/xcode/CUPS.xcodeproj/project.pbxproj b/xcode/CUPS.xcodeproj/project.pbxproj index c1a32a00d..4f8a2419b 100644 --- a/xcode/CUPS.xcodeproj/project.pbxproj +++ b/xcode/CUPS.xcodeproj/project.pbxproj @@ -2650,7 +2650,7 @@ 72BF96371333042100B1EAD7 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0440; + LastUpgradeCheck = 0450; ORGANIZATIONNAME = "Apple Inc."; }; buildConfigurationList = 72BF963A1333042100B1EAD7 /* Build configuration list for PBXProject "CUPS" */; diff --git a/xcode/config.h b/xcode/config.h index 441c4c41f..00c3f3dc8 100644 --- a/xcode/config.h +++ b/xcode/config.h @@ -308,14 +308,14 @@ */ #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 */ /* @@ -517,8 +517,8 @@ */ #define HAVE_COREFOUNDATION_H 1 -#define HAVE_CFPRIV_H 1 -#define HAVE_CFBUNDLEPRIV_H 1 +/* #undef HAVE_CFPRIV_H */ +/* #undef HAVE_CFBUNDLEPRIV_H */ /* @@ -540,7 +540,7 @@ */ #define HAVE_MEMBERSHIP_H 1 -#define HAVE_MEMBERSHIPPRIV_H 1 +/* #undef HAVE_MEMBERSHIPPRIV_H */ #define HAVE_MBR_UID_TO_UUID 1 @@ -556,7 +556,7 @@ * Do we have Darwin's IOKit private headers? */ -#define HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H 1 +/* #undef HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H */ /* @@ -574,7 +574,7 @@ #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 */ @@ -709,7 +709,7 @@ */ #define HAVE_XPC 1 -#define HAVE_XPC_PRIVATE_H 1 +/* #undef HAVE_XPC_PRIVATE_H */ /* -- 2.39.2