GNU bug report logs - #11631
Head command does not position file pointer correctly for negative line count

Previous Next

Package: coreutils;

Reported by: Anoop Sharma <sendtoanoop <at> gmail.com>

Date: Tue, 5 Jun 2012 09:41:01 UTC

Severity: normal

Done: Jim Meyering <jim <at> meyering.net>

Bug is archived. No further changes may be made.

Full log


Message #37 received at 11631 <at> debbugs.gnu.org (full text, mbox):

From: Anoop Sharma <sendtoanoop <at> gmail.com>
To: 11631 <at> debbugs.gnu.org
Subject: Re: bug#11631: closed (Re: bug#11631: Head command does not position
	file pointer correctly for negative line count)
Date: Wed, 6 Jun 2012 09:30:11 +0530
1. The comment in code - "Don't bother testing for failure for such a
small amount. Any failure will be detected upon close." may be
re-looked too, since we are now lseeking after it.

What if we change plain fwrite to:
      if (fwrite (buffer, 1, n + 1, stdout) < (n + 1))
            error (EXIT_FAILURE, errno, _("write error"));

2. Maybe using lseek with SEEK_CUR in place of SEEK_SET would reflect
logic better.

With Thanks for quick responses,
Anoop

On Wed, Jun 6, 2012 at 2:08 AM, GNU bug Tracking System
<help-debbugs <at> gnu.org> wrote:
>
> Your bug report
>
> #11631: Head command does not position file pointer correctly for negative line count
>
> which was filed against the coreutils package, has been closed.
>
> The explanation is attached below, along with your original report.
> If you require more details, please reply to 11631 <at> debbugs.gnu.org.
>
> --
> 11631: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11631
> GNU Bug Tracking System
> Contact help-debbugs <at> gnu.org with problems
>
>
> ---------- Forwarded message ----------
> From: Jim Meyering <jim <at> meyering.net>
> To: Pádraig Brady <P <at> draigBrady.com>
> Cc: 11631-done <at> debbugs.gnu.org
> Date: Tue, 05 Jun 2012 22:35:13 +0200
> Subject: Re: bug#11631: Head command does not position file pointer correctly for negative line count
> Jim Meyering wrote:
> > Thanks, and thanks for the review.  Pushed.
>
> And with this message, I've closed the issue.
>
>
>
> ---------- Forwarded message ----------
> From: Anoop Sharma <sendtoanoop <at> gmail.com>
> To: bug-coreutils <at> gnu.org
> Cc:
> Date: Tue, 5 Jun 2012 15:07:19 +0530
> Subject: Head command does not position file pointer correctly for negative line count
> Head command does not position file pointer correctly for negative line count. Here is a demonstration of the problem.
>
> Step 1 - Create a file with 10 lines in it.
> $ yes "ABC" | head -c 40 >ip.txt
> $
>
> Step 2 - If head behaves correctly, then 2 lines should get printed after "------------" but nothing gets printed!
> $ (head -n -2; echo "------------------------"; cat) <ip.txt
> ABC
> ABC
> ABC
> ABC
> ABC
> ABC
> ABC
> ABC
> ------------------------
> $
>
> Step 3 - Another try fails. If head behaves correctly, then 8 lines should get printed after "------------" but nothing gets printed!
> $ (head -n -8; echo "------------------------"; cat) <ip.txt
> ABC
> ABC
> ------------------------
> $
>
>
>
> /*****************************************************************************************************************************/
> Possible cause of the defect -> Following snippet is copied from head.c (Function - elide_tail_lines_seekable ). Perhaps, there should be a lseek after fwrite there...:
>
>               /* Output the initial portion of the buffer
>                  in which we found the desired newline byte.
>                  Don't bother testing for failure for such a small amount.
>                  Any failure will be detected upon close.  */
>               fwrite (buffer, 1, n + 1, stdout);
> /*****************************************************************************************************************************/
>
>




This bug report was last modified 13 years and 46 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.