attempting to delete an unexisting member, the last
blocking_factor blocks were zeroed.
- 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
+ {
+ 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);
- if (! acting_as_filter && ! _isrmt (archive))
- {
- if (sys_truncate (archive))
- truncate_warn (archive_name_array[0]);
- }
-
close_archive ();
names_notfound ();
}
close_archive ();
names_notfound ();
}