/*
* Amanda, The Advanced Maryland Automatic Network Disk Archiver
* Copyright (c) 1991-1998 University of Maryland at College Park
+ * Copyright (c) 2007-2012 Zmanda, Inc. All Rights Reserved.
* All Rights Reserved.
*
* Permission to use, copy, modify, distribute, and sell this software and its
char *line = NULL;
int status = 0;
- tape_list = NULL;
+ clear_tapelist();
if((tapef = fopen(tapefile,"r")) == NULL) {
if (errno == ENOENT) {
/* no tapelist is equivalent to an empty tapelist */
g_fprintf(tapef, " BARCODE:%s", tp->barcode);
if (tp->meta)
g_fprintf(tapef, " META:%s", tp->meta);
+ if (tp->blocksize)
+ g_fprintf(tapef, " BLOCKSIZE:%jd", (intmax_t)tp->blocksize);
if (tp->comment)
g_fprintf(tapef, " #%s", tp->comment);
g_fprintf(tapef, "\n");
for(tp = tape_list; tp; tp = next) {
amfree(tp->label);
amfree(tp->datestamp);
+ amfree(tp->barcode);
+ amfree(tp->meta);
+ amfree(tp->comment);
next = tp->next;
amfree(tp);
}
}
amfree(tp->datestamp);
amfree(tp->label);
+ amfree(tp->meta);
+ amfree(tp->comment);
+ amfree(tp->barcode);
amfree(tp);
}
}
/* insert a new record to the front of the list */
- new = (tape_t *) alloc(SIZEOF(tape_t));
+ new = g_new0(tape_t, 1);
new->datestamp = stralloc(datestamp);
new->position = 0;
tape_t *tp = NULL;
char *s, *s1;
int ch;
+ char *cline;
*status = 0;
- tp = (tape_t *) alloc(SIZEOF(tape_t));
-
- tp->prev = NULL;
- tp->next = NULL;
s = line;
ch = *s++;
skip_whitespace(s, ch);
if(ch == '\0') {
- amfree(tp);
return NULL;
}
+
+ cline = g_strdup(line);
+ tp = g_new0(tape_t, 1);
+
s1 = s - 1;
skip_non_whitespace(s, ch);
s[-1] = '\0';
s[-1] = '\0';
skip_whitespace(s, ch);
tp->barcode = stralloc(s1);
- } else {
- tp->barcode = NULL;
}
if (strncmp_const(s - 1, "META:") == 0) {
s[-1] = '\0';
skip_whitespace(s, ch);
tp->meta = stralloc(s1);
- } else {
- tp->meta = NULL;
}
+ if (strncmp_const(s - 1, "BLOCKSIZE:") == 0) {
+ s1 = s - 1 + 10;
+ skip_non_whitespace(s, ch);
+ s[-1] = '\0';
+ skip_whitespace(s, ch);
+ tp->blocksize = atol(s1);
+ }
if (*(s - 1) == '#') {
tp->comment = stralloc(s); /* skip leading '#' */
- } else {
- tp->comment = NULL;
+ } else if (*(s-1)) {
+ g_critical("Bogus line in the tapelist file: %s", cline);
}
return tp;