coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Some question regarding tail and option "-c"


From: Jim Meyering
Subject: Re: Some question regarding tail and option "-c"
Date: Thu, 04 Oct 2012 10:14:15 +0200

Robert Milasan wrote:

> On Wed, 03 Oct 2012 20:09:26 +0200
> "Jim Meyering" <address@hidden> wrote:
>
>> There is some documentation on the effects of that variable
>> in "info coreutils":
>>
>>     2.13 Standards conformance
>>     ==========================
>>
>>     In a few cases, the GNU utilities' default behavior is
>> incompatible with the POSIX standard.  To suppress these
>> incompatibilities, define the `POSIXLY_CORRECT' environment
>> variable.  Unless you are checking for POSIX conformance, you
>> probably do not need to define `POSIXLY_CORRECT'.
>>
>>        Newer versions of POSIX are occasionally incompatible with
>> older versions.  For example, older versions of POSIX required the
>> command `sort +1' to sort based on the second and succeeding fields
>> in each input line, but starting with POSIX 1003.1-2001 the same
>> command is required to sort the file named `+1', and you must instead
>> use the command `sort -k 2' to get the field-based sort.
>>
>>        The GNU utilities normally conform to the version of POSIX
>> that is standard for your system.  To cause them to conform to a
>> different version of POSIX, define the `_POSIX2_VERSION' environment
>> variable to a value of the form YYYYMM specifying the year and month
>> the standard was adopted.  Three values are currently supported for
>>     `_POSIX2_VERSION': `199209' stands for POSIX 1003.2-1992, `200112'
>>     stands for POSIX 1003.1-2001, and `200809' stands for POSIX
>> 1003.1-2008. For example, if you have a newer system but are running
>> software that assumes an older version of POSIX and uses `sort +1' or
>> `tail +10', you can work around any compatibility problems by setting
>>     `_POSIX2_VERSION=199209' in your environment.
>
> This doesn't make sense, I can reproduce this on openSUSE 12.1 and 12.2
> with coreutils 8.14 and 8.16.
> I don't think we are using some old POSIX standard.

The "standard for your system" mentioned above is set via definitions
in glibc header files.

You can check by seeing how lib/posixver.c is compiled or by running
a command like the following.  Here's what I see on Fedora 17 and newer:

    $ gcc -x c -dD -E -include unistd.h /dev/null \
      |grep -E 'fine _?_POSIX2_(THIS_)?VERS'
    #define __POSIX2_THIS_VERSION 200809L
    #define _POSIX2_VERSION __POSIX2_THIS_VERSION

When in doubt, you can use gdb to trace through the code, too.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]