Subject: bug#16329: `head --lines=-0' prints nothing if no newline at the EOF

From: Eric Blake <[email-masked]>
Date: Fri, 03 Jan 2014 09:57:25 -0700

On 01/03/2014 08:50 AM, Алексей Шилин wrote:
> Hi,
> 
> If one runs `head --lines=-0 somefile', he'll sometimes get no output instead of full file contents as
> expected after reading the manual:
> 
> -n, --lines=[-]K
>         print the first K lines instead of the first 10; with the lead‐
>         ing `-', print all but the last K lines of each file
> 
> It depends on whether the file has a trailing newline.

Per POSIX, 'head' is only required to operate on "text files"
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/head.html
and a "text file" must either be empty or have a trailing newline:
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_397

So this is not necessarily a bug.  That said, since POSIX doesn't
specify what we should do, we are free to make it behave differently.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org