summaryrefslogtreecommitdiff
path: root/src/sort.c
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2016-02-23 01:03:55 -0800
committerPaul Eggert <eggert@cs.ucla.edu>2016-02-23 01:05:10 -0800
commita7f5d3d6d671bb4e9117b1f72971a19eed135fed (patch)
tree2f993165a5edfc026e631e17ad3506475ae54de6 /src/sort.c
parent4c1995f1b673b0e1eae73a9db4e28016b86dee9e (diff)
downloadcoreutils-a7f5d3d6d671bb4e9117b1f72971a19eed135fed.tar.xz
all: be less strict about usage if POSIX 2008
sort, tail, and uniq now support traditional usage like 'sort +2' and 'tail +10' on systems conforming to POSIX 1003.1-2008 and later. * NEWS: Document this. * doc/coreutils.texi (Standards conformance, tail invocation) (sort invocation, uniq invocation, touch invocation): Document new behavior, or behavior's dependence on POSIX 1003.1-2001. * src/sort.c (struct keyfield.traditional_used): Rename from obsolete_used, since implementations are now allowed to support it. All uses changed. (main): Allow traditional usage if _POSIX2_VERSION is 200809. * src/tail.c (parse_obsolete_option): Distinguish between traditional usage (which POSIX 2008 and later allows) and obsolete (which it still does not). * src/uniq.c (strict_posix2): New function. (main): Allow traditional usage if _POSIX2_VERSION is 200809. * tests/misc/tail.pl: Test for new behavior.
Diffstat (limited to 'src/sort.c')
-rw-r--r--src/sort.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/sort.c b/src/sort.c
index 62acb6298..aa52b7569 100644
--- a/src/sort.c
+++ b/src/sort.c
@@ -224,7 +224,7 @@ struct keyfield
bool month; /* Flag for comparison by month name. */
bool reverse; /* Reverse the sense of comparison. */
bool version; /* sort by version number */
- bool obsolete_used; /* obsolescent key option format is used. */
+ bool traditional_used; /* Traditional key option format is used. */
struct keyfield *next; /* Next keyfield to try. */
};
@@ -2394,7 +2394,7 @@ key_warnings (struct keyfield const *gkey, bool gkey_only)
for (key = keylist; key; key = key->next, keynum++)
{
- if (key->obsolete_used)
+ if (key->traditional_used)
{
size_t sword = key->sword;
size_t eword = key->eword;
@@ -4183,7 +4183,8 @@ main (int argc, char **argv)
size_t nthreads = 0;
size_t nfiles = 0;
bool posixly_correct = (getenv ("POSIXLY_CORRECT") != NULL);
- bool obsolete_usage = (posix2_version () < 200112);
+ int posix_ver = posix2_version ();
+ bool traditional_usage = ! (200112 <= posix_ver && posix_ver < 200809);
char **files;
char *files_from = NULL;
struct Tokens tok;
@@ -4288,13 +4289,13 @@ main (int argc, char **argv)
{
/* Parse an operand as a file after "--" was seen; or if
pedantic and a file was seen, unless the POSIX version
- predates 1003.1-2001 and -c was not seen and the operand is
+ is not 1003.1-2001 and -c was not seen and the operand is
"-o FILE" or "-oFILE". */
int oi = -1;
if (c == -1
|| (posixly_correct && nfiles != 0
- && ! (obsolete_usage
+ && ! (traditional_usage
&& ! checkonly
&& optind != argc
&& argv[optind][0] == '-' && argv[optind][1] == 'o'
@@ -4315,8 +4316,8 @@ main (int argc, char **argv)
{
bool minus_pos_usage = (optind != argc && argv[optind][0] == '-'
&& ISDIGIT (argv[optind][1]));
- obsolete_usage |= minus_pos_usage && !posixly_correct;
- if (obsolete_usage)
+ traditional_usage |= minus_pos_usage && !posixly_correct;
+ if (traditional_usage)
{
/* Treat +POS1 [-POS2] as a key if possible; but silently
treat an operand as a file if it is not a valid +POS1. */
@@ -4356,7 +4357,7 @@ main (int argc, char **argv)
badfieldspec (optarg1,
N_("stray character in field spec"));
}
- key->obsolete_used = true;
+ key->traditional_used = true;
insertkey (key);
}
}