/* Buffer management for tar.
- Copyright (C) 1988, 1992 Free Software Foundation
+ Copyright (C) 1988, 1992, 1993 Free Software Foundation
This file is part of GNU Tar.
{
int pipe[2];
int err = 0;
- int nar;
int kidpipe[2];
int kidchildpid;
{
if (err < 0)
{
- msg_perror ("can't write to compress");
+ msg_perror ("can't write to compression program");
exit (EX_SYSTEM);
}
else
- msg ("write to compress short %d bytes", count - err);
+ msg ("write to compression program short %d bytes",
+ count - err);
count = (err < 0) ? 0 : err;
}
ptr += count;
/* EOF */
if (err == 0)
{
- if (f_compress < 2)
+ if (!f_compress_block)
blocksize -= n;
else
bzero (ar_block->charptr + blocksize - n, n);
err = rmtwrite (archive, ar_block->charptr, blocksize);
if (err != (blocksize))
writeerror (err);
- if (f_compress < 2)
+ if (!f_compress_block)
blocksize += n;
break;
}
if (n)
{
- msg_perror ("can't read from compress");
+ msg_perror ("can't read from compression program");
exit (EX_SYSTEM);
}
err = rmtwrite (archive, ar_block->charptr, (int) blocksize);
}
/* So we should exec compress (-d) */
if (ar_reading)
- execlp ("compress", "compress", "-d", (char *) 0);
+ execlp (f_compressprog, f_compressprog, "-d", (char *) 0);
else
- execlp ("compress", "compress", (char *) 0);
- msg_perror ("can't exec compress");
+ execlp (f_compressprog, f_compressprog, (char *) 0);
+ msg_perror ("can't exec %s", f_compressprog);
_exit (EX_SYSTEM);
}
exit (EX_ARGSBAD);
}
- if (f_compress)
+ if (f_compressprog)
{
if (reading == 2 || f_verify)
{
sprintf (ar_block->header.arch_name, "%s Volume 1", f_volhdr);
else
strcpy (ar_block->header.arch_name, f_volhdr);
+ current_file_name = ar_block->header.arch_name;
ar_block->header.linkflag = LF_VOLHDR;
to_oct (time (0), 1 + 12, ar_block->header.mtime);
finish_header (ar_block);
if (WEXITSTATUS (status) == (SIGPIPE + 128))
{
/*
- * /bin/sh returns this if its child
- * dies with SIGPIPE. 'Sok.
- */
- break;
+ * /bin/sh returns this if its child
+ * dies with SIGPIPE. 'Sok.
+ */
+ /* Do nothing. */
}
else if (WEXITSTATUS (status))
msg ("child returned status %d",
#endif
/* Called to initialize the global volume number. */
-int
+void
init_volume_number ()
{
FILE *vf;
}
/* Called to write out the closing global volume number. */
-int
+void
closeout_volume_number ()
{
FILE *vf;
{
/* We have to prompt from now on. */
if (f_run_script_at_end)
- system (info_script);
+ {
+ closeout_volume_number ();
+ system (info_script);
+ }
else
for (;;)
{