]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/lib/parse_conf.c
!!! I didn't run the regression tests.!!!
[bacula/bacula] / bacula / src / lib / parse_conf.c
index d29697d4b4584857e606df9629bb3a5e21194fef..527b724149f4f011eeaf9b6c8d57f8a722c67d74 100755 (executable)
@@ -155,7 +155,7 @@ const char *res_to_str(int rcode)
  * Initialize the static structure to zeros, then
  *  apply all the default values.
  */
-void init_resource(int type, RES_ITEM *items)
+void init_resource(int type, RES_ITEM *items, int pass)
 {
    int i;
    int rindex = type - r_first;
@@ -188,6 +188,8 @@ void init_resource(int type, RES_ITEM *items)
            *(uint64_t *)(items[i].value) = (uint64_t)items[i].default_value;
         } else if (items[i].handler == store_time) {
            *(utime_t *)(items[i].value) = (utime_t)items[i].default_value;
+        } else if (pass == 1 && items[i].handler == store_addresses) {
+           init_default_addresses((dlist**)items[i].value, items[i].default_value);
         }
       }
       /* If this triggers, take a look at lib/parse_conf.h */
@@ -442,6 +444,10 @@ void store_res(LEX *lc, RES_ITEM *item, int index, int pass)
         scan_err3(lc, _("Could not find config Resource %s referenced on line %d : %s\n"), 
           lc->str, lc->line_no, lc->line);
      }
+     if (*(item->value)) {
+        scan_err3(lc, _("Attempt to redefine resource \"%s\" referenced on line %d : %s\n"), 
+          lc->str, lc->line_no, lc->line);
+     }
      *(item->value) = (char *)res;
    }
    scan_to_eol(lc);
@@ -723,7 +729,7 @@ parse_config(const char *cf, int exit_on_error)
                  state = p_resource;
                  items = resources[i].items;
                  res_type = resources[i].rcode;
-                 init_resource(res_type, items);
+                 init_resource(res_type, items, pass);
                  break;
               }
            if (state == p_none) {
@@ -837,3 +843,11 @@ RES **save_config_resources()
    }
    return res;
 }
+
+RES **new_res_head()
+{
+   int size = (r_last - r_first + 1) * sizeof(RES *);
+   RES **res = (RES **)malloc(size);
+   memset(res, 0, size);
+   return res;
+}