]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/fd_cmds.c
Fix Win32 build -- turn off lockmgr and remove lockmgr defs
[bacula/bacula] / bacula / src / dird / fd_cmds.c
index cf29751ba17a5259c18f2d396649ca4454bdb62f..7d3ca3225dfcf999b12b30a03caa96b3d9a0ed91 100644 (file)
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2009 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -200,12 +200,18 @@ void get_level_since_time(JCR *jcr, char *since, int since_len)
       have_full = db_find_job_start_time(jcr, jcr->db, &jcr->jr, &jcr->stime);
       if (have_full) {
          last_full_time = str_to_utime(jcr->stime);
+      } else {
+         do_full = true;               /* No full, upgrade to one */
       }
       /* Make sure the last diff is recent enough */
       if (have_full && jcr->get_JobLevel() == L_INCREMENTAL && jcr->job->MaxDiffInterval > 0) {
          /* Lookup last diff job */
          if (db_find_last_job_start_time(jcr, jcr->db, &jcr->jr, &stime, L_DIFFERENTIAL)) {
             last_diff_time = str_to_utime(stime);
+            /* If no Diff since Full, use Full time */
+            if (last_diff_time < last_full_time) {
+               last_diff_time = last_full_time;
+            }
          } else {
             /* No last differential, so use last full time */
             last_diff_time = last_full_time;
@@ -215,8 +221,6 @@ void get_level_since_time(JCR *jcr, char *since, int since_len)
       /* Note, do_full takes precedence over do_diff */
       if (have_full && jcr->job->MaxFullInterval > 0) {
          do_full = ((now - last_full_time) >= jcr->job->MaxFullInterval);
-      } else {
-         do_full = true;
       }
       free_pool_memory(stime);