int version; /* IPP version */
static const char * const pattrs[] =
{ /* Printer attributes we want */
+ "com.apple.print.recoverable-message",
"copies-supported",
"document-format-supported",
"marker-colors",
*response; /* IPP response */
static const char * const attrs[] = /* Attributes we want */
{
+ "com.apple.print.recoverable-message",
"marker-colors",
"marker-levels",
"marker-message",
{
int i; /* Looping var */
int count; /* Count of reasons shown... */
- ipp_attribute_t *psm, /* printer-state-message */
+ ipp_attribute_t *caprm, /* com.apple.print.recoverable-message */
+ *psm, /* printer-state-message */
*reasons, /* printer-state-reasons */
*marker; /* marker-* attributes */
const char *reason; /* Current reason */
const char *prefix; /* Prefix for STATE: line */
char state[1024]; /* State string */
cups_lang_t *language; /* Current localization */
+ int saw_caprw; /* Saw com.apple.print.recoverable-warning state */
if ((psm = ippFindAttribute(ipp, "printer-state-message",
IPP_TAG_KEYWORD)) == NULL)
return (0);
- state[0] = '\0';
- prefix = "STATE: ";
- language = cupsLangDefault();
+ saw_caprw = 0;
+ state[0] = '\0';
+ prefix = "STATE: ";
+ language = cupsLangDefault();
for (i = 0, count = 0; i < reasons->num_values; i ++)
{
message = _("Developer almost empty.");
else if (!strncmp(reason, "developer-empty", 15))
message = _("Developer empty!");
+ else if (!strcmp(reason, "com.apple.print.recoverable-warning"))
+ saw_caprw = 1;
else if (strstr(reason, "error") != NULL)
{
message = unknown;
fprintf(stderr, "%s\n", state);
+ /*
+ * Relay com.apple.print.recoverable-message...
+ */
+
+ if ((caprm = ippFindAttribute(ipp, "com.apple.print.recoverable-message",
+ IPP_TAG_TEXT)) != NULL)
+ fprintf(stderr, "WARNING: %s: %s\n",
+ saw_caprw ? "recoverable" : "recovered",
+ caprm->values[0].string.text);
+
/*
* Relay the current marker-* attribute values...
*/