/* Buffer management for tar.
- Copyright 1988, 92, 93, 94, 96, 97, 99, 2000 Free Software Foundation, Inc.
+
+ Copyright 1988, 1992, 1993, 1994, 1996, 1997, 1999, 2000, 2001 Free
+ Software Foundation, Inc.
+
Written by John Gilmore, on 1985-08-25.
This program is free software; you can redistribute it and/or modify it
#include "system.h"
#include <signal.h>
-#include <time.h>
-#ifndef time
-time_t time ();
-#endif
#if MSDOS
# include <process.h>
while (maximum)
{
count = maximum < BLOCKSIZE ? maximum : BLOCKSIZE;
- status = full_write (STDOUT_FILENO, cursor, count);
- if (status < 0)
+ if (full_write (STDOUT_FILENO, cursor, count) != count)
write_error (use_compress_program_option);
-
- if (status != count)
- {
- ERROR ((0, 0, _("Write to compression program short %lu bytes"),
- (unsigned long) (count - status)));
- count = status;
- }
-
cursor += count;
maximum -= count;
}
}
cursor = save_name + FILESYSTEM_PREFIX_LEN (save_name);
- while (*cursor == '/')
+ while (ISSLASH (*cursor))
cursor++;
assign_string (&real_s_name, cursor);
{
char *cursor = save_name + FILESYSTEM_PREFIX_LEN (save_name);
- while (*cursor == '/')
+ while (ISSLASH (*cursor))
cursor++;
assign_string (&real_s_name, cursor);
{
char *cursor = save_name + FILESYSTEM_PREFIX_LEN (save_name);
- while (*cursor == '/')
+ while (ISSLASH (*cursor))
cursor++;
assign_string (&real_s_name, cursor);
more = record_start->buffer + status;
left = record_size - status;
- while (left % BLOCKSIZE != 0)
+ while (left % BLOCKSIZE != 0
+ || (left && status && read_full_records_option))
{
if (status)
while ((status = rmtread (archive, more, left)) < 0)
if (status == 0)
{
- ERROR ((0, 0, _("%d garbage bytes ignored at end of archive"),
- (int) ((record_size - left) % BLOCKSIZE)));
+ if (left % BLOCKSIZE != 0)
+ ERROR ((0, 0, _("%d garbage bytes ignored at end of archive"),
+ (int) ((record_size - left) % BLOCKSIZE)));
break;
}
{
if (volno_file_option)
closeout_volume_number ();
- system (info_script_option);
+ if (system (info_script_option) != 0)
+ FATAL_ERROR ((0, 0, _("`%s' command failed"), info_script_option));
}
else
while (1)