*/
/*
- Copyright (C) 2000-2004 Kern Sibbald and John Walker
+ Copyright (C) 2000-2005 Kern Sibbald
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
{NULL, 0}
};
+/* Used for certain KeyWord tables */
+struct s_kw {
+ const char *name;
+ int token;
+};
+
+/*
+ * Tape Label types permitted in Pool records
+ *
+ * tape label label code = token
+ */
+struct s_kw tapelabels[] = {
+ {"bacula", B_BACULA_LABEL},
+ {"ansi", B_ANSI_LABEL},
+ {"ibm", B_IBM_LABEL},
+ {NULL, 0}
+};
+
/* Simply print a message */
static void prtmsg(void *sock, const char *fmt, ...)
}
+/*
+ * Store a string in an alist.
+ */
+void store_alist_str(LEX *lc, RES_ITEM *item, int index, int pass)
+{
+ alist *list;
+
+ if (pass == 2) {
+ if (*(item->value) == NULL) {
+ list = New(alist(10, owned_by_alist));
+ } else {
+ list = (alist *)(*(item->value));
+ }
+
+ lex_get_token(lc, T_STRING); /* scan next item */
+ Dmsg4(900, "Append %s to alist %p size=%d %s\n",
+ lc->str, list, list->size(), item->name);
+ list->append(bstrdup(lc->str));
+ *(item->value) = (char *)list;
+ }
+ scan_to_eol(lc);
+ set_bit(index, res_all.hdr.item_present);
+}
+
+
+
/*
* Store default values for Resource from xxxDefs
* If we are in pass 2, do a lookup of the
set_bit(index, res_all.hdr.item_present);
}
+/*
+ * Store Tape Label Type (Bacula, ANSI, IBM)
+ *
+ */
+void store_label(LEX *lc, RES_ITEM *item, int index, int pass)
+{
+ int token, i;
+
+ token = lex_get_token(lc, T_NAME);
+ /* Store the label pass 2 so that type is defined */
+ for (i=0; tapelabels[i].name; i++) {
+ if (strcasecmp(lc->str, tapelabels[i].name) == 0) {
+ *(int *)(item->value) = tapelabels[i].token;
+ i = 0;
+ break;
+ }
+ }
+ if (i != 0) {
+ scan_err1(lc, "Expected a Tape Label keyword, got: %s", lc->str);
+ }
+ scan_to_eol(lc);
+ set_bit(index, res_all.hdr.item_present);
+}
+
/* #define TRACE_RES */