break;
}
}
+ else if (!strcasecmp(line, "Attribute") && value)
+ {
+ for (valueptr = value; *valueptr && !isspace(*valueptr & 255); valueptr ++);
+
+ if (!*valueptr)
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "Syntax error on line %d of printers.conf.", linenum);
+ else
+ {
+ for (; *valueptr && isspace(*valueptr & 255); *valueptr++ = '\0');
+
+ cupsdSetPrinterAttr(p, value, valueptr);
+
+ if (!strncmp(value, "marker-", 7))
+ p->marker_time = time(NULL);
+ }
+ }
else
{
/*
struct tm *curdate; /* Current date */
cups_option_t *option; /* Current option */
const char *ptr; /* Pointer into info/location */
+ ipp_attribute_t *marker; /* Current marker attribute */
/*
i --, option ++)
cupsFilePrintf(fp, "Option %s %s\n", option->name, option->value);
+ if ((marker = ippFindAttribute(printer->attrs, "marker-colors",
+ IPP_TAG_NAME)) != NULL)
+ {
+ cupsFilePrintf(fp, "Attribute %s %s", marker->name,
+ marker->values[0].string.text);
+ for (i = 1; i < marker->num_values; i ++)
+ cupsFilePrintf(fp, ",%s", marker->values[i].string.text);
+ cupsFilePuts(fp, "\n");
+ }
+
+ if ((marker = ippFindAttribute(printer->attrs, "marker-levels",
+ IPP_TAG_INTEGER)) != NULL)
+ {
+ cupsFilePrintf(fp, "Attribute %s %d", marker->name,
+ marker->values[0].integer);
+ for (i = 1; i < marker->num_values; i ++)
+ cupsFilePrintf(fp, ",%d", marker->values[i].integer);
+ cupsFilePuts(fp, "\n");
+ }
+
+ if ((marker = ippFindAttribute(printer->attrs, "marker-names",
+ IPP_TAG_NAME)) != NULL)
+ {
+ cupsFilePrintf(fp, "Attribute %s %s", marker->name,
+ marker->values[0].string.text);
+ for (i = 1; i < marker->num_values; i ++)
+ cupsFilePrintf(fp, ",%s", marker->values[i].string.text);
+ cupsFilePuts(fp, "\n");
+ }
+
+ if ((marker = ippFindAttribute(printer->attrs, "marker-types",
+ IPP_TAG_KEYWORD)) != NULL)
+ {
+ cupsFilePrintf(fp, "Attribute %s %s", marker->name,
+ marker->values[0].string.text);
+ for (i = 1; i < marker->num_values; i ++)
+ cupsFilePrintf(fp, ",%s", marker->values[i].string.text);
+ cupsFilePuts(fp, "\n");
+ }
+
cupsFilePuts(fp, "</Printer>\n");
#ifdef __sgi
value = ptr;
}
}
+
+ cupsdMarkDirty(CUPSD_DIRTY_PRINTERS);
}
p->type |= CUPS_PRINTER_COMMANDS;
}
+ else if (!(p->type & CUPS_PRINTER_COMMANDS))
+ {
+ /*
+ * See if this is a PostScript device without a command filter...
+ */
+
+ for (i = 0; i < ppd->num_filters; i ++)
+ if (!strncasecmp(ppd->filters[i],
+ "application/vnd.cups-postscript", 31))
+ break;
+
+ if (i < ppd->num_filters)
+ {
+ /*
+ * Add the generic PostScript command filter...
+ */
+
+ add_printer_filter(p, p->filetype,
+ "application/vnd.cups-command 0 commandtops");
+ p->type |= CUPS_PRINTER_COMMANDS;
+ }
+ }
if (p->type & CUPS_PRINTER_COMMANDS)
{