|
@@ -359,33 +359,32 @@ delete_archive_members (void)
|
|
|
write_record (1);
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- if (logical_status == HEADER_END_OF_FILE)
|
|
|
- {
|
|
|
- /* Write the end of tape. FIXME: we can't use write_eot here,
|
|
|
- as it gets confused when the input is at end of file. */
|
|
|
+ if (logical_status == HEADER_END_OF_FILE)
|
|
|
+ {
|
|
|
+ /* Write the end of tape. FIXME: we can't use write_eot here,
|
|
|
+ as it gets confused when the input is at end of file. */
|
|
|
|
|
|
- int total_zero_blocks = 0;
|
|
|
+ int total_zero_blocks = 0;
|
|
|
|
|
|
- do
|
|
|
+ do
|
|
|
+ {
|
|
|
+ int zero_blocks = blocking_factor - new_blocks;
|
|
|
+ memset (new_record + new_blocks, 0, BLOCKSIZE * zero_blocks);
|
|
|
+ total_zero_blocks += zero_blocks;
|
|
|
+ write_record (total_zero_blocks < 2);
|
|
|
+ }
|
|
|
+ while (total_zero_blocks < 2);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (! acting_as_filter && ! _isrmt (archive))
|
|
|
{
|
|
|
- int zero_blocks = blocking_factor - new_blocks;
|
|
|
- memset (new_record + new_blocks, 0, BLOCKSIZE * zero_blocks);
|
|
|
- total_zero_blocks += zero_blocks;
|
|
|
- write_record (total_zero_blocks < 2);
|
|
|
+ if (sys_truncate (archive))
|
|
|
+ truncate_warn (archive_name_array[0]);
|
|
|
}
|
|
|
- while (total_zero_blocks < 2);
|
|
|
}
|
|
|
-
|
|
|
free (new_record);
|
|
|
|
|
|
- if (! acting_as_filter && ! _isrmt (archive))
|
|
|
- {
|
|
|
- if (sys_truncate (archive))
|
|
|
- truncate_warn (archive_name_array[0]);
|
|
|
- }
|
|
|
-
|
|
|
close_archive ();
|
|
|
names_notfound ();
|
|
|
}
|