X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=restore-src%2Frestore.c;h=130d08ef844fa2cfad50a788a00ec613806cce07;hb=a6127998ee6dcab6bb034f6ca985b07804a86f9a;hp=a12b5f52bc6ca5a5b11ff0f04b570a97d0b96cbf;hpb=94a044f90357edefa6f4ae9f0b1d5885b0e34aee;p=debian%2Famanda diff --git a/restore-src/restore.c b/restore-src/restore.c index a12b5f5..130d08e 100644 --- a/restore-src/restore.c +++ b/restore-src/restore.c @@ -1534,6 +1534,9 @@ try_restore_single_file(Device * device, int file_num, int* next_file, } record_seen_dump(tape_seen, source.header); restore(&source, flags); + if (first_restored_file) { + memcpy(first_restored_file, source.header, sizeof(dumpfile_t)); + } return RESTORE_STATUS_NEXT_FILE; } @@ -1736,6 +1739,7 @@ gboolean restore_holding_disk(FILE * prompt_out, if (last_header != NULL && !flags->amidxtaped && flags->pipe_to_fd == STDOUT_FILENO && + last_header->type != F_UNKNOWN && !headers_equal(last_header, source.header, 1)) { return FALSE; } else if (this_header != NULL) { @@ -1812,6 +1816,9 @@ restore_from_tapelist(FILE * prompt_out, cur_volume, &seentapes, NULL, &first_restored_file, NULL); } + if (flags->pipe_to_fd == fileno(stdout)) { + break; + } } else { Device * device = NULL; if (use_changer) { @@ -1847,7 +1854,7 @@ restore_from_tapelist(FILE * prompt_out, cur_volume, dumpspecs, &seentapes, &first_restored_file, 0, logstream)) { g_object_unref(device); - break;; + break; } g_object_unref(device); } @@ -1876,6 +1883,8 @@ restore_without_tapelist(FILE * prompt_out, int tape_count = 0; dumpfile_t first_restored_file; + fh_init(&first_restored_file); + /* This loop also aborts if we run out of manual tapes, or encounter a changer error. */ for (;;) {