On Tue, 7 Nov 2006, Karel Kulhavy wrote:

> On Tue, Nov 07, 2006 at 08:14:09AM +0100, Otto Moerbeek wrote:
> > 
> > On Mon, 6 Nov 2006, Otto Moerbeek wrote:
> > 
> > > On Mon, 6 Nov 2006, Karel Kulhavy wrote:
> > > 
> > > > The behaviour of dd on OpenBSD 3.9 is noncompliant to it's own OpenBSD 
> > > > manpage:
> > > > 
> > > > OpenBSD:
> > > > [EMAIL PROTECTED]:~$ dd bs=1 skip=2 
> > > > 1234
> > > > 1234
> > > > 5+0 records in
> > > > 5+0 records out
> > > > 5 bytes transferred in 1.764 secs (3 bytes/sec)
> > > > 
> > > > Linux:
> > > > [EMAIL PROTECTED] ~ $ dd bs=1 skip=2
> > > > 1234
> > > > 34
> > > > 3+0 records in
> > > > 3+0 records out
> > > > 3 bytes (3 B) copied, 1.71841 seconds, 0.0 kB/s
> > > 
> > > Seeking a tty does not fail, but does not position the stream as well.
> > > 
> > > This fixes it. Note that echo "1234" | dd bs=1 skip=2 already works fine.
> > 
> > The fix was committed a minute ago. Thanks for the report.
> 
> Was the fix put into kernel, libc, or the dd utility?

The diff as sent out was committed.

        -Otto
> 
> CL<
> > 
> >     -Otto
> > 
> > > 
> > > Index: position.c
> > > ===================================================================
> > > RCS file: /cvs/src/bin/dd/position.c,v
> > > retrieving revision 1.7
> > > diff -u -p -r1.7 position.c
> > > --- position.c    11 Jun 2003 23:42:12 -0000      1.7
> > > +++ position.c    6 Nov 2006 12:07:54 -0000
> > > @@ -71,7 +71,7 @@ pos_in(void)
> > >   int warned;
> > >  
> > >   /* If not a pipe or tape device, try to seek on it. */
> > > - if (!(in.flags & (ISPIPE|ISTAPE))) {
> > > + if (!(in.flags & (ISPIPE|ISTAPE|ISCHR))) {
> > >           if (lseek(in.fd, in.offset * in.dbsz, SEEK_CUR) == -1)
> > >                   err(1, "%s", in.name);
> > >           return;

Reply via email to