* routines to read and write the amanda active tape list
*/
#include "amanda.h"
+#include "match.h"
#include "tapefile.h"
#include "conffile.h"
g_fprintf(tapef, "%s %s", tp->datestamp, tp->label);
if(tp->reuse) g_fprintf(tapef, " reuse");
else g_fprintf(tapef, " no-reuse");
+ if (tp->barcode)
+ g_fprintf(tapef, " BARCODE:%s", tp->barcode);
if (tp->comment)
g_fprintf(tapef, " #%s", tp->comment);
g_fprintf(tapef, "\n");
tape_t *
lookup_tapelabel(
- char *label)
+ const char *label)
{
tape_t *tp;
return pos;
}
+
+char *
+get_last_reusable_tape_label(
+ int skip)
+{
+ tape_t *tp = lookup_last_reusable_tape(skip);
+ return (tp != NULL) ? tp->label : NULL;
+}
+
tape_t *
lookup_last_reusable_tape(
int skip)
s[-1] = '\0';
skip_whitespace(s, ch);
}
+ if (strncmp_const(s - 1, "BARCODE:") == 0) {
+ s1 = s - 1 + 8;
+ skip_non_whitespace(s, ch);
+ s[-1] = '\0';
+ skip_whitespace(s, ch);
+ tp->barcode = stralloc(s1);
+ } else {
+ tp->barcode = NULL;
+ }
+
if (*(s - 1) == '#') {
tp->comment = stralloc(s); /* skip leading '#' */
return mktime(tm);
}
-void
-print_new_tapes(
- FILE *output,
- int nb)
+char *
+list_new_tapes(
+ int nb)
{
tape_t *lasttp, *iter;
+ char *result = NULL;
/* Find latest reusable new tape */
lasttp = lookup_tapepos(lookup_nb_tape());
}
if(c == 1) {
- g_fprintf(output,
- _("The next new tape already labelled is: %s.\n"),
- lasttp->label);
+ result = g_strdup_printf(
+ _("The next new tape already labelled is: %s."),
+ lasttp->label);
} else {
- g_fprintf(output,
- _("The next %d new tapes already labelled are: %s"),
- c, lasttp->label);
+ result = g_strdup_printf(
+ _("The next %d new tapes already labelled are: %s"),
+ c, lasttp->label);
iter = lasttp->prev;
c--;
while(iter && c > 0 && strcmp(iter->datestamp,"0") == 0) {
if (iter->reuse) {
- g_fprintf(output, ", %s", iter->label);
+ result = vstrextend(&result, ", ", iter->label, NULL);
c--;
}
iter = iter->prev;
}
- g_fprintf(output, ".\n");
}
}
+ return result;
+}
+
+void
+print_new_tapes(
+ FILE *output,
+ int nb)
+{
+ char *result = list_new_tapes(nb);
+
+ if (result) {
+ g_fprintf(output,"%s\n", result);
+ amfree(result);
+ }
}