From: mike Date: Wed, 1 Feb 2006 16:29:57 +0000 (+0000) Subject: Add support for Apple recoverable:/recovered: messages and X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7c9b0290fc6174e4e44de9b9a20ae059f5247265;p=thirdparty%2Fcups.git Add support for Apple recoverable:/recovered: messages and com.apple.print.recoverable-message attribute. scheduler/ipp.c: - copy_printer_attrs(): Copy com.apple.print.recoverable-message attribute as needed. scheduler/job.c - cupsdUpdateJob(): Handle recoverable: and recovered: messages. scheduler/printers.c - cupsdAddPrinterHistory(): Add com.apple.print.recoverable-message to history. - cupsdDeletePrinter(): Clear recoverable string as needed. scheduler/printers.h - Add recoverable string to cupsd_printer_t structure. git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@5039 7a7537e8-13f0-0310-91df-b6672ffda945 --- diff --git a/scheduler/ipp.c b/scheduler/ipp.c index 91e89e474b..9aae5a8a5d 100644 --- a/scheduler/ipp.c +++ b/scheduler/ipp.c @@ -3694,6 +3694,14 @@ copy_printer_attrs( curtime = time(NULL); +#ifdef __APPLE__ + if ((!ra || cupsArrayFind(ra, "com.apple.print.recoverable-message")) && + printer->recoverable) + ippAddString(con->response, IPP_TAG_PRINTER, IPP_TAG_TEXT, + "com.apple.print.recoverable-message", NULL, + printer->recoverable); +#endif /* __APPLE__ */ + if (!ra || cupsArrayFind(ra, "printer-current-time")) ippAddDate(con->response, IPP_TAG_PRINTER, "printer-current-time", ippTimeToDate(curtime)); diff --git a/scheduler/job.c b/scheduler/job.c index 179fa8e79d..ce78845740 100644 --- a/scheduler/job.c +++ b/scheduler/job.c @@ -2441,6 +2441,32 @@ cupsdUpdateJob(cupsd_job_t *job) /* I - Job to check */ /**** TODO ****/ } +#ifdef __APPLE__ + else if (!strncmp(message, "recoverable:", 12)) + { + cupsdSetPrinterReasons(job->printer, + "+com.apple.print.recoverable-warning"); + + message += 12; + while (isspace(*message & 255)) + message ++; + + cupsdSetString(&job->printer->recoverable, message); + cupsdAddPrinterHistory(job->printer); + } + else if (!strncmp(message, "recovered:", 10)) + { + cupsdSetPrinterReasons(job->printer, + "-com.apple.print.recoverable-warning"); + + message += 10; + while (isspace(*message & 255)) + message ++; + + cupsdSetString(&job->printer->recoverable, message); + cupsdAddPrinterHistory(job->printer); + } +#endif /* __APPLE__ */ else { /* diff --git a/scheduler/printers.c b/scheduler/printers.c index a1b22f41a3..a42c0a7eae 100644 --- a/scheduler/printers.c +++ b/scheduler/printers.c @@ -242,6 +242,11 @@ cupsdAddPrinterHistory( ippAddBoolean(history, IPP_TAG_PRINTER, "printer-is-shared", p->shared); ippAddString(history, IPP_TAG_PRINTER, IPP_TAG_TEXT, "printer-state-message", NULL, p->state_message); +#ifdef __APPLE__ + if (p->recoverable) + ippAddString(history, IPP_TAG_PRINTER, IPP_TAG_TEXT, + "com.apple.print.recoverable-message", NULL, p->recoverable); +#endif /* __APPLE__ */ if (p->num_reasons == 0) ippAddString(history, IPP_TAG_PRINTER, IPP_TAG_KEYWORD, "printer-state-reasons", NULL, @@ -796,6 +801,10 @@ cupsdDeletePrinter( cupsdClearString(&p->op_policy); cupsdClearString(&p->error_policy); +#ifdef __APPLE__ + cupsdClearString(&p->recoverable); +#endif /* __APPLE__ */ + free(p); /* diff --git a/scheduler/printers.h b/scheduler/printers.h index 44f20eb9bc..7e35565248 100644 --- a/scheduler/printers.h +++ b/scheduler/printers.h @@ -80,6 +80,9 @@ typedef struct cupsd_printer_s int num_history; /* Number of history collections */ ipp_t **history; /* History data */ int sequence_number; /* Increasing sequence number */ +#ifdef __APPLE__ + char *recoverable; /* com.apple.print.recoverable-message */ +#endif /* __APPLE__ */ } cupsd_printer_t;