bug#78910: tail does not support -r added by POSIX.1-2024

Pádraig Brady <[email protected]>
Newsgroups gmane.comp.gnu.core-utils.bugs
Message-ID <[email protected]>
On 27/06/2025 10:10, Pádraig Brady wrote:
> On 27/06/2025 06:36, Collin Funk wrote:
>> Creating this bug report since I have not been able to create a working
>> implementation yet, and perhaps my looking into this will inspire others
>> thoughts...
>>
>> POSIX-1.2024 adds the following SYNOPSIS for 'tail' [1]:
>>
>>       tail [-f] [-c number|-n number] [file]
>>       tail -r [-n number] [file]
>>
>> Where the description for '-r' is:
>>
>>       Copy the lines in reverse order (last line first). If -n is
>>       specified, that many lines of the file, starting with the last line,
>>       shall be copied. If -n is not specified, every line of the input
>>       file shall be copied.
>>
>> In a simple implementation of 'tail', one that allocates an array to
>> store each line in memory, this would be easy to implement. However,
>> the Coreutils version reads the file in BUFSIZE/getpagesize() chunks
>> and then prints, repeating until completed. Therefore, we cannot just
>> modify the existing code to swap lines in memory.
>>
>> Collin
>>
>> [1] https://pubs.opengroup.org/onlinepubs/9799919799/utilities/tail.html
> 
> tail -r comes from the BSDs.
> Also the BSDs don't have tac(1) which overlaps in functionality quite a bit.
> I'm a bit surprised -r was added by POSIX, but fair enough.
> 
> Thanks for flagging this.

Note the GNU info doc on tail says:

"GNU ‘tail’ can output any amount of data (some other versions of

‘tail’ cannot).  It also has no ‘-r’ option (print in reverse), sincereversing a file is really a different job from printing the end of a
file; BSD ‘tail’ (which is the one with ‘-r’) can only reverse files
that are at most as large as its buffer, which is typically 32 KiB.  A
more reliable and versatile way to reverse files is the GNU ‘tac’
command.
"

BTW the POSIX tracker on this is:
https://www.austingroupbugs.net/view.php?id=877

cheers,
Padraig
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.