Changes in CUPS v2.4.13 (YYYY-MM-DD)
------------------------------------
+- Updated the scheduler to send the "printer-added" or "printer-modified" events
+ whenever an IPP Everywhere PPD is installed (Issue #1244)
- Updated the scheduler to send the "printer-modified" event whenever the system
default printer is changed (Issue #1246)
- Fixed a memory leak in `httpClose` (Issue #1223)
*response = NULL; /* Response from printer */
ipp_attribute_t *attr; /* Attribute in response */
ipp_status_t status; /* Status code */
+ cupsd_eventmask_t event; /* Event (CUPSD_EVENT_PRINTER_ADDED or CUPSD_EVENT_PRINTER_MODIFIED) */
static const char * const pattrs[] = /* Printer attributes we need */
{
"all",
_cupsRWUnlock(&printer->lock);
+ /*
+ * Try opening the created PPD file...
+ */
+
if ((from = cupsFileOpen(fromppd, "r")) == NULL)
{
cupsdLogMessage(CUPSD_LOG_ERROR, "%s: Unable to read generated PPD: %s", printer->name, strerror(errno));
goto finish_response;
}
+ /*
+ * Then the destination PPD for the queue...
+ */
+
snprintf(toppd, sizeof(toppd), "%s/ppd/%s.ppd", ServerRoot, printer->name);
+
+ if (access(toppd, 0)) /* Determine whether to log an "added" or "modified" event */
+ event = CUPSD_EVENT_PRINTER_ADDED;
+ else
+ event = CUPSD_EVENT_PRINTER_MODIFIED;
+
if ((to = cupsdCreateConfFile(toppd, ConfigFilePerm)) == NULL)
{
cupsdLogMessage(CUPSD_LOG_ERROR, "%s: Unable to create PPD for printer: %s", printer->name, strerror(errno));
goto finish_response;
}
+ /*
+ * Copy the PPD file over...
+ */
+
while (cupsFileGets(from, line, sizeof(line)))
cupsFilePrintf(to, "%s\n", line);
cupsdSetPrinterAttrs(printer);
+ cupsdAddEvent(event, printer, NULL, "Printer \"%s\" was %s.", printer->name, event == CUPSD_EVENT_PRINTER_ADDED ? "added" : "modified");
cupsdAddEvent(CUPSD_EVENT_PRINTER_CONFIG, printer, NULL, "Printer \"%s\" is now available.", printer->name);
cupsdLogMessage(CUPSD_LOG_INFO, "Printer \"%s\" is now available.", printer->name);
}