]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/run_conf.c
ebl Modify disk-changer to check if slot contains something before
[bacula/bacula] / bacula / src / dird / run_conf.c
index e7c2ad6c208f2114f3581f3c0da29f21c65fbaba..b339cdccb3a95942d0e959d9665dfbb130bca279 100644 (file)
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2008 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.
@@ -186,7 +186,6 @@ void store_run(LEX *lc, RES_ITEM *item, int index, int pass)
    int token, state, state2 = 0, code = 0, code2 = 0;
    int options = lc->options;
    RUN **run = (RUN **)(item->value);
-   RUN *trun;
    char *p;
    RES *res;
 
@@ -623,16 +622,24 @@ void store_run(LEX *lc, RES_ITEM *item, int index, int pass)
    }
 
    /* Allocate run record, copy new stuff into it,
-    * and link it into the list of run records
+    * and append it to the list of run records
     * in the schedule resource.
     */
    if (pass == 2) {
-      trun = (RUN *)malloc(sizeof(RUN));
-      memcpy(trun, &lrun, sizeof(RUN));
-      if (*run) {
-         trun->next = *run;
+      RUN *tail;
+
+      /* Create new run record */
+      RUN *nrun = (RUN *)malloc(sizeof(RUN));
+      memcpy(nrun, &lrun, sizeof(RUN));
+      nrun ->next = NULL;
+
+      if (!*run) {                    /* if empty list */
+         *run = nrun;                 /* add new record */
+      } else {
+         for (tail = *run; tail->next; tail=tail->next)
+            {  }
+         tail->next = nrun;
       }
-      *run = trun;
    }
 
    lc->options = options;             /* restore scanner options */