From: msweet
Date: Wed, 18 Mar 2009 17:09:48 +0000 (+0000)
Subject: Merge changes from CUPS 1.4svn-r8454.
X-Git-Tag: release-1.6.3~109
X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=238c38326574f7793dc1deda72f6aff208d791dc;p=thirdparty%2Fcups.git
Merge changes from CUPS 1.4svn-r8454.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1311 a1ca3aef-8c08-0410-bb20-df032aa958be
---
diff --git a/CHANGES-1.3.txt b/CHANGES-1.3.txt
index a6f086137a..dd58bdff4f 100644
--- a/CHANGES-1.3.txt
+++ b/CHANGES-1.3.txt
@@ -5,6 +5,10 @@ CHANGES IN CUPS V1.3.10
- Documentation fixes (STR #2994, STR #2995, STR #3008, STR #3056,
STR #3057)
+ - The scheduler did not support the job-hold-until attribute with the
+ Restart-Job operation (STR #3130)
+ - The rastertohp driver did not set the 1-sided printing mode when
+ needed (STR #3131)
- Now use a wrapper program instead of our fork of the Xpdf code to
support printing of PDF files. The new wrapper supports using Xpdf,
poppler, or Ghostscript to convert PDF files to PostScript (STR #3129)
diff --git a/CHANGES.txt b/CHANGES.txt
index ef8e6ff695..7cacef1d8e 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,9 +1,13 @@
-CHANGES.txt - 2009-03-04
+CHANGES.txt - 2009-03-18
------------------------
CHANGES IN CUPS V1.4b3
- Documentation fixes (STR #3044, STR #3057)
+ - CUPS-Get-PPDs did not work properly when filtering by language,
+ product, or psversion (STR #3136)
+ - The scheduler now kills job filters when it takes more than 30 seconds
+ (configurable) to cancel or hold the job.
- The cupstestppd program did not validate the capitalization of
filenames in the PPD file.
- The cupstestppd program did not validate the PageSize and PageRegion
diff --git a/backend/dnssd.c b/backend/dnssd.c
index f5687f3c3d..47a8b608ee 100644
--- a/backend/dnssd.c
+++ b/backend/dnssd.c
@@ -55,7 +55,8 @@ typedef struct
char *name, /* Service name */
*domain, /* Domain name */
*fullName, /* Full name */
- *make_and_model; /* Make and model from TXT record */
+ *make_and_model, /* Make and model from TXT record */
+ *device_id; /* 1284 device ID from TXT record */
cups_devtype_t type; /* Device registration type */
int priority, /* Priority associated with type */
cups_shared, /* CUPS shared printer? */
@@ -307,7 +308,7 @@ main(int argc, /* I - Number of command-line args */
best->cups_shared ? "/cups" : "/");
cupsBackendReport("network", device_uri, best->make_and_model,
- best->name, NULL, NULL);
+ best->name, best->device_id, NULL);
best->sent = 1;
best = device;
}
@@ -331,7 +332,7 @@ main(int argc, /* I - Number of command-line args */
best->cups_shared ? "/cups" : "/");
cupsBackendReport("network", device_uri, best->make_and_model,
- best->name, NULL, NULL);
+ best->name, best->device_id, NULL);
best->sent = 1;
}
}
@@ -593,8 +594,8 @@ query_callback(
{
cups_array_t *devices; /* Device array */
char name[1024], /* Service name */
- *ptr; /* Pointer into name */
- cups_device_t key, /* Search key */
+ *ptr; /* Pointer into string */
+ cups_device_t dkey, /* Search key */
*device; /* Device */
@@ -617,123 +618,183 @@ query_callback(
* Lookup the service in the devices array.
*/
- devices = (cups_array_t *)context;
- key.name = name;
+ devices = (cups_array_t *)context;
+ dkey.name = name;
unquote(name, fullName, sizeof(name));
- if ((key.domain = strstr(name, "._tcp.")) != NULL)
- key.domain += 6;
+ if ((dkey.domain = strstr(name, "._tcp.")) != NULL)
+ dkey.domain += 6;
else
- key.domain = (char *)"local.";
+ dkey.domain = (char *)"local.";
if ((ptr = strstr(name, "._")) != NULL)
*ptr = '\0';
if (strstr(fullName, "_ipp._tcp.") ||
strstr(fullName, "_ipp-tls._tcp."))
- key.type = CUPS_DEVICE_IPP;
+ dkey.type = CUPS_DEVICE_IPP;
else if (strstr(fullName, "_fax-ipp._tcp."))
- key.type = CUPS_DEVICE_FAX_IPP;
+ dkey.type = CUPS_DEVICE_FAX_IPP;
else if (strstr(fullName, "_printer._tcp."))
- key.type = CUPS_DEVICE_PRINTER;
+ dkey.type = CUPS_DEVICE_PRINTER;
else if (strstr(fullName, "_pdl-datastream._tcp."))
- key.type = CUPS_DEVICE_PDL_DATASTREAM;
+ dkey.type = CUPS_DEVICE_PDL_DATASTREAM;
else
- key.type = CUPS_DEVICE_RIOUSBPRINT;
+ dkey.type = CUPS_DEVICE_RIOUSBPRINT;
- for (device = cupsArrayFind(devices, &key);
+ for (device = cupsArrayFind(devices, &dkey);
device;
device = cupsArrayNext(devices))
{
- if (strcasecmp(device->name, key.name) ||
- strcasecmp(device->domain, key.domain))
+ if (strcasecmp(device->name, dkey.name) ||
+ strcasecmp(device->domain, dkey.domain))
{
device = NULL;
break;
}
- else if (device->type == key.type)
+ else if (device->type == dkey.type)
{
/*
* Found it, pull out the priority and make and model from the TXT
* record and save it...
*/
- const void *value; /* Pointer to value */
- uint8_t valueLen; /* Length of value (max 255) */
- char make_and_model[512], /* Manufacturer and model */
- model[256], /* Model */
- priority[256]; /* Priority */
+ const uint8_t *data, /* Pointer into data */
+ *datanext, /* Next key/value pair */
+ *dataend; /* End of entire TXT record */
+ uint8_t datalen; /* Length of current key/value pair */
+ char key[256], /* Key string */
+ value[256], /* Value string */
+ make_and_model[512],
+ /* Manufacturer and model */
+ model[256], /* Model */
+ device_id[2048];/* 1284 device ID */
- value = TXTRecordGetValuePtr(rdlen, rdata, "priority", &valueLen);
+ device_id[0] = '\0';
+ make_and_model[0] = '\0';
- if (value && valueLen)
+ strcpy(model, "Unknown");
+
+ for (data = rdata, dataend = data + rdlen;
+ data < dataend;
+ data = datanext)
{
- memcpy(priority, value, valueLen);
- priority[valueLen] = '\0';
- device->priority = atoi(priority);
- }
+ /*
+ * Read a key/value pair starting with an 8-bit length. Since the
+ * length is 8 bits and the size of the key/value buffers is 256, we
+ * don't need to check for overflow...
+ */
- if ((value = TXTRecordGetValuePtr(rdlen, rdata, "usb_MFG",
- &valueLen)) == NULL)
- value = TXTRecordGetValuePtr(rdlen, rdata, "usb_MANUFACTURER",
- &valueLen);
+ datalen = *data++;
- if (value && valueLen)
- {
- memcpy(make_and_model, value, valueLen);
- make_and_model[valueLen] = '\0';
- }
- else
- make_and_model[0] = '\0';
+ if (!datalen || (data + datalen) >= dataend)
+ break;
- if ((value = TXTRecordGetValuePtr(rdlen, rdata, "usb_MDL",
- &valueLen)) == NULL)
- value = TXTRecordGetValuePtr(rdlen, rdata, "usb_MODEL", &valueLen);
+ datanext = data + datalen;
- if (value && valueLen)
- {
- memcpy(model, value, valueLen);
- model[valueLen] = '\0';
- }
- else if ((value = TXTRecordGetValuePtr(rdlen, rdata, "product",
- &valueLen)) != NULL && valueLen > 2)
- {
- if (((char *)value)[0] == '(')
+ for (ptr = key; data < datanext && *data != '='; data ++)
+ *ptr++ = *data;
+ *ptr = '\0';
+
+ if (data < datanext && *data == '=')
{
- /*
- * Strip parenthesis...
- */
+ data ++;
- memcpy(model, value + 1, valueLen - 2);
- model[valueLen - 2] = '\0';
+ if (data < datanext)
+ memcpy(value, data, datanext - data);
+ value[datanext - data] = '\0';
}
else
+ continue;
+
+ if (!strncasecmp(key, "usb_", 4))
{
- memcpy(model, value, valueLen);
- model[valueLen] = '\0';
- }
+ /*
+ * Add USB device ID information...
+ */
- if (!strcasecmp(model, "GPL Ghostscript") ||
- !strcasecmp(model, "GNU Ghostscript") ||
- !strcasecmp(model, "ESP Ghostscript"))
+ ptr = device_id + strlen(device_id);
+ snprintf(ptr, sizeof(device_id) - (ptr - device_id), "%s:%s;",
+ key + 4, value);
+ }
+
+ if (!strcasecmp(key, "usb_MFG") || !strcasecmp(key, "usb_MANU") ||
+ !strcasecmp(key, "usb_MANUFACTURER"))
+ strcpy(make_and_model, value);
+ else if (!strcasecmp(key, "usb_MDL") || !strcasecmp(key, "usb_MODEL"))
+ strcpy(model, value);
+ else if (!strcasecmp(key, "product") && !strstr(value, "Ghostscript"))
{
- if ((value = TXTRecordGetValuePtr(rdlen, rdata, "ty",
- &valueLen)) != NULL)
+ if (value[0] == '(')
{
- memcpy(model, value, valueLen);
- model[valueLen] = '\0';
+ /*
+ * Strip parenthesis...
+ */
- if ((ptr = strchr(model, ',')) != NULL)
+ if ((ptr = value + strlen(value) - 1) > value && *ptr == ')')
*ptr = '\0';
+
+ strcpy(model, value + 1);
}
else
- strcpy(model, "Unknown");
+ strcpy(model, value);
+ }
+ else if (!strcasecmp(key, "ty"))
+ {
+ strcpy(model, value);
+
+ if ((ptr = strchr(model, ',')) != NULL)
+ *ptr = '\0';
}
+ else if (!strcasecmp(key, "priority"))
+ device->priority = atoi(value);
+ else if ((device->type == CUPS_DEVICE_IPP ||
+ device->type == CUPS_DEVICE_PRINTER) &&
+ !strcasecmp(key, "printer-type"))
+ {
+ /*
+ * This is a CUPS printer!
+ */
+
+ device->cups_shared = 1;
+
+ if (device->type == CUPS_DEVICE_PRINTER)
+ device->sent = 1;
+ }
+ }
+
+ if (device->device_id)
+ free(device->device_id);
+
+ if (!device_id[0] && strcmp(model, "Unknown"))
+ {
+ if (make_and_model[0])
+ snprintf(device_id, sizeof(device_id), "MFG:%s;MDL:%s;",
+ make_and_model, model);
+ else if (!strncasecmp(model, "designjet ", 10))
+ snprintf(device_id, sizeof(device_id), "MFG:HP;MDL:%s", model + 10);
+ else if (!strncasecmp(model, "stylus ", 7))
+ snprintf(device_id, sizeof(device_id), "MFG:EPSON;MDL:%s", model + 7);
+ else if ((ptr = strchr(model, ' ')) != NULL)
+ {
+ /*
+ * Assume the first word is the make...
+ */
+
+ memcpy(make_and_model, model, ptr - model);
+ make_and_model[ptr - model] = '\0';
+
+ snprintf(device_id, sizeof(device_id), "MFG:%s;MDL:%s",
+ make_and_model, ptr + 1);
+ }
}
+
+ if (device_id[0])
+ device->device_id = strdup(device_id);
else
- strcpy(model, "Unknown");
+ device->device_id = NULL;
if (device->make_and_model)
free(device->make_and_model);
@@ -742,25 +803,11 @@ query_callback(
{
strlcat(make_and_model, " ", sizeof(make_and_model));
strlcat(make_and_model, model, sizeof(make_and_model));
+
device->make_and_model = strdup(make_and_model);
}
else
device->make_and_model = strdup(model);
-
- if ((device->type == CUPS_DEVICE_IPP ||
- device->type == CUPS_DEVICE_PRINTER) &&
- TXTRecordGetValuePtr(rdlen, rdata, "printer-type", &valueLen))
- {
- /*
- * This is a CUPS printer!
- */
-
- device->cups_shared = 1;
-
- if (device->type == CUPS_DEVICE_PRINTER)
- device->sent = 1;
- }
-
break;
}
}
diff --git a/cups/emit.c b/cups/emit.c
index 6934366fb4..3389607f95 100644
--- a/cups/emit.c
+++ b/cups/emit.c
@@ -707,8 +707,8 @@ ppdEmitString(ppd_file_t *ppd, /* I - PPD file record */
choices[i]->option->keyword))
!= NULL)
{
- bufsize += 17 + strlen(choices[i]->option->keyword) + 6;
- /* %%BeginFeature: *keyword True\n */
+ bufsize += 23 + strlen(choices[i]->option->keyword) + 6;
+ /* %%BeginFeature: *Customkeyword True\n */
for (cparam = (ppd_cparam_t *)cupsArrayFirst(coption->params);
diff --git a/doc/help/ref-cupsd-conf.html.in b/doc/help/ref-cupsd-conf.html.in
index 638c49d812..28d16de4a0 100644
--- a/doc/help/ref-cupsd-conf.html.in
+++ b/doc/help/ref-cupsd-conf.html.in
@@ -1208,6 +1208,9 @@ printer.
HREF="#JobRetryInterval">JobRetryInterval
directive controls the value of N
+ retry-this-job
- Retry the current job immediately
+ and indefinitely.
+
stop-printer
- Stop the printer and keep
the job for future printing; this is the default
value
@@ -1510,6 +1513,22 @@ print queues whose error policy is retry-job
. The
default is 30 seconds.
+
+
+Examples
+
+
+JobKillDelay 30
+JobKillDelay 120
+
+
+Description
+
+The JobKillDelay
directive specifies the number of seconds to
+wait before killing the filters and backend associated with a canceled or held
+job. The default is 30 seconds.
+
+
Examples
diff --git a/filter/rastertohp.c b/filter/rastertohp.c
index 95a87860f9..f5f82dc2e7 100644
--- a/filter/rastertohp.c
+++ b/filter/rastertohp.c
@@ -4,7 +4,7 @@
* Hewlett-Packard Page Control Language filter for the Common UNIX
* Printing System (CUPS).
*
- * Copyright 2007-2008 by Apple Inc.
+ * Copyright 2007-2009 by Apple Inc.
* Copyright 1993-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -249,10 +249,9 @@ StartPage(ppd_file_t *ppd, /* I - PPD file */
if (!ppd || ppd->model_number != 2)
{
- if (header->Duplex)
- printf("\033&l%dS", /* Set duplex mode */
- header->Duplex + header->Tumble);
+ int mode = Duplex ? 1 + header->Tumble != 0 : 0;
+ printf("\033&l%dS", mode); /* Set duplex mode */
printf("\033&l0L"); /* Turn off perforation skip */
}
}
diff --git a/locale/cups_es.po b/locale/cups_es.po
index 04d318f940..4891b4d3e2 100644
--- a/locale/cups_es.po
+++ b/locale/cups_es.po
@@ -17,7 +17,7 @@ msgstr ""
"Project-Id-Version: CUPS 1.4\n"
"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
"POT-Creation-Date: 2009-03-13 15:08-0700\n"
-"PO-Revision-Date: 2008-12-17 17:32+0100\n"
+"PO-Revision-Date: 2009-03-16 19:35+0100\n"
"Last-Translator: Juan Pablo González Riopedre \n"
"Language-Team: Spanish\n"
"MIME-Version: 1.0\n"
@@ -245,31 +245,24 @@ msgstr ""
" REF: Página 15, sección 3.2.\n"
msgid " WARN Default choices conflicting!\n"
-msgstr ""
-" ADVERTENCIA Las preferencias predeterminadas están en conflicto.\n"
+msgstr " ADVERTENCIA Las preferencias predeterminadas están en conflicto.\n"
#, 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\n"
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\n"
-msgid ""
-" WARN File contains a mix of CR, LF, and CR LF line endings!\n"
-msgstr ""
-" ADVERTENCIA El archivo contiene una mezcla de lÃneas acabadas en "
-"CR, LF y CR LF.\n"
+msgid " WARN File contains a mix of CR, LF, and CR LF line endings!\n"
+msgstr " ADVERTENCIA El archivo contiene una mezcla de lÃneas acabadas en CR, LF y CR LF.\n"
msgid ""
" WARN LanguageEncoding required by PPD 4.3 spec.\n"
" REF: Pages 56-57, section 5.3.\n"
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.\n"
#, c-format
@@ -280,16 +273,11 @@ msgid ""
" WARN Manufacturer required by PPD 4.3 spec.\n"
" REF: Pages 58-59, section 5.3.\n"
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.\n"
-msgid ""
-" WARN Non-Windows PPD files should use lines ending with only LF, "
-"not CR LF!\n"
-msgstr ""
-" ADVERTENCIA Los archivos PPD que no sean de Windows deben tener "
-"lÃneas que acaben sólo en LF, no en CR LF.\n"
+msgid " WARN Non-Windows PPD files should use lines ending with only LF, not CR LF!\n"
+msgstr " ADVERTENCIA Los archivos PPD que no sean de Windows deben tener lÃneas que acaben sólo en LF, no en CR LF.\n"
#, c-format
msgid ""
@@ -303,32 +291,28 @@ msgid ""
" WARN PCFileName longer than 8.3 in violation of PPD spec.\n"
" REF: Pages 61-62, section 5.3.\n"
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.\n"
msgid ""
" WARN Protocols contains PJL but JCL attributes are not set.\n"
" REF: Pages 78-79, section 5.7.\n"
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.\n"
msgid ""
" WARN Protocols contains both PJL and BCP; expected TBCP.\n"
" REF: Pages 78-79, section 5.7.\n"
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.\n"
msgid ""
" WARN ShortNickName required by PPD 4.3 spec.\n"
" REF: Pages 64-65, section 5.3.\n"
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.\n"
#, c-format
@@ -337,7 +321,7 @@ msgstr " %s %s %s no existe.\n"
#, c-format
msgid " %s %s file \"%s\" has the wrong capitalization!\n"
-msgstr ""
+msgstr " %s archivo %s \"%s\" tiene las mayúsculas equivocadas.\n"
#, c-format
msgid ""
@@ -349,15 +333,11 @@ msgstr ""
#, c-format
msgid " %s Bad UTF-8 \"%s\" translation string for option %s!\n"
-msgstr ""
-" %s Cadena de traducción UTF-8 \"%s\" incorrecta para opción %s.\n"
+msgstr " %s Cadena de traducción UTF-8 \"%s\" incorrecta para opción %s.\n"
#, c-format
-msgid ""
-" %s Bad UTF-8 \"%s\" translation string for option %s, choice %s!\n"
-msgstr ""
-" %s Cadena de traducción UTF-8 \"%s\" incorrecta para opción %s, "
-"preferencia %s.\n"
+msgid " %s Bad UTF-8 \"%s\" translation string for option %s, choice %s!\n"
+msgstr " %s Cadena de traducción UTF-8 \"%s\" incorrecta para opción %s, preferencia %s.\n"
#, c-format
msgid " %s Bad cupsFilter value \"%s\"!\n"
@@ -381,11 +361,11 @@ msgstr " %s Idioma incorrecto \"%s\".\n"
#, c-format
msgid " %s Bad spelling of %s - should be %s!\n"
-msgstr ""
+msgstr " %s %s mal escrito - deberÃa ser %s.\n"
#, c-format
msgid " %s Cannot provide both APScanAppPath and APScanAppBundleID!\n"
-msgstr ""
+msgstr " %s No puede proporcionar APScanAppPath y APScanAppBundleID.\n"
#, c-format
msgid " %s Empty cupsUIConstraints %s!\n"
@@ -397,50 +377,51 @@ msgstr " %s Falta cadena de traducción \"%s\" para opción %s.\n"
#, c-format
msgid " %s Missing \"%s\" translation string for option %s, choice %s!\n"
-msgstr ""
-" %s Falta cadena de traducción \"%s\" para opción %s, preferencia %s.\n"
+msgstr " %s Falta cadena de traducción \"%s\" para opción %s, preferencia %s.\n"
#, c-format
msgid " %s Missing APDialogExtension file \"%s\"\n"
-msgstr ""
+msgstr " %s Falta el archivo APDialogExtension \"%s\"\n"
#, c-format
msgid " %s Missing APPrinterIconPath file \"%s\"\n"
-msgstr ""
+msgstr " %s Falta el archivo APPrinterIconPath \"%s\"\n"
#, c-format
msgid " %s Missing APPrinterLowInkTool file \"%s\"\n"
-msgstr ""
+msgstr " %s Falta el archivo APPrinterLowInkTool \"%s\"\n"
#, c-format
msgid " %s Missing APPrinterUtilityPath file \"%s\"\n"
-msgstr ""
+msgstr " %s Falta el archivo APPrinterUtilityPath \"%s\"\n"
#, c-format
msgid " %s Missing APScanAppPath file \"%s\"\n"
-msgstr ""
+msgstr " %s Falta el archivo APScanAppPath \"%s\"\n"
#, c-format
msgid ""
" %s Missing REQUIRED PageRegion option!\n"
" REF: Page 100, section 5.14.\n"
msgstr ""
+" %s Falta la opción NECESARIA PageRegion.\n"
+" REF: Página 100, sección 5.14.\n"
#, c-format
msgid ""
" %s Missing REQUIRED PageSize option!\n"
" REF: Page 99, section 5.14.\n"
msgstr ""
+" %s Falta la opción NECESARIA PageSize.\n"
+" REF: Página 99, sección 5.14.\n"
#, c-format
msgid " %s Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\"!\n"
-msgstr ""
-" %s Falta la preferencia *%s %s en UIConstraint \"*%s %s *%s %s\".\n"
+msgstr " %s Falta la preferencia *%s %s en UIConstraint \"*%s %s *%s %s\".\n"
#, c-format
msgid " %s Missing choice *%s %s in cupsUIConstraints %s: \"%s\"!\n"
-msgstr ""
-" %s Falta la preferencia *%s %s en cupsUIConstraints %s: \"%s\".\n"
+msgstr " %s Falta la preferencia *%s %s en cupsUIConstraints %s: \"%s\".\n"
#, c-format
msgid " %s Missing cupsFilter file \"%s\"\n"
@@ -475,6 +456,8 @@ msgid ""
" %s Non-standard size name \"%s\"!\n"
" REF: Page 187, section B.2.\n"
msgstr ""
+" %s Tamaño de nombre \"%s\" no estándar.\n"
+" REF: Página 187, sección B.2.\n"
#, c-format
msgid ""
@@ -486,11 +469,11 @@ msgstr ""
#, c-format
msgid " %s Size \"%s\" defined for %s but not for %s!\n"
-msgstr ""
+msgstr " %s Tamaño \"%s\" definido para %s pero no para %s.\n"
#, c-format
msgid " %s Size \"%s\" has unexpected dimensions (%gx%g)!\n"
-msgstr ""
+msgstr " %s El tamaño \"%s\" tiene inesperadas dimensiones (%gx%g).\n"
#, c-format
msgid " %s cupsICCProfile %s hash value collides with %s!\n"
@@ -501,15 +484,12 @@ msgid " %s cupsUIResolver %s causes a loop!\n"
msgstr " %s cupsUIResolver %s genera un bucle.\n"
#, c-format
-msgid ""
-" %s cupsUIResolver %s does not list at least two different options!\n"
-msgstr ""
+msgid " %s cupsUIResolver %s does not list at least two different options!\n"
+msgstr " %s cupsUIResolver %s no lista al menos dos opciones diferentes.\n"
#, c-format
msgid " **FAIL** %s choice names %s and %s differ only by case!\n"
-msgstr ""
-" **FALLO** %s nombres de opción %s y %s se diferencian sólo en la "
-"capitalización.\n"
+msgstr " **FALLO** %s nombres de opción %s y %s se diferencian sólo en la capitalización.\n"
#, c-format
msgid ""
@@ -619,8 +599,7 @@ msgstr ""
#, c-format
msgid " **FAIL** Bad LanguageEncoding %s - must be ISOLatin1!\n"
-msgstr ""
-" **FALLO** LanguageEncoding %s incorrecto: deberÃa ser ISOLatin1.\n"
+msgstr " **FALLO** LanguageEncoding %s incorrecto: deberÃa ser ISOLatin1.\n"
#, c-format
msgid " **FAIL** Bad LanguageVersion %s - must be English!\n"
@@ -628,31 +607,19 @@ msgstr " **FALLO** LanguageVersion %s incorrecto: deberÃa ser Inglés.\n"
#, c-format
msgid " **FAIL** Default option code cannot be interpreted: %s\n"
-msgstr ""
-" **FALLO** El código de opción predeterminado no puede ser "
-"interpretado: %s\n"
+msgstr " **FALLO** El código de opción predeterminado no puede ser interpretado: %s\n"
#, c-format
-msgid ""
-" **FAIL** Default translation string for option %s choice %s contains "
-"8-bit characters!\n"
-msgstr ""
-" **FALLO** Cadena de traducción predeterminada para opción %s "
-"preferencia %s contiene caracteres de 8-bits.\n"
+msgid " **FAIL** Default translation string for option %s choice %s contains 8-bit characters!\n"
+msgstr " **FALLO** Cadena de traducción predeterminada para opción %s preferencia %s contiene caracteres de 8-bits.\n"
#, c-format
-msgid ""
-" **FAIL** Default translation string for option %s contains 8-bit "
-"characters!\n"
-msgstr ""
-" **FALLO** Cadena de traducción predeterminada para opción %s contiene "
-"caracteres de 8-bits.\n"
+msgid " **FAIL** Default translation string for option %s contains 8-bit characters!\n"
+msgstr " **FALLO** Cadena de traducción predeterminada para opción %s contiene caracteres de 8-bits.\n"
#, c-format
msgid " **FAIL** Group names %s and %s differ only by case!\n"
-msgstr ""
-" **FALLO** Nombres de grupo %s y %s se diferencian sólo en la "
-"capitalización.\n"
+msgstr " **FALLO** Nombres de grupo %s y %s se diferencian sólo en la capitalización.\n"
#, c-format
msgid " **FAIL** Multiple occurrences of %s choice name %s!\n"
@@ -660,9 +627,7 @@ msgstr " **FALLO** Múltiples apariciones de %s nombre de opción %s.\n"
#, c-format
msgid " **FAIL** Option names %s and %s differ only by case!\n"
-msgstr ""
-" **FALLO** Nombres de opción %s y %s se diferencian sólo en la "
-"capitalización.\n"
+msgstr " **FALLO** Nombres de opción %s y %s se diferencian sólo en la capitalización.\n"
#, c-format
msgid ""
@@ -1029,11 +994,8 @@ msgid "%s: Don't know what to do!\n"
msgstr "%s: No sé que hay que hacer.\n"
#, c-format
-msgid ""
-"%s: Error - %s environment variable names non-existent destination \"%s\"!\n"
-msgstr ""
-"%s: Error - %s nombres de variables de entorno no existen en destino \"%s"
-"\".\n"
+msgid "%s: Error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr "%s: Error - %s nombres de variables de entorno no existen en destino \"%s\".\n"
#, c-format
msgid "%s: Error - bad job ID!\n"
@@ -1041,16 +1003,11 @@ msgstr "%s: Error - ID de trabajo incorrecta.\n"
#, c-format
msgid "%s: Error - cannot print files and alter jobs simultaneously!\n"
-msgstr ""
-"%s: Error - no se pueden imprimir archivos y alterar trabajos al mismo "
-"tiempo.\n"
+msgstr "%s: Error - no se pueden imprimir archivos y alterar trabajos al mismo tiempo.\n"
#, c-format
-msgid ""
-"%s: Error - cannot print from stdin if files or a job ID are provided!\n"
-msgstr ""
-"%s: Error - no se puede imprimir desde stdin si se proporcionan archivos o "
-"una ID de trabajo.\n"
+msgid "%s: Error - cannot print from stdin if files or a job ID are provided!\n"
+msgstr "%s: Error - no se puede imprimir desde stdin si se proporcionan archivos o una ID de trabajo.\n"
#, c-format
msgid "%s: Error - expected character set after '-S' option!\n"
@@ -1137,12 +1094,8 @@ msgid "%s: Error - expected value after '-%c' option!\n"
msgstr "%s: Error - se esperaba un valor tras la opción '%c'.\n"
#, c-format
-msgid ""
-"%s: Error - need \"completed\", \"not-completed\", or \"all\" after '-W' "
-"option!\n"
-msgstr ""
-"%s: Error - se necesita \"completed\", \"not completed\", o \"all\" tras la "
-"opción '-W'.\n"
+msgid "%s: Error - need \"completed\", \"not-completed\", or \"all\" after '-W' option!\n"
+msgstr "%s: Error - se necesita \"completed\", \"not completed\", o \"all\" tras la opción '-W'.\n"
#, c-format
msgid "%s: Error - no default destination available.\n"
@@ -1202,8 +1155,7 @@ msgstr "%s: Cadena de filtro \"%s\" inválida\n"
#, c-format
msgid "%s: Need job ID ('-i jobid') before '-H restart'!\n"
-msgstr ""
-"%s: Se necesita un ID de trabajo ('-i id_trabajo') antes de '-H restart'.\n"
+msgstr "%s: Se necesita un ID de trabajo ('-i id_trabajo') antes de '-H restart'.\n"
#, c-format
msgid "%s: No filter to convert from %s/%s to %s/%s!\n"
@@ -1239,7 +1191,7 @@ msgstr "%s: No se pudo abrir archivo PPD: %s en lÃnea %d\n"
#, c-format
msgid "%s: Unable to open PPD file: %s on line %d.\n"
-msgstr ""
+msgstr "%s: No se ha podido abrir el archivo PPD: %s en la lÃnea %d.\n"
#, c-format
msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"!\n"
@@ -1262,12 +1214,8 @@ msgid "%s: Unknown source MIME type %s/%s!\n"
msgstr "%s: Tipo MIME de origen %s/%s desconocido.\n"
#, c-format
-msgid ""
-"%s: Warning - '%c' format modifier not supported - output may not be "
-"correct!\n"
-msgstr ""
-"%s: Advertencia - no se admite el uso del modificador de formato '%c' - la "
-"salida puede no ser correcta.\n"
+msgid "%s: Warning - '%c' format modifier not supported - output may not be correct!\n"
+msgstr "%s: Advertencia - no se admite el uso del modificador de formato '%c' - la salida puede no ser correcta.\n"
#, c-format
msgid "%s: Warning - character set option ignored!\n"
@@ -1286,11 +1234,8 @@ msgid "%s: Warning - mode option ignored!\n"
msgstr "%s: Advertencia - opción de modo no tenida en cuenta.\n"
#, c-format
-msgid ""
-"%s: error - %s environment variable names non-existent destination \"%s\"!\n"
-msgstr ""
-"%s: error - %s nombres de variables de entorno no existen en destino \"%s"
-"\".\n"
+msgid "%s: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr "%s: error - %s nombres de variables de entorno no existen en destino \"%s\".\n"
#, c-format
msgid "%s: error - expected option=value after '-o' option!\n"
@@ -1895,14 +1840,10 @@ msgid "?Invalid help command unknown\n"
msgstr "?Comando de ayuda inválido desconocido\n"
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."
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."
#, c-format
msgid "A class named \"%s\" already exists!"
@@ -2022,9 +1963,7 @@ msgstr "Aplicador"
#, 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."
#, c-format
msgid "Attribute groups are out of order (%x < %x)!"
@@ -2161,7 +2100,7 @@ msgstr "Valor printer-state %d incorrecto."
#, c-format
msgid "Bad request ID %d!"
-msgstr ""
+msgstr "ID %d de petición incorrecta."
#, c-format
msgid "Bad request version number %d.%d!"
@@ -2375,13 +2314,11 @@ msgstr "Dymo"
#, c-format
msgid "EMERG: Unable to allocate memory for page info: %s\n"
-msgstr ""
-"EMERG: No se ha podido asignar memoria para la información de página: %s\n"
+msgstr "EMERG: No se ha podido asignar memoria para la información de página: %s\n"
#, c-format
msgid "EMERG: Unable to allocate memory for pages array: %s\n"
-msgstr ""
-"EMERG: No se ha podido asignar memoria para la secuencia de páginas: %s\n"
+msgstr "EMERG: No se ha podido asignar memoria para la secuencia de páginas: %s\n"
msgid "EPL1 Label Printer"
msgstr "Impresora de etiquetas EPL1"
@@ -2391,7 +2328,7 @@ msgstr "Impresora de etiquetas EPL2"
#, c-format
msgid "ERROR: %s job-id user title copies options [file]\n"
-msgstr ""
+msgstr "ERROR: %s job-id usuario tÃtulo copias opciones [archivo]\n"
#, c-format
msgid "ERROR: Bad %%BoundingBox: comment seen!\n"
@@ -2474,9 +2411,7 @@ msgid "ERROR: Fatal USB error!\n"
msgstr "ERROR: Error fatal de USB.\n"
msgid "ERROR: Invalid HP-GL/2 command seen, unable to print file!\n"
-msgstr ""
-"ERROR: Se ha detectado un comando HP-GL/2 no válido; no se puede imprimir el "
-"archivo.\n"
+msgstr "ERROR: Se ha detectado un comando HP-GL/2 no válido; no se puede imprimir el archivo.\n"
#, c-format
msgid "ERROR: Missing %%EndProlog!\n"
@@ -2486,23 +2421,16 @@ msgstr "ERROR: Falta %%EndProlog.\n"
msgid "ERROR: Missing %%EndSetup!\n"
msgstr "ERROR: Falta %%EndSetup.\n"
-msgid ""
-"ERROR: Missing device URI on command-line and no DEVICE_URI environment "
-"variable!\n"
-msgstr ""
-"ERROR: Falta URI del dispositivo en la lÃnea de comandos y no hay variable "
-"de entorno DEVICE_URI.\n"
+msgid "ERROR: Missing device URI on command-line and no DEVICE_URI environment variable!\n"
+msgstr "ERROR: Falta URI del dispositivo en la lÃnea de comandos y no hay variable de entorno DEVICE_URI.\n"
#, c-format
msgid "ERROR: Missing value on line %d of banner file!\n"
msgstr "ERROR: Falta el valor en la lÃnea %d del archivo de rótulo.\n"
#, c-format
-msgid ""
-"ERROR: Need a msgid line before any translation strings on line %d of %s!\n"
-msgstr ""
-"ERROR: Se necesita una lÃnea msgid antes de cualquier cadena de traducción "
-"en lÃnea %d de %s.\n"
+msgid "ERROR: Need a msgid line before any translation strings on line %d of %s!\n"
+msgstr "ERROR: Se necesita una lÃnea msgid antes de cualquier cadena de traducción en lÃnea %d de %s.\n"
#, c-format
msgid "ERROR: No %%BoundingBox: comment in header!\n"
@@ -2512,12 +2440,8 @@ msgstr "ERROR: No hay comentario %%BoundingBox: en la cabecera.\n"
msgid "ERROR: No %%Pages: comment in header!\n"
msgstr "ERROR: No hay comentario %%Pages: en la cabecera.\n"
-msgid ""
-"ERROR: No device URI found in argv[0] or in DEVICE_URI environment "
-"variable!\n"
-msgstr ""
-"ERROR: No se ha encontrado el URI del dispositivo en argv[0] o en la "
-"variable de entorno DEVICE_URI.\n"
+msgid "ERROR: No device URI found in argv[0] or in DEVICE_URI environment variable!\n"
+msgstr "ERROR: No se ha encontrado el URI del dispositivo en argv[0] o en la variable de entorno DEVICE_URI.\n"
#, c-format
msgid "ERROR: No fonts in charset file %s\n"
@@ -2554,9 +2478,7 @@ msgid "ERROR: Remote host did not accept data file (%d)\n"
msgstr "ERROR: El ordenador remoto no ha aceptado el archivo de datos (%d)\n"
msgid "ERROR: There was a timeout error while sending data to the printer\n"
-msgstr ""
-"ERROR: Hay un error de tiempo de espera mientras se enviaban datos a la "
-"impresora\n"
+msgstr "ERROR: Hay un error de tiempo de espera mientras se enviaban datos a la impresora\n"
#, c-format
msgid "ERROR: Unable to add file %d to job: %s\n"
@@ -2574,9 +2496,7 @@ msgstr "ERROR: No se ha podido crear socket"
#, c-format
msgid "ERROR: Unable to create temporary compressed print file: %s\n"
-msgstr ""
-"ERROR: No se ha podido crear el archivo de impresión temporal comprimido: %"
-"s\n"
+msgstr "ERROR: No se ha podido crear el archivo de impresión temporal comprimido: %s\n"
msgid "ERROR: Unable to create temporary file"
msgstr "ERROR: No se ha podido crear el archivo temporal"
@@ -2603,9 +2523,7 @@ msgstr "ERROR: No se ha podido obtener una respuesta PAP"
#, c-format
msgid "ERROR: Unable to get PPD file for printer \"%s\" - %s.\n"
-msgstr ""
-"ERROR: No se ha podido obtener el archivo PPD para la impresora \"%s\" - %"
-"s.\n"
+msgstr "ERROR: No se ha podido obtener el archivo PPD para la impresora \"%s\" - %s.\n"
msgid "ERROR: Unable to get default AppleTalk zone"
msgstr "ERROR: No se ha podido conseguir la zona AppleTalk predeterminada"
@@ -2640,7 +2558,7 @@ msgid "ERROR: Unable to open %s: %s\n"
msgstr "ERROR: No se ha podido abrir %s: %s\n"
msgid "ERROR: Unable to open PPD file!\n"
-msgstr ""
+msgstr "ERROR: No se ha podido abrir el archivo PPD.\n"
#, c-format
msgid "ERROR: Unable to open banner file \"%s\" - %s\n"
@@ -2675,13 +2593,11 @@ msgstr "ERROR: No se ha podido abrir el archivo de impresión %s: %s\n"
#, c-format
msgid "ERROR: Unable to open raster file - %s\n"
-msgstr ""
+msgstr "ERROR: No se ha podido abrir el archivo de trama de datos - %s\n"
#, c-format
msgid "ERROR: Unable to open temporary compressed print file: %s\n"
-msgstr ""
-"ERROR: No se ha podido abrir el archivo de impresión temporal comprimido: %"
-"s\n"
+msgstr "ERROR: No se ha podido abrir el archivo de impresión temporal comprimido: %s\n"
#, c-format
msgid "ERROR: Unable to print %d text columns!\n"
@@ -2715,8 +2631,7 @@ msgid "ERROR: Unable to send PAP tickle request"
msgstr "ERROR: No se ha podido enviar una petición PAP"
msgid "ERROR: Unable to send initial PAP send data request"
-msgstr ""
-"ERROR: No se ha podido enviar la petición inicial de datos de envÃo PAP"
+msgstr "ERROR: No se ha podido enviar la petición inicial de datos de envÃo PAP"
#, c-format
msgid "ERROR: Unable to send print data (%d)\n"
@@ -2754,16 +2669,14 @@ msgid "ERROR: Unable to write print data: %s\n"
msgstr "ERROR: No se han podido escribir los datos de impresión: %s\n"
msgid "ERROR: Unable to write raster data to driver!\n"
-msgstr ""
-"ERROR: No se ha podido escribir la trama de datos (raster) al controlador.\n"
+msgstr "ERROR: No se ha podido escribir la trama de datos (raster) al controlador.\n"
msgid "ERROR: Unable to write to temporary file"
msgstr "ERROR: No se ha podido escribir al archivo temporal"
#, c-format
msgid "ERROR: Unable to write uncompressed document data: %s\n"
-msgstr ""
-"ERROR: No se han podido escribir los datos de documento sin comprimir: %s\n"
+msgstr "ERROR: No se han podido escribir los datos de documento sin comprimir: %s\n"
#, c-format
msgid "ERROR: Unexpected text on line %d of %s!\n"
@@ -2807,28 +2720,19 @@ msgstr "ERROR: Valor gamma %s no permitido; usando gamma=1000.\n"
#, c-format
msgid "ERROR: Unsupported number-up value %d, using number-up=1!\n"
-msgstr ""
-"ERROR: Valor de number-up (páginas por hoja) %d no permitido; usando number-"
-"up=1.\n"
+msgstr "ERROR: Valor de number-up (páginas por hoja) %d no permitido; usando number-up=1.\n"
#, c-format
-msgid ""
-"ERROR: Unsupported number-up-layout value %s, using number-up-layout=lrtb!\n"
-msgstr ""
-"ERROR: Valor de number-up-layout (disposición de páginas por hoja) %s no "
-"permitido; usando number-up-layout=lrtb.\n"
+msgid "ERROR: Unsupported number-up-layout value %s, using number-up-layout=lrtb!\n"
+msgstr "ERROR: Valor de number-up-layout (disposición de páginas por hoja) %s no permitido; usando number-up-layout=lrtb.\n"
#, c-format
msgid "ERROR: Unsupported page-border value %s, using page-border=none!\n"
-msgstr ""
-"ERROR: Valor de page-border (borde de página) %s no permitido; usando page-"
-"border=none (ninguno).\n"
+msgstr "ERROR: Valor de page-border (borde de página) %s no permitido; usando page-border=none (ninguno).\n"
#, c-format
msgid "ERROR: doc_printf overflow (%d bytes) detected, aborting!\n"
-msgstr ""
-"ERROR: Se ha detectado un desbordamiento de doc_printf (%d bytes); "
-"cancelando.\n"
+msgstr "ERROR: Se ha detectado un desbordamiento de doc_printf (%d bytes); cancelando.\n"
#, c-format
msgid "ERROR: pdftops filter crashed on signal %d!\n"
@@ -2846,12 +2750,8 @@ msgstr "ERROR: pictwpstops se ha cerrado con la señal %d.\n"
msgid "ERROR: pictwpstops exited with status %d!\n"
msgstr "ERROR: pictwpstops se ha cerrado con el estado %d.\n"
-msgid ""
-"ERROR: recoverable: Unable to connect to printer; will retry in 30 "
-"seconds...\n"
-msgstr ""
-"ERROR: recuperable: No se ha podido establecer conexión con la impresora; "
-"reintento en 30 segundos...\n"
+msgid "ERROR: recoverable: Unable to connect to printer; will retry in 30 seconds...\n"
+msgstr "ERROR: recuperable: No se ha podido establecer conexión con la impresora; reintento en 30 segundos...\n"
msgid "ERROR: select() failed"
msgstr "ERROR: select() ha fallado"
@@ -2877,14 +2777,8 @@ msgstr "Introduzca nuevamente la contraseña:"
msgid "Enter password:"
msgstr "Introduzca la contraseña:"
-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."
msgid "Envelope Feed"
msgstr "Alimentador de sobre"
@@ -2944,12 +2838,8 @@ msgid "File Folder - 9/16 x 3 7/16\""
msgstr "Carpeta de archivosr - 9/16 x 3 7/16 pulg."
#, 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\"."
msgid "Folio"
msgstr "Folio"
@@ -3015,14 +2905,14 @@ msgid "INFO: Control file sent successfully\n"
msgstr "INFO: Archivo de control enviado correctamente\n"
msgid "INFO: Copying print data...\n"
-msgstr ""
+msgstr "INFO: Copiando datos de impresión...\n"
msgid "INFO: Data file sent successfully\n"
msgstr "INFO: Archivo de datos enviado correctamente\n"
#, c-format
msgid "INFO: Finished page %d...\n"
-msgstr ""
+msgstr "INFO: Acabada la página %d...\n"
#, c-format
msgid "INFO: Formatting page %d...\n"
@@ -3038,9 +2928,7 @@ msgid "INFO: Opening connection\n"
msgstr "INFO: Abriendo la conexión\n"
msgid "INFO: Print file sent, waiting for printer to finish...\n"
-msgstr ""
-"INFO: Archivo de impresión enviado; esperando a que finalice la "
-"impresora...\n"
+msgstr "INFO: Archivo de impresión enviado; esperando a que finalice la impresora...\n"
msgid "INFO: Printer busy; will retry in 10 seconds...\n"
msgstr "INFO: Impresora ocupada; reintento en 10 segundos...\n"
@@ -3053,8 +2941,7 @@ msgstr "INFO: Impresora ocupada; reintento en 5 segundos...\n"
#, c-format
msgid "INFO: Printer does not support IPP/%d.%d, trying IPP/1.0...\n"
-msgstr ""
-"INFO: La impresora no es compatible con IPP/%d.%d, probando IPP/1.0...\n"
+msgstr "INFO: La impresora no es compatible con IPP/%d.%d, probando IPP/1.0...\n"
msgid "INFO: Printer is busy; will retry in 5 seconds...\n"
msgstr "INFO: La impresora está ocupada; reintento en 5 segundos...\n"
@@ -3121,12 +3008,10 @@ msgstr "INFO: Guardando trabajo LPR en cola, %.0f%% completado...\n"
#, c-format
msgid "INFO: Starting page %d...\n"
-msgstr ""
+msgstr "INFO: Iniciando página %d...\n"
msgid "INFO: Unable to contact printer, queuing on next printer in class...\n"
-msgstr ""
-"INFO: No se ha podido contactar con la impresora; poniendo en cola en la "
-"siguiente impresora de la clase...\n"
+msgstr "INFO: No se ha podido contactar con la impresora; poniendo en cola en la siguiente impresora de la clase...\n"
#, c-format
msgid "INFO: Using default AppleTalk zone \"%s\"\n"
@@ -3671,8 +3556,7 @@ msgstr "La salida de la impresora %s se ha enviado a %s\n"
#, c-format
msgid "Output for printer %s is sent to remote printer %s on %s\n"
-msgstr ""
-"La salida de la impresora %s se ha enviado a la impresora remota %s en %s\n"
+msgstr "La salida de la impresora %s se ha enviado a la impresora remota %s en %s\n"
#, c-format
msgid "Output for printer %s/%s is sent to %s\n"
@@ -3680,9 +3564,7 @@ msgstr "La salida de la impresora %s/%s se ha enviado a %s\n"
#, c-format
msgid "Output for printer %s/%s is sent to remote printer %s on %s\n"
-msgstr ""
-"La salida de la impresora %s/%s se ha enviado a la impresora remota %s en %"
-"s\n"
+msgstr "La salida de la impresora %s/%s se ha enviado a la impresora remota %s en %s\n"
msgid "Output tray missing!"
msgstr "Falta la bandeja de salida."
@@ -3863,10 +3745,8 @@ msgstr "Se ha alcanzado el lÃmite de cuota."
msgid "Rank Owner Job File(s) Total Size\n"
msgstr "Rango Propiet. Trabajo Archivo(s) Tamaño total\n"
-msgid ""
-"Rank Owner Pri Job Files Total Size\n"
-msgstr ""
-"Rango Propiet. Pri Trabajo Archivos Tamaño total\n"
+msgid "Rank Owner Pri Job Files Total Size\n"
+msgstr "Rango Propiet. Pri Trabajo Archivos Tamaño total\n"
msgid "Reject Jobs"
msgstr "Rechazar trabajos"
@@ -4004,29 +3884,18 @@ msgstr "No se ha podido encontrar el archivo PPD \"%s\"."
msgid "The PPD file \"%s\" could not be opened: %s"
msgstr "No se ha podido abrir el archivo PPD \"%s\": %s"
-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 (#)."
-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."
#, 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)."
-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 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 is not shared!"
msgstr "La impresora o clase no está compartida."
@@ -4041,24 +3910,14 @@ msgstr "El printer-uri \"%s\" contiene caracteres incorrectos."
msgid "The printer-uri attribute is required!"
msgstr "Se necesita el atributo printer-uri."
-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\"."
-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\"."
-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 (#)."
msgid "There are too many subscriptions."
msgstr "Hay demasiadas subscripciones."
@@ -4168,21 +4027,15 @@ msgstr "No se ha podido conectar al servidor."
#, 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)."
#, 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)."
#, 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)."
#, c-format
msgid "Unable to copy PPD file - %s!"
@@ -4193,15 +4046,11 @@ msgstr "No se ha podido copiar el archivo PPD."
#, 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)."
#, 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)."
#, c-format
msgid "Unable to copy interface script - %s!"
@@ -4251,15 +4100,11 @@ msgstr "No se ha podido obtener el estado de la impresora"
#, 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)."
#, 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)."
msgid "Unable to modify class:"
msgstr "No se ha podido modificar la clase:"
@@ -4298,8 +4143,7 @@ msgstr "No se ha podido enviar un comando al controlador de la impresora."
#, 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)."
msgid "Unable to set options:"
msgstr "No se han podido cambiar las opciones:"
@@ -4415,6 +4259,22 @@ msgid ""
" -u Remove the PPD file when finished\n"
" -D Remove the input file when finished\n"
msgstr ""
+"Uso: convert [ opciones ]\n"
+"\n"
+"Opciones:\n"
+"\n"
+" -e Usar cada filtro del archivo PPD\n"
+" -f nombre_archivo Establecer el archivo a convertir (de lo contrario, stdin)\n"
+" -o nombre_archivo Establecer el archivo a generar (de lo contrario, stdout)\n"
+" -i tipo/mime Establecer el tipo MIME de entrada (de lo contrario, auto-typed)\n"
+" -j tipo/mime Establecer el tipo MIME de salida (de lo contrario, application/pdf)\n"
+" -P nombre_archivo.ppd Establecer el archivo PPD\n"
+" -a 'nombre=valor ...' Establecer opciones\n"
+" -U nombre_usuario Establecer un nombre de usuario para el trabajo\n"
+" -J tÃtulo Establecer el tÃtulo\n"
+" -c copias Establecer el número de copias\n"
+" -u Borrar el archivo PPD al finalizar\n"
+" -D Borrar el archivo de entrada al finalizar\n"
msgid ""
"Usage: cupsaddsmb [options] printer1 ... printerN\n"
@@ -4432,8 +4292,7 @@ msgstr ""
" cupsaddsmb [opciones] -a\n"
"\n"
"Opciones:\n"
-" -E Hace que se use encriptación en la conexión con el "
-"servidor\n"
+" -E Hace que se use encriptación en la conexión con el servidor\n"
" -H servidor_samba Usa el servidor SAMBA especificado\n"
" -U usuario_samba Autentifica usando el usuario SAMBA especificado\n"
" -a Exporta todas las impresoras\n"
@@ -4468,10 +4327,8 @@ msgstr ""
" --[no-]remote-admin Activar o desactivar la administración remota\n"
" --[no-]remote-any Permitir o impedir el acceso desde Internet\n"
" --[no-]remote-printers Mostrar u ocultar las impresoras remotas\n"
-" --[no-]share-printers Activar o desactivar la compartición de "
-"impresoras\n"
-" --[no-]user-cancel-any Permitir o impedir a los usuarios cancelar "
-"cualquier trabajo\n"
+" --[no-]share-printers Activar o desactivar la compartición de impresoras\n"
+" --[no-]user-cancel-any Permitir o impedir a los usuarios cancelar cualquier trabajo\n"
msgid ""
"Usage: cupsd [-c config-file] [-f] [-F] [-h] [-l]\n"
@@ -4503,6 +4360,17 @@ msgid ""
" -p filename.ppd Set PPD file\n"
" -t title Set title\n"
msgstr ""
+"Uso: cupsfilter -m tipo/mime [ opciones ] nombre_archivo\n"
+"\n"
+"Opciones:\n"
+"\n"
+" -c cupsd.conf Establecer el archivo cupsd.conf a usar\n"
+" -e Usar cada filtro del archivo PPD\n"
+" -j job-id[,N] Filtrar el archivo N del trabajo especificado (el valor predeterminado es el archivo 1)\n"
+" -n copias Establecer el número de copias\n"
+" -o nombre=valor Establecer opciones\n"
+" -p nombre_archivo.ppd Establecer el archivo PPD\n"
+" -t tÃtulo Establecer el tÃtulo\n"
msgid ""
"Usage: cupstestdsc [options] filename.ps [... filename.ps]\n"
@@ -4512,8 +4380,7 @@ msgid ""
"\n"
" -h Show program usage\n"
"\n"
-" Note: this program only validates the DSC comments, not the PostScript "
-"itself.\n"
+" Note: this program only validates the DSC comments, not the PostScript itself.\n"
msgstr ""
"Uso: cupstestdsc [opciones] nombre_archivo.ps [... nombre_archivo.ps]\n"
" cupstestdsc [opciones] -\n"
@@ -4522,8 +4389,7 @@ msgstr ""
"\n"
" -h Muestra cómo se usa el programa\n"
"\n"
-" Nota: este programa sólo valida los comentarios DSC, no el PostScript en "
-"sà mismo.\n"
+" Nota: este programa sólo valida los comentarios DSC, no el PostScript en sà mismo.\n"
msgid ""
"Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]\n"
@@ -4532,14 +4398,25 @@ msgid ""
"Options:\n"
"\n"
" -R root-directory Set alternate root\n"
-" -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,"
-"translations}\n"
+" -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,translations}\n"
" Issue warnings instead of errors\n"
" -q Run silently\n"
" -r Use 'relaxed' open mode\n"
" -v Be slightly verbose\n"
" -vv Be very verbose\n"
msgstr ""
+"Uso: cupstestppd [opciones] nombre_archivo1.ppd[.gz] [... nombre_archivoN.ppd[.gz]]\n"
+" programa | cupstestppd [opciones] -\n"
+"\n"
+"Opciones:\n"
+"\n"
+" -R directorio-raÃz Establecer directorio raÃz alternativo\n"
+" -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,translations}\n"
+" Emitir avisos (warnings) en vez de errores\n"
+" -q Ejecución silenciosa\n"
+" -r Usar modo abierto 'relajado'\n"
+" -v Ser ligeramente detallado\n"
+" -vv Ser muy detallado\n"
msgid "Usage: lpmove job/src dest\n"
msgstr "Uso: lpmove trabajo/fuente destino\n"
@@ -4567,11 +4444,8 @@ msgstr ""
" lppasswd [-g nombre_grupo] -a [nombre_usuario]\n"
" lppasswd [-g nombre_grupo] -x [nombre_usuario]\n"
-msgid ""
-"Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]\n"
-msgstr ""
-"Uso: lpq (-P dest) (-U nombre_usuario) (-h nombre_ordenador(:puerto)) (-l) "
-"(+intervalo)\n"
+msgid "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]\n"
+msgstr "Uso: lpq (-P dest) (-U nombre_usuario) (-h nombre_ordenador(:puerto)) (-l) (+intervalo)\n"
msgid ""
"Usage: ppdc [options] filename.drv [ ... filenameN.drv ]\n"
@@ -4591,18 +4465,18 @@ msgid ""
msgstr ""
"Uso: ppdc [opciones] nombre_archivo.drv [ ... nombre_archivoN.drv ]\n"
"Options:\n"
-" -D nombre=valor Establece la variable nombre al valor.\n"
-" -I include-dir Añade el directorio include a la ruta de búsqueda.\n"
-" -c catálogo.po Carga el catálogo de mensajes especificado.\n"
-" -d dir-salida Especifica el directorio de salida.\n"
-" -l idioma[,idioma,...] Especifica el/los idioma(s) de salida.\n"
-" -m Usa el valor ModelName como nombre de archivo.\n"
-" -t Chequea el PPDs en vez de generarlo.\n"
-" -v Detallado (más v's para más detalle).\n"
-" -z Comprime los archivos PPD usando GNU zip.\n"
-" --cr Termina las lÃneas con CR (Mac OS 9).\n"
-" --crlf Termina las lÃneas con CR + LF (Windows).\n"
-" --lf Termina las lÃneas con LF (UNIX/Linux/Mac OS X).\n"
+" -D nombre=valor Establecer la variable nombre al valor.\n"
+" -I include-dir Añadir el directorio include a la ruta de búsqueda.\n"
+" -c catálogo.po Cargar el catálogo de mensajes especificado.\n"
+" -d dir-salida Especificar el directorio de salida.\n"
+" -l idioma[,idioma,...] Especificar el/los idioma(s) de salida.\n"
+" -m Usar el valor ModelName como nombre de archivo.\n"
+" -t Chequear el PPDs en vez de generarlo.\n"
+" -v Ser detallado (más v's para más detalle).\n"
+" -z Comprimir los archivos PPD usando GNU zip.\n"
+" --cr Terminar las lÃneas con CR (Mac OS 9).\n"
+" --crlf Terminar las lÃneas con CR + LF (Windows).\n"
+" --lf Terminar las lÃneas con LF (UNIX/Linux/Mac OS X).\n"
msgid ""
"Usage: ppdhtml [options] filename.drv >filename.html\n"
@@ -4612,8 +4486,8 @@ msgid ""
msgstr ""
"Uso: ppdhtml [opciones] nombre_archivo.drv >nombre_archivo.html\n"
"Opciones:\n"
-" -D nombre=valor Establece la variable nombre al valor.\n"
-" -I include-dir Añade el directorio include a la ruta de búsqueda.\n"
+" -D nombre=valor Establecer la variable nombre al valor.\n"
+" -I include-dir Añadir el directorio include a la ruta de búsqueda.\n"
msgid ""
"Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]\n"
@@ -4642,12 +4516,11 @@ msgid ""
" -I include-dir Add include directory to search path.\n"
" -v Be verbose (more v's for more verbosity).\n"
msgstr ""
-"Uso: ppdpo [opciones] -o nombre_archivo.po nombre_archivo.drv [ ... "
-"nombre_archivoN.drv ]\n"
+"Uso: ppdpo [opciones] -o nombre_archivo.po nombre_archivo.drv [ ... nombre_archivoN.drv ]\n"
"Opciones:\n"
-" -D nombre=valor Establece la variable nombre al valor.\n"
-" -I include-dir Añade el directorio include a la ruta de búsqueda.\n"
-" -v Con detalle (más v's para más detalle).\n"
+" -D nombre=valor Establecer la variable nombre al valor.\n"
+" -I include-dir Añadir el directorio include a la ruta de búsqueda.\n"
+" -v Ser detallado (más v's para más detalle).\n"
msgid "Usage: snmp [host-or-ip-address]\n"
msgstr "Uso: snmp [ordenador-o-dirección-ip]\n"
@@ -4667,8 +4540,7 @@ msgstr "WARNING: Añadiendo sólo las primeras %d impresoras encontradas"
#, c-format
msgid "WARNING: Boolean expected for waiteof option \"%s\"\n"
-msgstr ""
-"WARNING: Se esperaba un valor booleano para la opción waiteof \"%s\".\n"
+msgstr "WARNING: Se esperaba un valor booleano para la opción waiteof \"%s\".\n"
msgid "WARNING: Failed to read side-channel request!\n"
msgstr "WARNING: No se ha podido leer la petición del canal lateral.\n"
@@ -4684,41 +4556,23 @@ msgid "WARNING: Printer sent unexpected EOF\n"
msgstr "WARNING: La impresora envió un EOF inesperado\n"
#, c-format
-msgid ""
-"WARNING: Remote host did not respond with command status byte after %d "
-"seconds!\n"
-msgstr ""
-"WARNING: El ordenador remoto no ha respondido con el byte de estado del "
-"comando después de %d segundos.\n"
+msgid "WARNING: Remote host did not respond with command status byte after %d seconds!\n"
+msgstr "WARNING: El ordenador remoto no ha respondido con el byte de estado del comando después de %d segundos.\n"
#, c-format
-msgid ""
-"WARNING: Remote host did not respond with control status byte after %d "
-"seconds!\n"
-msgstr ""
-"WARNING: El ordenador remoto no ha respondido con el byte de estado de "
-"control después de %d segundos.\n"
+msgid "WARNING: Remote host did not respond with control status byte after %d seconds!\n"
+msgstr "WARNING: El ordenador remoto no ha respondido con el byte de estado de control después de %d segundos.\n"
#, c-format
-msgid ""
-"WARNING: Remote host did not respond with data status byte after %d "
-"seconds!\n"
-msgstr ""
-"WARNING: El ordenador remoto no ha respondido con el byte de estado de los "
-"datos después de %d segundos.\n"
+msgid "WARNING: Remote host did not respond with data status byte after %d seconds!\n"
+msgstr "WARNING: El ordenador remoto no ha respondido con el byte de estado de los datos después de %d segundos.\n"
#, c-format
msgid "WARNING: SCSI command timed out (%d); retrying...\n"
-msgstr ""
-"WARNING: Agotado el tiempo de espera para el comando SCSI (%d); "
-"reintentando...\n"
+msgstr "WARNING: Agotado el tiempo de espera para el comando SCSI (%d); reintentando...\n"
-msgid ""
-"WARNING: This document does not conform to the Adobe Document Structuring "
-"Conventions and may not print correctly!\n"
-msgstr ""
-"WARNING: Este documento no se ajusta a las Convenciones de Estructuración de "
-"Documentos de Adobe y puede que no se imprima correctamente.\n"
+msgid "WARNING: This document does not conform to the Adobe Document Structuring Conventions and may not print correctly!\n"
+msgstr "WARNING: Este documento no se ajusta a las Convenciones de Estructuración de Documentos de Adobe y puede que no se imprima correctamente.\n"
#, c-format
msgid "WARNING: Unable to open \"%s:%s\": %s\n"
@@ -4752,28 +4606,18 @@ msgid "WARNING: number expected for status option \"%s\"\n"
msgstr "WARNING: se esperaba un número para la opción de estado \"%s\"\n"
#, c-format
-msgid ""
-"WARNING: recoverable: Network host '%s' is busy; will retry in %d "
-"seconds...\n"
-msgstr ""
-"WARNING: recuperable: El ordenador de red '%s' está ocupado; reintento en %d "
-"segundos...\n"
+msgid "WARNING: recoverable: Network host '%s' is busy; will retry in %d seconds...\n"
+msgstr "WARNING: recuperable: El ordenador de red '%s' está ocupado; reintento en %d segundos...\n"
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."
msgid "Yes"
msgstr "Si"
#, 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."
msgid "You4 Envelope"
msgstr "Sobre You4"
@@ -4819,9 +4663,7 @@ msgid "cupsctl: Unknown option \"-%c\"!\n"
msgstr "cupsctl: Opción \"-%c\" desconocida.\n"
msgid "cupsd: Expected config filename after \"-c\" option!\n"
-msgstr ""
-"cupsd: Se esperaba un nombre de archivo de configuración tras la opción \"-c"
-"\".\n"
+msgstr "cupsd: Se esperaba un nombre de archivo de configuración tras la opción \"-c\".\n"
msgid "cupsd: Unable to get current directory!\n"
msgstr "cupsd: No se ha podido obtener el directorio actual.\n"
@@ -4835,9 +4677,7 @@ msgid "cupsd: Unknown option \"%c\" - aborting!\n"
msgstr "cupsd: Opción \"%c\" desconocida - cancelando.\n"
msgid "cupsd: launchd(8) support not compiled in, running in normal mode.\n"
-msgstr ""
-"cupsd: el uso de launchd(8) no ha sido compilado, ejecutándose en modo "
-"normal.\n"
+msgstr "cupsd: el uso de launchd(8) no ha sido compilado, ejecutándose en modo normal.\n"
#, c-format
msgid "cupsfilter: Invalid document number %d!\n"
@@ -4887,8 +4727,7 @@ msgid "job-printer-uri attribute missing!"
msgstr "Falta el atributo job-printer-uri."
msgid "lpadmin: Class name can only contain printable characters!\n"
-msgstr ""
-"lpadmin: El nombre de la clase sólo puede contener caracteres imprimibles.\n"
+msgstr "lpadmin: El nombre de la clase sólo puede contener caracteres imprimibles.\n"
msgid "lpadmin: Expected PPD after '-P' option!\n"
msgstr "lpadmin: Se esperaba un PPD tras la opción '-P'.\n"
@@ -4947,9 +4786,7 @@ msgid "lpadmin: Printer %s is not a member of class %s.\n"
msgstr "lpadmin: La impresora %s no es miembro de la clase %s.\n"
msgid "lpadmin: Printer name can only contain printable characters!\n"
-msgstr ""
-"lpadmin: El nombre de la impresora sólo puede contener caracteres "
-"imprimibles.\n"
+msgstr "lpadmin: El nombre de la impresora sólo puede contener caracteres imprimibles.\n"
msgid ""
"lpadmin: Unable to add a printer to the class:\n"
@@ -5039,15 +4876,13 @@ msgid "lpadmin: Unknown option '%c'!\n"
msgstr "lpadmin: Opción '%c' desconocida.\n"
msgid "lpadmin: Warning - content type list ignored!\n"
-msgstr ""
-"lpadmin: Advertencia - lista de tipo de contenido no tenida en cuenta.\n"
+msgstr "lpadmin: Advertencia - lista de tipo de contenido no tenida en cuenta.\n"
msgid "lpc> "
msgstr "lpc> "
msgid "lpinfo: Expected 1284 device ID string after --device-id!\n"
-msgstr ""
-"lpinfo: Se esperaba una cadena ID de dispositivo 1284 tras --device-id.\n"
+msgstr "lpinfo: Se esperaba una cadena ID de dispositivo 1284 tras --device-id.\n"
msgid "lpinfo: Expected language after --language!\n"
msgstr "lpinfo: Se esperaba un idioma tras --language.\n"
@@ -5147,9 +4982,7 @@ msgstr "lppasswd: No se ha podido escribir en el archivo de contraseñas: %s\n"
#, c-format
msgid "lppasswd: failed to backup old password file: %s\n"
-msgstr ""
-"lppasswd: falló al hacer una copia de seguridad del antiguo archivo de "
-"contraseñas: %s\n"
+msgstr "lppasswd: falló al hacer una copia de seguridad del antiguo archivo de contraseñas: %s\n"
#, c-format
msgid "lppasswd: failed to rename password file: %s\n"
@@ -5160,12 +4993,8 @@ msgid "lppasswd: user \"%s\" and group \"%s\" do not exist.\n"
msgstr "lppasswd: el usuario \"%s\" y el grupo \"%s\" no existen.\n"
#, c-format
-msgid ""
-"lpstat: error - %s environment variable names non-existent destination \"%s"
-"\"!\n"
-msgstr ""
-"lpstat: error - Los nombre de variable de entorno %s no existen en el "
-"destino \"%s\".\n"
+msgid "lpstat: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr "lpstat: error - Los nombre de variable de entorno %s no existen en el destino \"%s\".\n"
#, c-format
msgid "members of class %s:\n"
@@ -5241,8 +5070,7 @@ msgstr "ppdc: Se esperaba un valor lógico en la lÃnea %d de %s.\n"
#, c-format
msgid "ppdc: Expected charset after Font on line %d of %s!\n"
-msgstr ""
-"ppdc: Se esperaba un juego de caracteres tras Font en la lÃnea %d de %s.\n"
+msgstr "ppdc: Se esperaba un juego de caracteres tras Font en la lÃnea %d de %s.\n"
#, c-format
msgid "ppdc: Expected choice code on line %d of %s.\n"
@@ -5254,8 +5082,7 @@ msgstr "ppdc: Se esperaba un nombre/texto apropiado en la lÃnea %d de %s.\n"
#, c-format
msgid "ppdc: Expected color order for ColorModel on line %d of %s!\n"
-msgstr ""
-"ppdc: Se esperaba un orden de color para ColorModel en la lÃnea %d de %s.\n"
+msgstr "ppdc: Se esperaba un orden de color para ColorModel en la lÃnea %d de %s.\n"
#, c-format
msgid "ppdc: Expected colorspace for ColorModel on line %d of %s!\n"
@@ -5267,16 +5094,11 @@ msgstr "ppdc: Se esperaba compresión para ColorModel en la lÃnea %d de %s.\n"
#, c-format
msgid "ppdc: Expected constraints string for UIConstraints on line %d of %s!\n"
-msgstr ""
-"ppdc: Se esperaba una cadena de restricciones para UIConstraints en la lÃnea "
-"%d de %s.\n"
+msgstr "ppdc: Se esperaba una cadena de restricciones para UIConstraints en la lÃnea %d de %s.\n"
#, c-format
-msgid ""
-"ppdc: Expected driver type keyword following DriverType on line %d of %s!\n"
-msgstr ""
-"ppdc: Se esperaba una clave de tipo de controlador tras DriverType en la "
-"lÃnea %d de %s.\n"
+msgid "ppdc: Expected driver type keyword following DriverType on line %d of %s!\n"
+msgstr "ppdc: Se esperaba una clave de tipo de controlador tras DriverType en la lÃnea %d de %s.\n"
#, c-format
msgid "ppdc: Expected duplex type after Duplex on line %d of %s!\n"
@@ -5288,8 +5110,7 @@ msgstr "ppdc: Se esperaba una codificación tras Font en la lÃnea %d de %s.\n"
#, c-format
msgid "ppdc: Expected filename after #po %s on line %d of %s!\n"
-msgstr ""
-"ppdc: Se esperaba un nombre de archivo tras #po %s en la lÃnea %d de %s.\n"
+msgstr "ppdc: Se esperaba un nombre de archivo tras #po %s en la lÃnea %d de %s.\n"
#, c-format
msgid "ppdc: Expected group name/text on line %d of %s!\n"
@@ -5341,19 +5162,15 @@ msgstr "ppdc: Se esperaba un nombre/texto tras %s en la lÃnea %d de %s.\n"
#, c-format
msgid "ppdc: Expected name/text after Installable on line %d of %s!\n"
-msgstr ""
-"ppdc: Se esperaba un nombre/texto tras Installable en la lÃnea %d de %s.\n"
+msgstr "ppdc: Se esperaba un nombre/texto tras Installable en la lÃnea %d de %s.\n"
#, c-format
msgid "ppdc: Expected name/text after Resolution on line %d of %s!\n"
-msgstr ""
-"ppdc: Se esperaba un nombre/texto tras Resolution en la lÃnea %d de %s.\n"
+msgstr "ppdc: Se esperaba un nombre/texto tras Resolution en la lÃnea %d de %s.\n"
#, c-format
msgid "ppdc: Expected name/text combination for ColorModel on line %d of %s!\n"
-msgstr ""
-"ppdc: Se esperaba una combinación nombre/texto para ColorModel en la lÃnea %"
-"d de %s.\n"
+msgstr "ppdc: Se esperaba una combinación nombre/texto para ColorModel en la lÃnea %d de %s.\n"
#, c-format
msgid "ppdc: Expected option name/text on line %d of %s!\n"
@@ -5369,29 +5186,19 @@ msgstr "ppdc: Se esperaba un tipo de opción en la lÃnea %d de %s.\n"
#, c-format
msgid "ppdc: Expected override field after Resolution on line %d of %s!\n"
-msgstr ""
-"ppdc: Se esperaba un campo de anulación tras Resolution en la lÃnea %d de %"
-"s.\n"
+msgstr "ppdc: Se esperaba un campo de anulación tras Resolution en la lÃnea %d de %s.\n"
#, c-format
msgid "ppdc: Expected real number on line %d of %s!\n"
msgstr "ppdc: Se esperaba un número real en la lÃnea %d de %s.\n"
#, c-format
-msgid ""
-"ppdc: Expected resolution/mediatype following ColorProfile on line %d of %"
-"s!\n"
-msgstr ""
-"ppdc: Se esperaba resolución/tipo de soporte tras ColorProfile en la lÃnea %"
-"d de %s.\n"
+msgid "ppdc: Expected resolution/mediatype following ColorProfile on line %d of %s!\n"
+msgstr "ppdc: Se esperaba resolución/tipo de soporte tras ColorProfile en la lÃnea %d de %s.\n"
#, c-format
-msgid ""
-"ppdc: Expected resolution/mediatype following SimpleColorProfile on line %d "
-"of %s!\n"
-msgstr ""
-"ppdc: Se esperaba resolución/tipo de soporte tras SimpleColorProfile en la "
-"lÃnea %d de %s.\n"
+msgid "ppdc: Expected resolution/mediatype following SimpleColorProfile on line %d of %s!\n"
+msgstr "ppdc: Se esperaba resolución/tipo de soporte tras SimpleColorProfile en la lÃnea %d de %s.\n"
#, c-format
msgid "ppdc: Expected selector after %s on line %d of %s!\n"
@@ -5431,14 +5238,11 @@ msgstr "ppdc: Coste incorrecto para el filtro en la lÃnea %d de %s.\n"
#, c-format
msgid "ppdc: Invalid empty MIME type for filter on line %d of %s!\n"
-msgstr ""
-"ppdc: Tipo MIME vacÃo incorrecto para el filtro en la lÃnea %d de %s.\n"
+msgstr "ppdc: Tipo MIME vacÃo incorrecto para el filtro en la lÃnea %d de %s.\n"
#, c-format
msgid "ppdc: Invalid empty program name for filter on line %d of %s!\n"
-msgstr ""
-"ppdc: Nombre de programa vacÃo incorrecto para el filtro en la lÃnea %d de %"
-"s.\n"
+msgstr "ppdc: Nombre de programa vacÃo incorrecto para el filtro en la lÃnea %d de %s.\n"
#, c-format
msgid "ppdc: Invalid option section \"%s\" on line %d of %s!\n"
@@ -5474,8 +5278,7 @@ msgstr "ppdc: No se ha proporcionado catálogo de mensajes para el idioma %s.\n"
#, c-format
msgid "ppdc: Option %s redefined with a different type on line %d of %s!\n"
-msgstr ""
-"ppdc: La opción %s redefinida con un tipo diferente en la lÃnea %d de %s.\n"
+msgstr "ppdc: La opción %s redefinida con un tipo diferente en la lÃnea %d de %s.\n"
#, c-format
msgid "ppdc: Option constraint must *name on line %d of %s!\n"
@@ -5503,14 +5306,11 @@ msgstr "ppdc: No se ha podido ejecutar cupstestppd: %s\n"
#, c-format
msgid "ppdc: Unable to find #po file %s on line %d of %s!\n"
-msgstr ""
-"ppdc: No se ha podido encontrar el archivo #po %s en la lÃnea %d de %s.\n"
+msgstr "ppdc: No se ha podido encontrar el archivo #po %s en la lÃnea %d de %s.\n"
#, c-format
msgid "ppdc: Unable to find include file \"%s\" on line %d of %s!\n"
-msgstr ""
-"ppdc: No se ha podido encontrar el archivo include \"%s\" en la lÃnea %d de %"
-"s.\n"
+msgstr "ppdc: No se ha podido encontrar el archivo include \"%s\" en la lÃnea %d de %s.\n"
#, c-format
msgid "ppdc: Unable to find localization for \"%s\" - %s\n"
@@ -5541,11 +5341,8 @@ msgid "ppdc: Unknown token \"%s\" seen on line %d of %s!\n"
msgstr "ppdc: Elemento desconocido \"%s\" visto en la lÃnea %d de %s.\n"
#, c-format
-msgid ""
-"ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s!\n"
-msgstr ""
-"ppdc: Caracteres finales desconocidos en el número real \"%s\" en la lÃnea %"
-"d de %s.\n"
+msgid "ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s!\n"
+msgstr "ppdc: Caracteres finales desconocidos en el número real \"%s\" en la lÃnea %d de %s.\n"
#, c-format
msgid "ppdc: Unterminated string starting with %c on line %d of %s!\n"
@@ -5638,122 +5435,3 @@ msgstr "sin tÃtulo"
msgid "variable-bindings uses indefinite length"
msgstr "variable-bindings usa una longitud indefinida"
-#~ msgid " WARN Missing APDialogExtension file \"%s\"\n"
-#~ msgstr " ADVERTENCIA Falta el archivo APDialogExtension \"%s\"\n"
-
-#~ msgid " WARN Missing APPrinterIconPath file \"%s\"\n"
-#~ msgstr " ADVERTENCIA Falta el archivo APPrinterIconPath \"%s\"\n"
-
-#~ msgid "%s: Unable to open %s - %s\n"
-#~ msgstr "%s: No se pudo abrir %s - %s\n"
-
-#~ msgid "%s: Unable to open %s - %s on line %d.\n"
-#~ msgstr "%s: No se pudo abrir %s - %s en lÃnea %d.\n"
-
-#~ msgid "ERROR: Unable to create temporary file - %s.\n"
-#~ msgstr "ERROR: No se ha podido crear el archivo temporal - %s.\n"
-
-#~ msgid "ERROR: Unable to create temporary file: %s\n"
-#~ msgstr "ERROR: No se ha podido crear el archivo temporal: %s\n"
-
-#~ msgid "ERROR: Unable to open temporary file"
-#~ msgstr "ERROR: No se ha podido abrir el archivo temporal"
-
-#~ msgid ""
-#~ "Usage: convert [ options ]\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "\n"
-#~ " -f filename Set file to be converted (otherwise stdin)\n"
-#~ " -o filename Set file to be generated (otherwise stdout)\n"
-#~ " -i mime/type Set input MIME type (otherwise auto-typed)\n"
-#~ " -j mime/type Set output MIME type (otherwise application/pdf)\n"
-#~ " -P filename.ppd Set PPD file\n"
-#~ " -a 'name=value ...' Set option(s)\n"
-#~ " -U username Set username for job\n"
-#~ " -J title Set title\n"
-#~ " -c copies Set number of copies\n"
-#~ " -u Remove the PPD file when finished\n"
-#~ " -D Remove the input file when finished\n"
-#~ msgstr ""
-#~ "Uso: convert [ opciones ]\n"
-#~ "\n"
-#~ "Opciones:\n"
-#~ "\n"
-#~ " -f nombrearchivo Establece el archivo a convertir (de otro "
-#~ "modo, stdin)\n"
-#~ " -o nombrearchivo Establece el archivo a generar (de otro modo, "
-#~ "stdout)\n"
-#~ " -i tipo/mime Establece el tipo MIME de entrada (de otro modo, "
-#~ "auto-tipado)\n"
-#~ " -j tipo/mime Establece el tipo MIME de salida (de otro modo, "
-#~ "application/pdf)\n"
-#~ " -P nombrearchivo.ppd Establece el archivo PPD\n"
-#~ " -a 'nombre=valor ...' Establece opcion(es)\n"
-#~ " -U nombreusuario Establece el nombre de usuario del trabajo\n"
-#~ " -J tÃtulo Establece el tÃtulo\n"
-#~ " -c copias Establece el número de copias\n"
-#~ " -u Borra el archivo PPD después de terminar\n"
-#~ " -D Borra el archivo de entrada después de terminar\n"
-
-#~ msgid ""
-#~ "Usage: cupsfilter -m mime/type [ options ] filename\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "\n"
-#~ " -c cupsd.conf Set cupsd.conf file to use\n"
-#~ " -j job-id[,N] Filter file N from the specified job (default is file "
-#~ "1)\n"
-#~ " -n copies Set number of copies\n"
-#~ " -o name=value Set option(s)\n"
-#~ " -p filename.ppd Set PPD file\n"
-#~ " -t title Set title\n"
-#~ msgstr ""
-#~ "Uso: cupsfilter -m tipo/mime [ opciones ] nombre_archivo\n"
-#~ "\n"
-#~ "Opciones:\n"
-#~ "\n"
-#~ " -c cupsd.conf Establecer el archivo cupsd.conf a usar\n"
-#~ " -j id-trabajo[,N] Filtrar el archivo N del trabajo especificado "
-#~ "(valor predeterminado 1)\n"
-#~ " -n copias Establecer el número de copias\n"
-#~ " -o nombre=valor Establecer las opciones\n"
-#~ " -p nombre_archivo.ppd Especificar el archivo PPD\n"
-#~ " -t tÃtulo Establecer el tÃtulo\n"
-
-#~ msgid ""
-#~ "Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]\n"
-#~ " program | cupstestppd [options] -\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "\n"
-#~ " -R root-directory Set alternate root\n"
-#~ " -W {all,none,constraints,defaults,duplex,filters,translations}\n"
-#~ " Issue warnings instead of errors\n"
-#~ " -q Run silently\n"
-#~ " -r Use 'relaxed' open mode\n"
-#~ " -v Be slightly verbose\n"
-#~ " -vv Be very verbose\n"
-#~ msgstr ""
-#~ "Uso: cupstestppd [opciones] nombre_archivo1.ppd[.gz] [... nombre_archivoN."
-#~ "ppd[.gz]]\n"
-#~ " programa | cupstestppd [opciones] -\n"
-#~ "\n"
-#~ "Opciones:\n"
-#~ "\n"
-#~ " -R directorio-raÃz Establecer el directorio raÃz alternativo\n"
-#~ " -W {all,none,constraints,defaults,duplex,filters,translations}\n"
-#~ " Emitir avisos en vez de errores\n"
-#~ " -q Ejecutar en modo silencioso\n"
-#~ " -r Usar el modo de apertura 'relajado'\n"
-#~ " -v Ligeramente detallado\n"
-#~ " -vv Muy detallado\n"
-
-#~ msgid "cupsfilter: Unable to create temporary file: %s\n"
-#~ msgstr "cupsfilter: No se ha podido crear el archivo temporal: %s\n"
-
-#~ msgid "lpadmin: Unable to create temporary file - %s\n"
-#~ msgstr "lpadmin: No se ha podido crear el archivo temporal - %s\n"
-
-#~ msgid "lpadmin: Unable to create temporary file: %s\n"
-#~ msgstr "lpadmin: No se ha podido crear el archivo temporal: %s\n"
diff --git a/man/cupsd.conf.man.in b/man/cupsd.conf.man.in
index 35b3bf48f2..e2e0351836 100644
--- a/man/cupsd.conf.man.in
+++ b/man/cupsd.conf.man.in
@@ -12,7 +12,7 @@
.\" 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/".
.\"
-.TH cupsd.conf 5 "CUPS" "28 January 2009" "Apple Inc."
+.TH cupsd.conf 5 "CUPS" "16 March 2009" "Apple Inc."
.SH NAME
cupsd.conf \- server configuration file for cups
.SH DESCRIPTION
@@ -393,6 +393,11 @@ Include filename
.br
Includes the named file.
.TP 5
+JobKillDelay seconds
+.br
+Specifies the number of seconds to wait before killing the filters and backend
+associated with a canceled or held job.
+.TP 5
JobRetryInterval seconds
.br
Specifies the interval between retries of jobs in seconds.
diff --git a/packaging/LICENSE.rtf b/packaging/LICENSE.rtf
index 2fbacac722..b348f6b08a 100644
--- a/packaging/LICENSE.rtf
+++ b/packaging/LICENSE.rtf
@@ -1,4 +1,4 @@
-{\rtf1\ansi\ansicpg1252\cocoartf1009\cocoasubrtf300
+{\rtf1\ansi\ansicpg1252\cocoartf1011
{\fonttbl\f0\froman\fcharset0 Times-Roman;\f1\fnil\fcharset0 LucidaGrande;\f2\fmodern\fcharset0 Courier;
\f3\fmodern\fcharset0 Courier-Oblique;}
{\colortbl;\red255\green255\blue255;\red0\green0\blue238;}
@@ -10,6 +10,7 @@
{\list\listtemplateid6\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}.}{\leveltext\leveltemplateid501\'02\'00.;}{\levelnumbers\'01;}\fi-360\li720\lin720 }{\listname ;}\listid6}
{\list\listtemplateid7\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}.}{\leveltext\leveltemplateid601\'02\'00.;}{\levelnumbers\'01;}\fi-360\li720\lin720 }{\listname ;}\listid7}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}{\listoverride\listid4\listoverridecount0\ls4}{\listoverride\listid5\listoverridecount0\ls5}{\listoverride\listid6\listoverridecount0\ls6}{\listoverride\listid7\listoverridecount0\ls7}}
+\margl1440\margr1440\margb1800\margt1800\vieww9000\viewh8400\viewkind0
\deftab720
\pard\pardeftab720\sa280\qc
@@ -72,7 +73,7 @@ The GNU LGPL relaxes the "link-to" restriction, allowing you to develop applicat
\b\fs28 \cf0 Trademarks\
\pard\pardeftab720\sa240\ql\qnatural
-\b0\fs24 \cf0 CUPS and the CUPS logo are trademarks of Apple Inc. You may use the name and logo in any direct port or binary distribution of CUPS. Please contact Apple Inc. for written permission to use them in derivative products. Our intention is to protect the value of these trademarks and ensure that any derivative product meets the same high-quality standards as the original.\
+\b0\fs24 \cf0 CUPS and the CUPS logo (the "CUPS Marks") are trademarks of Apple Inc. Apple grants you a non-exclusive and non-transferable right to use the CUPS Marks in any direct port or binary distribution incorporating CUPS software and in any promotional material therefor. You agree that your products will meet the highest levels of quality and integrity for similar goods, not be unlawful, and be developed, manufactured, and distributed in compliance with this license. You will not interfere with Apple's rights in the CUPS Marks, and all use of the CUPS Marks shall inure to the benefit of Apple. This license does not apply to use of the CUPS Marks in a derivative products, which requires prior written permission from Apple Inc.\
\pard\pardeftab720\sa280\ql\qnatural
\b\fs28 \cf0 \page \pard\pardeftab720\sa280\ql\qnatural
diff --git a/scheduler/conf.c b/scheduler/conf.c
index 26ca30b962..617291a7c9 100644
--- a/scheduler/conf.c
+++ b/scheduler/conf.c
@@ -122,6 +122,7 @@ static const cupsd_var_t variables[] =
{ "HideImplicitMembers", &HideImplicitMembers, CUPSD_VARTYPE_BOOLEAN },
{ "ImplicitClasses", &ImplicitClasses, CUPSD_VARTYPE_BOOLEAN },
{ "ImplicitAnyClasses", &ImplicitAnyClasses, CUPSD_VARTYPE_BOOLEAN },
+ { "JobKillDelay", &JobKillDelay, CUPSD_VARTYPE_INTEGER },
{ "JobRetryLimit", &JobRetryLimit, CUPSD_VARTYPE_INTEGER },
{ "JobRetryInterval", &JobRetryInterval, CUPSD_VARTYPE_INTEGER },
{ "KeepAliveTimeout", &KeepAliveTimeout, CUPSD_VARTYPE_INTEGER },
@@ -559,6 +560,7 @@ cupsdReadConfiguration(void)
SSLOptions = CUPSD_SSL_NONE;
#endif /* HAVE_SSL */
DirtyCleanInterval = DEFAULT_KEEPALIVE;
+ JobKillDelay = DEFAULT_TIMEOUT;
JobRetryLimit = 5;
JobRetryInterval = 300;
FileDevice = FALSE;
diff --git a/scheduler/cups-driverd.cxx b/scheduler/cups-driverd.cxx
index 0be49aa18e..0f4e4a7c5d 100644
--- a/scheduler/cups-driverd.cxx
+++ b/scheduler/cups-driverd.cxx
@@ -1101,8 +1101,9 @@ list_ppds(int request_id, /* I - Request ID */
if (language)
{
for (i = 0; i < PPD_MAX_LANG; i ++)
- if (!ppd->record.languages[i][0] ||
- !strcmp(ppd->record.languages[i], language))
+ if (!ppd->record.languages[i][0])
+ break;
+ else if (!strcmp(ppd->record.languages[i], language))
{
ppd->matches ++;
break;
@@ -1135,8 +1136,9 @@ list_ppds(int request_id, /* I - Request ID */
if (product)
{
for (i = 0; i < PPD_MAX_PROD; i ++)
- if (!ppd->record.products[i][0] ||
- !strcasecmp(ppd->record.products[i], product))
+ if (!ppd->record.products[i][0])
+ break;
+ else if (!strcasecmp(ppd->record.products[i], product))
{
ppd->matches += 3;
break;
@@ -1146,8 +1148,9 @@ list_ppds(int request_id, /* I - Request ID */
if (psversion)
{
for (i = 0; i < PPD_MAX_VERS; i ++)
- if (!ppd->record.psversions[i][0] ||
- !strcasecmp(ppd->record.psversions[i], psversion))
+ if (!ppd->record.psversions[i][0])
+ break;
+ else if (!strcasecmp(ppd->record.psversions[i], psversion))
{
ppd->matches ++;
break;
diff --git a/scheduler/ipp.c b/scheduler/ipp.c
index c0160e2e9e..edf5c44c36 100644
--- a/scheduler/ipp.c
+++ b/scheduler/ipp.c
@@ -9307,12 +9307,12 @@ restart_job(cupsd_client_t *con, /* I - Client connection */
{
ipp_attribute_t *attr; /* Current attribute */
int jobid; /* Job ID */
+ cupsd_job_t *job; /* Job information */
char scheme[HTTP_MAX_URI], /* Method portion of URI */
username[HTTP_MAX_URI], /* Username portion of URI */
host[HTTP_MAX_URI], /* Host portion of URI */
resource[HTTP_MAX_URI]; /* Resource portion of URI */
int port; /* Port portion of URI */
- cupsd_job_t *job; /* Job information */
cupsdLogMessage(CUPSD_LOG_DEBUG2, "restart_job(%p[%d], %s)", con,
@@ -9420,10 +9420,36 @@ restart_job(cupsd_client_t *con, /* I - Client connection */
}
/*
- * Restart the job and return...
+ * See if the job-hold-until attribute is specified...
*/
- cupsdRestartJob(job);
+ if ((attr = ippFindAttribute(con->request, "job-hold-until",
+ IPP_TAG_KEYWORD)) == NULL)
+ attr = ippFindAttribute(con->request, "job-hold-until", IPP_TAG_NAME);
+
+ if (attr && strcmp(attr->values[0].string.text, "no-hold"))
+ {
+ /*
+ * Return the job to a held state...
+ */
+
+ cupsdLogJob(job, CUPSD_LOG_DEBUG,
+ "Restarted by \"%s\" with job-hold-until=%s.",
+ username, attr->values[0].string.text);
+ cupsdSetJobHoldUntil(job, attr->values[0].string.text, 0);
+
+ cupsdAddEvent(CUPSD_EVENT_JOB_CONFIG_CHANGED | CUPSD_EVENT_JOB_STATE,
+ NULL, job, "Job restarted by user with job-hold-until=%s",
+ attr->values[0].string.text);
+ }
+ else
+ {
+ /*
+ * Restart the job...
+ */
+
+ cupsdRestartJob(job);
+ }
cupsdLogJob(job, CUPSD_LOG_INFO, "Restarted by \"%s\".", username);
diff --git a/scheduler/job.c b/scheduler/job.c
index b947d58ca9..cce7d23e4e 100644
--- a/scheduler/job.c
+++ b/scheduler/job.c
@@ -271,23 +271,36 @@ cupsdCheckJobs(void)
cupsd_printer_t *printer, /* Printer destination */
*pclass; /* Printer class destination */
ipp_attribute_t *attr; /* Job attribute */
+ time_t curtime; /* Current time */
cupsdLogMessage(CUPSD_LOG_DEBUG2,
"cupsdCheckJobs: %d active jobs, sleeping=%d, reload=%d",
cupsArrayCount(ActiveJobs), Sleeping, NeedReload);
+ curtime = time(NULL);
+
for (job = (cupsd_job_t *)cupsArrayFirst(ActiveJobs);
job;
job = (cupsd_job_t *)cupsArrayNext(ActiveJobs))
{
+ /*
+ * Kill jobs if they are unresponsive...
+ */
+
+ if (job->kill_time && job->kill_time <= curtime)
+ {
+ stop_job(job, CUPSD_JOB_FORCE);
+ continue;
+ }
+
/*
* Start held jobs if they are ready...
*/
if (job->state_value == IPP_JOB_HELD &&
job->hold_until &&
- job->hold_until < time(NULL))
+ job->hold_until < curtime)
{
if (job->pending_timeout)
{
@@ -1256,7 +1269,7 @@ cupsdFreeAllJobs(void)
cupsdHoldSignals();
- cupsdStopAllJobs(1);
+ cupsdStopAllJobs(CUPSD_JOB_FORCE, 0);
cupsdSaveAllJobs();
for (job = (cupsd_job_t *)cupsArrayFirst(Jobs);
@@ -2352,7 +2365,8 @@ cupsdSetJobState(
void
cupsdStopAllJobs(
- cupsd_jobaction_t action) /* I - Action */
+ cupsd_jobaction_t action, /* I - Action */
+ int kill_delay) /* I - Number of seconds before we kill */
{
cupsd_job_t *job; /* Current job */
@@ -2362,7 +2376,12 @@ cupsdStopAllJobs(
for (job = (cupsd_job_t *)cupsArrayFirst(PrintingJobs);
job;
job = (cupsd_job_t *)cupsArrayNext(PrintingJobs))
+ {
+ if (kill_delay)
+ job->kill_time = time(NULL) + kill_delay;
+
cupsdSetJobState(job, IPP_JOB_PENDING, action, NULL);
+ }
}
@@ -3670,6 +3689,11 @@ stop_job(cupsd_job_t *job, /* I - Job */
FilterLevel -= job->cost;
job->cost = 0;
+ if (action == CUPSD_JOB_DEFAULT && !job->kill_time)
+ job->kill_time = time(NULL) + JobKillDelay;
+ else if (action == CUPSD_JOB_FORCE)
+ job->kill_time = 0;
+
for (i = 0; job->filters[i]; i ++)
if (job->filters[i] > 0)
cupsdEndProcess(job->filters[i], action == CUPSD_JOB_FORCE);
diff --git a/scheduler/job.h b/scheduler/job.h
index 2056e4ab77..498cddb095 100644
--- a/scheduler/job.h
+++ b/scheduler/job.h
@@ -43,9 +43,10 @@ typedef struct cupsd_job_s
int num_files; /* Number of files in job */
mime_type_t **filetypes; /* File types */
int *compressions; /* Compression status of each file */
- time_t access_time; /* Last access time */
ipp_attribute_t *sheets; /* job-media-sheets-completed */
- time_t hold_until; /* Hold expiration date/time */
+ time_t access_time, /* Last access time */
+ kill_time, /* When to send SIGKILL */
+ hold_until; /* Hold expiration date/time */
ipp_attribute_t *state; /* Job state */
ipp_attribute_t *job_sheets; /* Job sheets (NULL if none) */
ipp_attribute_t *printer_message,
@@ -109,7 +110,9 @@ VAR cups_array_t *Jobs VALUE(NULL),
/* List of jobs that are printing */
VAR int NextJobId VALUE(1);
/* Next job ID to use */
-VAR int JobRetryLimit VALUE(5),
+VAR int JobKillDelay VALUE(DEFAULT_TIMEOUT),
+ /* Delay before killing jobs */
+ JobRetryLimit VALUE(5),
/* Max number of tries */
JobRetryInterval VALUE(300);
/* Seconds between retries */
@@ -149,7 +152,8 @@ extern void cupsdSetJobState(cupsd_job_t *job,
__attribute__ ((__format__ (__printf__, 4, 5)))
#endif /* __GNUC__ */
;
-extern void cupsdStopAllJobs(cupsd_jobaction_t action);
+extern void cupsdStopAllJobs(cupsd_jobaction_t action,
+ int kill_delay);
extern int cupsdTimeoutJob(cupsd_job_t *job);
extern void cupsdUnloadCompletedJobs(void);
diff --git a/scheduler/main.c b/scheduler/main.c
index d78280f98c..3a8668902b 100644
--- a/scheduler/main.c
+++ b/scheduler/main.c
@@ -713,23 +713,13 @@ main(int argc, /* I - Number of command-line args */
cupsdPauseListening();
}
- /*
- * Check for any active jobs...
- */
-
- for (job = (cupsd_job_t *)cupsArrayFirst(ActiveJobs);
- job;
- job = (cupsd_job_t *)cupsArrayNext(ActiveJobs))
- if (job->state_value == IPP_JOB_PROCESSING)
- break;
-
/*
* Restart if all clients are closed and all jobs finished, or
* if the reload timeout has elapsed...
*/
if ((cupsArrayCount(Clients) == 0 &&
- (!job || NeedReload != RELOAD_ALL)) ||
+ (cupsArrayCount(PrintingJobs) == 0 || NeedReload != RELOAD_ALL)) ||
(time(NULL) - ReloadTime) >= ReloadTimeout)
{
/*
@@ -890,7 +880,7 @@ main(int argc, /* I - Number of command-line args */
cupsArrayCount(PrintingJobs) > 0)
{
SleepJobs = 0;
- cupsdStopAllJobs(0);
+ cupsdStopAllJobs(CUPSD_JOB_DEFAULT, 10);
}
#endif /* __APPLE__ */
@@ -1961,22 +1951,27 @@ select_timeout(int fds) /* I - Number of descriptors returned */
* Check for any active jobs...
*/
- if (cupsArrayCount(ActiveJobs) > 0)
+ for (job = (cupsd_job_t *)cupsArrayFirst(ActiveJobs);
+ job;
+ job = (cupsd_job_t *)cupsArrayNext(ActiveJobs))
{
- for (job = (cupsd_job_t *)cupsArrayFirst(ActiveJobs);
- job;
- job = (cupsd_job_t *)cupsArrayNext(ActiveJobs))
- if (job->state_value == IPP_JOB_HELD && job->hold_until < timeout)
- {
- timeout = job->hold_until;
- why = "release held jobs";
- }
- else if (job->state_value == IPP_JOB_PENDING && timeout > (now + 10))
- {
- timeout = now + 10;
- why = "start pending jobs";
- break;
- }
+ if (job->kill_time && job->kill_time < timeout)
+ {
+ timeout = job->kill_time;
+ why = "kill unresponsive jobs";
+ }
+
+ if (job->state_value == IPP_JOB_HELD && job->hold_until < timeout)
+ {
+ timeout = job->hold_until;
+ why = "release held jobs";
+ }
+ else if (job->state_value == IPP_JOB_PENDING && timeout > (now + 10))
+ {
+ timeout = now + 10;
+ why = "start pending jobs";
+ break;
+ }
}
#ifdef HAVE_MALLINFO
diff --git a/scheduler/sysman.c b/scheduler/sysman.c
index 7084ddfcd9..be21df3d06 100644
--- a/scheduler/sysman.c
+++ b/scheduler/sysman.c
@@ -3,7 +3,7 @@
*
* System management definitions for the Common UNIX Printing System (CUPS).
*
- * Copyright 2007-2008 by Apple Inc.
+ * Copyright 2007-2009 by Apple Inc.
* Copyright 2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -792,7 +792,7 @@ sysUpdate(void)
/*
* If we have no printing jobs, allow the power change immediately.
- * Otherwise set the SleepJobs time to 20 seconds in the future when
+ * Otherwise set the SleepJobs time to 15 seconds in the future when
* we'll take more drastic measures...
*/
@@ -802,7 +802,7 @@ sysUpdate(void)
else
{
LastSysEvent = sysevent;
- SleepJobs = time(NULL) + 20;
+ SleepJobs = time(NULL) + 15;
}
}