-CHANGES - 2.2.4 - 2017-05-17
+CHANGES - 2.2.4 - 2017-05-25
============================
CHANGES IN CUPS V2.2.4
- IPP Everywhere improvements (Issue #4998)
- Fixed the "cancel all jobs" function in the web interface for several
languages (Issue #4999)
+- The scheduler was not deleting temporary queues, leaving behind PPD files
+ (Issue #5003)
CHANGES IN CUPS V2.2.3
*/
if (JobHistoryUpdate && current_time >= JobHistoryUpdate)
+ {
cupsdCleanJobs();
+ cupsdDeleteTemporaryPrinters(0);
+ }
/*
* Log statistics at most once a minute when in debug mode...
cupsdFreeAllJobs();
+ /*
+ * Delete all temporary printers...
+ */
+
+ cupsdDeleteTemporaryPrinters(1);
+
#ifdef __APPLE__
/*
* Stop monitoring system event monitoring...
#ifdef __APPLE__
/*
- * When going to sleep, wake up to cancel jobs that don't complete in time.
+ * When going to sleep, wake up to abort jobs that don't complete in time.
*/
if (SleepJobs > 0 && SleepJobs < timeout)
{
timeout = SleepJobs;
- why = "cancel jobs before sleeping";
+ why = "abort jobs before sleeping";
}
#endif /* __APPLE__ */
* Remove any old PPD or script files...
*/
- snprintf(filename, sizeof(filename), "%s/interfaces/%s", ServerRoot, p->name);
- unlink(filename);
- snprintf(filename, sizeof(filename), "%s/interfaces/%s.O", ServerRoot, p->name);
- unlink(filename);
-
snprintf(filename, sizeof(filename), "%s/ppd/%s.ppd", ServerRoot, p->name);
unlink(filename);
snprintf(filename, sizeof(filename), "%s/ppd/%s.ppd.O", ServerRoot, p->name);
}
+/*
+ * 'cupsdDeleteTemporaryPrinters()' - Delete unneeded temporary printers.
+ */
+
+void
+cupsdDeleteTemporaryPrinters(int force) /* I - Force deletion instead of auto? */
+{
+ cupsd_printer_t *p; /* Current printer */
+ time_t unused_time; /* Last time for printer state change */
+
+
+ /*
+ * Allow temporary printers to stick around for 60 seconds after the last job
+ * completes.
+ */
+
+ unused_time = time(NULL) - 60;
+
+ for (p = (cupsd_printer_t *)cupsArrayFirst(Printers); p; p = (cupsd_printer_t *)cupsArrayNext(Printers))
+ {
+ if (p->temporary && (force || p->state_time < unused_time))
+ cupsdDeletePrinter(p, 0);
+ }
+}
+
+
/*
* 'cupsdFindDest()' - Find a destination in the list.
*/
/*
* Printer definitions for the CUPS scheduler.
*
- * Copyright 2007-2016 by Apple Inc.
+ * Copyright 2007-2017 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
extern void cupsdCreateCommonData(void);
extern void cupsdDeleteAllPrinters(void);
extern int cupsdDeletePrinter(cupsd_printer_t *p, int update);
+extern void cupsdDeleteTemporaryPrinters(int force);
extern cupsd_printer_t *cupsdFindDest(const char *name);
extern cupsd_printer_t *cupsdFindPrinter(const char *name);
extern cupsd_quota_t *cupsdFindQuota(cupsd_printer_t *p,