X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Fbuffer.c;h=a6daf3c9b3ae61774c52e09a61f913b211d09b9b;hb=61dd37ec86c150e317407c48a08d7bd2dd5b418a;hp=9b6a11a8c6e59ba48f20d066bf355802086bc73e;hpb=588f444efea17a7746d07fbd39510ec842eb4137;p=chaz%2Ftar diff --git a/src/buffer.c b/src/buffer.c index 9b6a11a..a6daf3c 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -20,11 +20,13 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include +#include #include #include #include +#include #include #include @@ -42,6 +44,7 @@ static tarlong prev_written; /* bytes written on previous volumes */ static tarlong bytes_written; /* bytes written on this volume */ static void *record_buffer[2]; /* allocated memory */ +union block *record_buffer_aligned[2]; static int record_index; /* FIXME: The following variables should ideally be static to this @@ -367,10 +370,11 @@ xclose (int fd) static void init_buffer () { - if (!record_buffer[record_index]) - page_aligned_alloc (&record_buffer[record_index], record_size); + if (! record_buffer_aligned[record_index]) + record_buffer_aligned[record_index] = + page_aligned_alloc (&record_buffer[record_index], record_size); - record_start = record_buffer[record_index]; + record_start = record_buffer_aligned[record_index]; current_block = record_start; record_end = record_start + blocking_factor; } @@ -966,6 +970,7 @@ new_volume (enum access_mode mode) { static FILE *read_file; static int looped; + int prompt; if (!read_file && !info_script_option) /* FIXME: if fopen is used, it will never be closed. */ @@ -989,9 +994,10 @@ new_volume (enum access_mode mode) archive_name_cursor = archive_name_array; looped = 1; } + prompt = looped; tryagain: - if (looped) + if (prompt) { /* We have to prompt from now on. */ @@ -1041,6 +1047,7 @@ new_volume (enum access_mode mode) open_warn (*archive_name_cursor); if (!verify_option && mode == ACCESS_WRITE && backup_option) undo_last_backup (); + prompt = 1; goto tryagain; }