+ /* This may actually be more than one volume separated by a |
+ * If so, separate them.
+ */
+ for (p=lc->str; p && *p; ) {
+ n = strchr(p, '|');
+ if (n) {
+ *n++ = 0;
+ }
+ volume = (BSR_VOLUME *)malloc(sizeof(BSR_VOLUME));
+ memset(volume, 0, sizeof(BSR_VOLUME));
+ bstrncpy(volume->VolumeName, p, sizeof(volume->VolumeName));
+ /* Add it to the end of the volume chain */
+ if (!bsr->volume) {
+ bsr->volume = volume;
+ } else {
+ BSR_VOLUME *bc = bsr->volume;
+ for ( ;bc->next; bc=bc->next)
+ { }
+ bc->next = volume;
+ }
+ p = n;
+ }
+ return bsr;
+}
+
+/* Shove the MediaType in each Volume in the current bsr */
+static BSR *store_mediatype(LEX *lc, BSR *bsr)
+{
+ int token;
+
+ token = lex_get_token(lc, T_STRING);
+ if (token == T_ERROR) {
+ return NULL;
+ }
+ if (!bsr->volume) {
+ Emsg1(M_ERROR,0, _("MediaType %s in bsr at inappropriate place.\n"),
+ lc->str);
+ return bsr;
+ }
+ BSR_VOLUME *bv;
+ for (bv=bsr->volume; bv; bv=bv->next) {
+ bstrncpy(bv->MediaType, lc->str, sizeof(bv->MediaType));
+ }
+ return bsr;
+}
+
+/* Shove the Device name in each Volume in the current bsr */
+static BSR *store_device(LEX *lc, BSR *bsr)
+{
+ int token;
+
+ token = lex_get_token(lc, T_STRING);
+ if (token == T_ERROR) {
+ return NULL;
+ }
+ if (!bsr->volume) {
+ Emsg1(M_ERROR,0, _("Device \"%s\" in bsr at inappropriate place.\n"),
+ lc->str);
+ return bsr;
+ }
+ BSR_VOLUME *bv;
+ for (bv=bsr->volume; bv; bv=bv->next) {
+ bstrncpy(bv->device, lc->str, sizeof(bv->device));
+ }