--- coreutils-5.91.orig/src/sort.c 2005-10-07 19:16:56 +0000 +++ coreutils-5.91/src/sort.c 2005-10-20 12:44:08 +0000 @@ -2218,7 +2218,7 @@ main (int argc, char **argv) { case 1: key = NULL; - if (obsolete_usage && optarg[0] == '+') + if ((obsolete_usage || !posixly_correct) && optarg[0] == '+') { /* Treat +POS1 [-POS2] as a key if possible; but silently treat an operand as a file if it is not a valid +POS1. */ --- coreutils-5.91.orig/src/tail.c 2005-10-14 13:56:44 +0000 +++ coreutils-5.91/src/tail.c 2005-10-20 12:47:51 +0000 @@ -1366,6 +1366,7 @@ parse_obsolete_option (int argc, char * const char *p = argv[1]; const char *n_string; const char *n_string_end; + bool posixly_correct; bool obsolete_usage; int default_count = DEFAULT_N_LINES; bool t_from_start; @@ -1378,6 +1379,7 @@ parse_obsolete_option (int argc, char * if (argc < 2) return false; + posixly_correct = (getenv ("POSIXLY_CORRECT") != NULL); obsolete_usage = (posix2_version () < 200112); switch (*p++) @@ -1387,7 +1389,7 @@ parse_obsolete_option (int argc, char * case '+': /* Leading "+" is a file name in the non-obsolete form. */ - if (!obsolete_usage) + if (!obsolete_usage && posixly_correct) return false; t_from_start = true; --- coreutils-5.91.orig/src/uniq.c 2005-07-05 07:38:37 +0000 +++ coreutils-5.91/src/uniq.c 2005-10-20 12:49:36 +0000 @@ -443,7 +443,7 @@ main (int argc, char **argv) { unsigned long int size; if (optarg[0] == '+' - && posix2_version () < 200112 + && (posix2_version () < 200112 || !posixly_correct) && xstrtoul (optarg, NULL, 10, &size, "") == LONGINT_OK && size <= SIZE_MAX) skip_chars = size;