Blame SOURCES/cups-fix-preservejob-times.patch

8d5fa4
diff --git a/scheduler/job.c b/scheduler/job.c
8d5fa4
index 82ef2eb..5d5e3aa 100644
8d5fa4
--- a/scheduler/job.c
8d5fa4
+++ b/scheduler/job.c
8d5fa4
@@ -448,10 +448,20 @@ cupsdCleanJobs(void)
8d5fa4
   curtime          = time(NULL);
8d5fa4
   JobHistoryUpdate = 0;
8d5fa4
 
8d5fa4
+  cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCleanJobs: curtime=%d", (int)curtime);
8d5fa4
+
8d5fa4
   for (job = (cupsd_job_t *)cupsArrayFirst(Jobs);
8d5fa4
        job;
8d5fa4
        job = (cupsd_job_t *)cupsArrayNext(Jobs))
8d5fa4
   {
8d5fa4
+    cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCleanJobs: Job %d, state=%d, printer=%p, history_time=%d, file_time=%d", job->id, (int)job->state_value, (void *)job->printer, (int)job->history_time, (int)job->file_time);
8d5fa4
+
8d5fa4
+    if ((job->history_time && job->history_time < JobHistoryUpdate) || !JobHistoryUpdate)
8d5fa4
+      JobHistoryUpdate = job->history_time;
8d5fa4
+
8d5fa4
+    if ((job->file_time && job->file_time < JobHistoryUpdate) || !JobHistoryUpdate)
8d5fa4
+      JobHistoryUpdate = job->file_time;
8d5fa4
+
8d5fa4
     if (job->state_value >= IPP_JOB_CANCELED && !job->printer)
8d5fa4
     {
8d5fa4
      /*
8d5fa4
@@ -462,26 +472,14 @@ cupsdCleanJobs(void)
8d5fa4
           (job->history_time && job->history_time <= curtime))
8d5fa4
       {
8d5fa4
         cupsdLogJob(job, CUPSD_LOG_DEBUG, "Removing from history.");
8d5fa4
-	cupsdDeleteJob(job, CUPSD_JOB_PURGE);
8d5fa4
+        cupsdDeleteJob(job, CUPSD_JOB_PURGE);
8d5fa4
       }
8d5fa4
       else if (job->file_time && job->file_time <= curtime)
8d5fa4
       {
8d5fa4
         cupsdLogJob(job, CUPSD_LOG_DEBUG, "Removing document files.");
8d5fa4
-        cupsdLogJob(job, CUPSD_LOG_DEBUG2, "curtime=%ld, job->file_time=%ld", (long)curtime, (long)job->file_time);
8d5fa4
         remove_job_files(job);
8d5fa4
 
8d5fa4
         cupsdMarkDirty(CUPSD_DIRTY_JOBS);
8d5fa4
-
8d5fa4
-        if (job->history_time < JobHistoryUpdate || !JobHistoryUpdate)
8d5fa4
-	  JobHistoryUpdate = job->history_time;
8d5fa4
-      }
8d5fa4
-      else
8d5fa4
-      {
8d5fa4
-        if (job->history_time < JobHistoryUpdate || !JobHistoryUpdate)
8d5fa4
-	  JobHistoryUpdate = job->history_time;
8d5fa4
-
8d5fa4
-	if (job->file_time < JobHistoryUpdate || !JobHistoryUpdate)
8d5fa4
-	  JobHistoryUpdate = job->file_time;
8d5fa4
       }
8d5fa4
     }
8d5fa4
   }
8d5fa4
@@ -1873,7 +1871,7 @@ cupsdLoadJob(cupsd_job_t *job)		/* I - Job */
8d5fa4
     job->completed_time = attr->values[0].integer;
8d5fa4
 
8d5fa4
     if (JobHistory < INT_MAX)
8d5fa4
-      job->history_time = attr->values[0].integer + JobHistory;
8d5fa4
+      job->history_time = job->completed_time + JobHistory;
8d5fa4
     else
8d5fa4
       job->history_time = INT_MAX;
8d5fa4
 
8d5fa4
@@ -1884,7 +1882,7 @@ cupsdLoadJob(cupsd_job_t *job)		/* I - Job */
8d5fa4
       JobHistoryUpdate = job->history_time;
8d5fa4
 
8d5fa4
     if (JobFiles < INT_MAX)
8d5fa4
-      job->file_time = attr->values[0].integer + JobFiles;
8d5fa4
+      job->file_time = job->completed_time + JobFiles;
8d5fa4
     else
8d5fa4
       job->file_time = INT_MAX;
8d5fa4
 
8d5fa4
@@ -3100,8 +3098,10 @@ cupsdUpdateJobs(void)
8d5fa4
       * Update history/file expiration times...
8d5fa4
       */
8d5fa4
 
8d5fa4
+      job->completed_time = attr->values[0].integer;
8d5fa4
+
8d5fa4
       if (JobHistory < INT_MAX)
8d5fa4
-	job->history_time = attr->values[0].integer + JobHistory;
8d5fa4
+	job->history_time = job->completed_time + JobHistory;
8d5fa4
       else
8d5fa4
 	job->history_time = INT_MAX;
8d5fa4
 
8d5fa4
@@ -3115,7 +3115,7 @@ cupsdUpdateJobs(void)
8d5fa4
 	JobHistoryUpdate = job->history_time;
8d5fa4
 
8d5fa4
       if (JobFiles < INT_MAX)
8d5fa4
-	job->file_time = attr->values[0].integer + JobFiles;
8d5fa4
+	job->file_time = job->completed_time + JobFiles;
8d5fa4
       else
8d5fa4
 	job->file_time = INT_MAX;
8d5fa4
 
8d5fa4
@@ -4909,7 +4909,7 @@ set_time(cupsd_job_t *job,		/* I - Job to update */
8d5fa4
     job->completed_time = curtime;
8d5fa4
 
8d5fa4
     if (JobHistory < INT_MAX && attr)
8d5fa4
-      job->history_time = attr->values[0].integer + JobHistory;
8d5fa4
+      job->history_time = job->completed_time + JobHistory;
8d5fa4
     else
8d5fa4
       job->history_time = INT_MAX;
8d5fa4
 
8d5fa4
@@ -4917,7 +4917,7 @@ set_time(cupsd_job_t *job,		/* I - Job to update */
8d5fa4
       JobHistoryUpdate = job->history_time;
8d5fa4
 
8d5fa4
     if (JobFiles < INT_MAX && attr)
8d5fa4
-      job->file_time = curtime + JobFiles;
8d5fa4
+      job->file_time = job->completed_time + JobFiles;
8d5fa4
     else
8d5fa4
       job->file_time = INT_MAX;
8d5fa4