bin/121502: option -P appears to be broken in restore(8) since
FreeBSD 6.3 (regression)
Jaakko Heinonen
jh at saunalahti.fi
Mon Mar 24 15:40:03 UTC 2008
The following reply was made to PR bin/121502; it has been noted by GNATS.
From: Jaakko Heinonen <jh at saunalahti.fi>
To: Derek =?utf-8?B?S3VsacWEc2tp?= <takeda at takeda.tk>
Cc: bug-followup at FreeBSD.org
Subject: Re: bin/121502: option -P appears to be broken in restore(8) since
FreeBSD 6.3 (regression)
Date: Mon, 24 Mar 2008 17:35:23 +0200
--Q68bSM7Ycu6FN28Q
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
On 2008-03-23, Derek KuliÅski wrote:
> I would never thought that gzip was to blame for that...
Although this not a regression in restore(8) I think it's a bug in it.
restore(8) has a special block reading code for pipes. This code handles
short reads from pipes. However the code is only enabled if your source
file name is "-" (stdin) not when you use the -P switch.
Could you try the attached patch which enables the special handling for
pipes when using the -P switch?
--
Jaakko
--Q68bSM7Ycu6FN28Q
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment; filename="restore-pipeincmd-as-pipe.diff"
Index: tape.c
===================================================================
RCS file: /home/ncvs/src/sbin/restore/tape.c,v
retrieving revision 1.49
diff -p -u -r1.49 tape.c
--- tape.c 6 Mar 2007 08:13:20 -0000 1.49
+++ tape.c 24 Mar 2008 10:51:49 -0000
@@ -134,9 +134,10 @@ setinput(char *source, int ispipecommand
newtapebuf(NTREC > HIGHDENSITYTREC ? NTREC : HIGHDENSITYTREC);
terminal = stdin;
- if (ispipecommand)
+ if (ispipecommand) {
pipecmdin++;
- else
+ pipein++;
+ } else
#ifdef RRESTORE
if (strchr(source, ':')) {
host = source;
--Q68bSM7Ycu6FN28Q--
More information about the freebsd-bugs
mailing list