This commit is contained in:
parent
e915ca7785
commit
769ab9e681
@ -1,5 +1,5 @@
|
||||
--- coreutils-6.9-316-e6f4b/lib/linebuffer.h
|
||||
+++ coreutils-6.9-316-e6f4b/lib/linebuffer.h
|
||||
--- coreutils-6.11/lib/linebuffer.h
|
||||
+++ coreutils-6.11/lib/linebuffer.h
|
||||
@@ -21,6 +21,11 @@
|
||||
|
||||
# include <stdio.h>
|
||||
@ -22,8 +22,8 @@
|
||||
};
|
||||
|
||||
/* Initialize linebuffer LINEBUFFER for use. */
|
||||
--- coreutils-6.9-316-e6f4b/src/cut.c
|
||||
+++ coreutils-6.9-316-e6f4b/src/cut.c
|
||||
--- coreutils-6.11/src/cut.c
|
||||
+++ coreutils-6.11/src/cut.c
|
||||
@@ -28,6 +28,12 @@
|
||||
#include <assert.h>
|
||||
#include <getopt.h>
|
||||
@ -607,8 +607,8 @@
|
||||
}
|
||||
|
||||
if (optind == argc)
|
||||
--- coreutils-6.9-316-e6f4b/src/expand.c
|
||||
+++ coreutils-6.9-316-e6f4b/src/expand.c
|
||||
--- coreutils-6.11/src/expand.c
|
||||
+++ coreutils-6.11/src/expand.c
|
||||
@@ -37,11 +37,31 @@
|
||||
#include <stdio.h>
|
||||
#include <getopt.h>
|
||||
@ -837,8 +837,8 @@
|
||||
|
||||
if (have_read_stdin && fclose (stdin) != 0)
|
||||
error (EXIT_FAILURE, errno, "-");
|
||||
--- coreutils-6.9-316-e6f4b/src/fold.c
|
||||
+++ coreutils-6.9-316-e6f4b/src/fold.c
|
||||
--- coreutils-6.11/src/fold.c
|
||||
+++ coreutils-6.11/src/fold.c
|
||||
@@ -22,6 +22,19 @@
|
||||
#include <getopt.h>
|
||||
#include <sys/types.h>
|
||||
@ -1254,8 +1254,8 @@
|
||||
break;
|
||||
|
||||
case 's': /* Break at word boundaries. */
|
||||
--- coreutils-6.9-316-e6f4b/src/join.c
|
||||
+++ coreutils-6.9-316-e6f4b/src/join.c
|
||||
--- coreutils-6.11/src/join.c
|
||||
+++ coreutils-6.11/src/join.c
|
||||
@@ -22,6 +22,16 @@
|
||||
#include <sys/types.h>
|
||||
#include <getopt.h>
|
||||
@ -1273,9 +1273,9 @@
|
||||
#include "system.h"
|
||||
#include "error.h"
|
||||
#include "hard-locale.h"
|
||||
@@ -32,6 +42,11 @@
|
||||
#include "xmemcoll.h"
|
||||
@@ -33,6 +43,11 @@
|
||||
#include "xstrtol.h"
|
||||
#include "argmatch.h"
|
||||
|
||||
+/* Some systems, like BeOS, have multibyte encodings but lack mbstate_t. */
|
||||
+#if HAVE_MBRTOWC && defined mbstate_t
|
||||
@ -1285,7 +1285,7 @@
|
||||
/* The official name of this program (e.g., no `g' prefix). */
|
||||
#define PROGRAM_NAME "join"
|
||||
|
||||
@@ -103,10 +118,13 @@ static struct outlist outlist_head;
|
||||
@@ -113,10 +128,13 @@ static struct outlist outlist_head;
|
||||
/* Last element in `outlist', where a new element can be added. */
|
||||
static struct outlist *outlist_end = &outlist_head;
|
||||
|
||||
@ -1299,9 +1299,9 @@
|
||||
+/* The number of bytes used for tab. */
|
||||
+static size_t tablen = 0;
|
||||
|
||||
static struct option const longopts[] =
|
||||
{
|
||||
@@ -198,10 +216,10 @@ xfields (struct line *line)
|
||||
/* If nonzero, check that the input is correctly ordered. */
|
||||
static enum
|
||||
@@ -230,10 +248,10 @@ xfields (struct line *line)
|
||||
if (ptr == lim)
|
||||
return;
|
||||
|
||||
@ -1314,8 +1314,146 @@
|
||||
extract_field (line, ptr, sep - ptr);
|
||||
}
|
||||
else
|
||||
@@ -228,6 +246,133 @@ xfields (struct line *line)
|
||||
extract_field (line, ptr, lim - ptr);
|
||||
@@ -305,56 +323,115 @@ keycmp (struct line const *line1, struct
|
||||
size_t jf_1, size_t jf_2)
|
||||
{
|
||||
/* Start of field to compare in each file. */
|
||||
- char *beg1;
|
||||
- char *beg2;
|
||||
-
|
||||
- size_t len1;
|
||||
- size_t len2; /* Length of fields to compare. */
|
||||
+ char *beg[2];
|
||||
+ char *copy[2];
|
||||
+ size_t len[2]; /* Length of fields to compare. */
|
||||
int diff;
|
||||
+ int i, j;
|
||||
|
||||
if (jf_1 < line1->nfields)
|
||||
{
|
||||
- beg1 = line1->fields[jf_1].beg;
|
||||
- len1 = line1->fields[jf_1].len;
|
||||
+ beg[0] = line1->fields[jf_1].beg;
|
||||
+ len[0] = line1->fields[jf_1].len;
|
||||
}
|
||||
else
|
||||
{
|
||||
- beg1 = NULL;
|
||||
- len1 = 0;
|
||||
+ beg[0] = NULL;
|
||||
+ len[0] = 0;
|
||||
}
|
||||
|
||||
if (jf_2 < line2->nfields)
|
||||
{
|
||||
- beg2 = line2->fields[jf_2].beg;
|
||||
- len2 = line2->fields[jf_2].len;
|
||||
+ beg[1] = line2->fields[jf_2].beg;
|
||||
+ len[1] = line2->fields[jf_2].len;
|
||||
}
|
||||
else
|
||||
{
|
||||
- beg2 = NULL;
|
||||
- len2 = 0;
|
||||
+ beg[1] = NULL;
|
||||
+ len[1] = 0;
|
||||
}
|
||||
|
||||
- if (len1 == 0)
|
||||
- return len2 == 0 ? 0 : -1;
|
||||
- if (len2 == 0)
|
||||
+ if (len[0] == 0)
|
||||
+ return len[1] == 0 ? 0 : -1;
|
||||
+ if (len[1] == 0)
|
||||
return 1;
|
||||
|
||||
if (ignore_case)
|
||||
{
|
||||
- /* FIXME: ignore_case does not work with NLS (in particular,
|
||||
- with multibyte chars). */
|
||||
- diff = memcasecmp (beg1, beg2, MIN (len1, len2));
|
||||
+#ifdef HAVE_MBRTOWC
|
||||
+ if (MB_CUR_MAX > 1)
|
||||
+ {
|
||||
+ size_t mblength;
|
||||
+ wchar_t wc, uwc;
|
||||
+ mbstate_t state, state_bak;
|
||||
+
|
||||
+ memset (&state, '\0', sizeof (mbstate_t));
|
||||
+
|
||||
+ for (i = 0; i < 2; i++)
|
||||
+ {
|
||||
+ copy[i] = alloca (len[i] + 1);
|
||||
+
|
||||
+ for (j = 0; j < MIN (len[0], len[1]);)
|
||||
+ {
|
||||
+ state_bak = state;
|
||||
+ mblength = mbrtowc (&wc, beg[i] + j, len[i] - j, &state);
|
||||
+
|
||||
+ switch (mblength)
|
||||
+ {
|
||||
+ case (size_t) -1:
|
||||
+ case (size_t) -2:
|
||||
+ state = state_bak;
|
||||
+ /* Fall through */
|
||||
+ case 0:
|
||||
+ mblength = 1;
|
||||
+ break;
|
||||
+
|
||||
+ default:
|
||||
+ uwc = towupper (wc);
|
||||
+
|
||||
+ if (uwc != wc)
|
||||
+ {
|
||||
+ mbstate_t state_wc;
|
||||
+
|
||||
+ memset (&state_wc, '\0', sizeof (mbstate_t));
|
||||
+ wcrtomb (copy[i] + j, uwc, &state_wc);
|
||||
+ }
|
||||
+ else
|
||||
+ memcpy (copy[i] + j, beg[i] + j, mblength);
|
||||
+ }
|
||||
+ j += mblength;
|
||||
+ }
|
||||
+ copy[i][j] = '\0';
|
||||
+ }
|
||||
+ return xmemcoll (copy[0], len[0], copy[1], len[1]);
|
||||
+ }
|
||||
+#endif
|
||||
+ if (hard_LC_COLLATE)
|
||||
+ {
|
||||
+ for (i = 0; i < 2; i++)
|
||||
+ {
|
||||
+ copy[i] = alloca (len[i] + 1);
|
||||
+
|
||||
+ for (j = 0; j < MIN (len[0], len[1]); j++)
|
||||
+ copy[i][j] = toupper (beg[i][j]);
|
||||
+
|
||||
+ copy[i][j] = '\0';
|
||||
+ }
|
||||
+ return xmemcoll (copy[0], len[0], copy[1], len[1]);
|
||||
+ }
|
||||
+ else
|
||||
+ diff = memcasecmp (beg[0], beg[1], MIN (len[0], len[1]));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (hard_LC_COLLATE)
|
||||
- return xmemcoll (beg1, len1, beg2, len2);
|
||||
- diff = memcmp (beg1, beg2, MIN (len1, len2));
|
||||
+ return xmemcoll (beg[0], len[0], beg[1], len[1]);
|
||||
+ diff = memcmp (beg[0], beg[1], MIN (len[0], len[1]));
|
||||
}
|
||||
|
||||
if (diff)
|
||||
return diff;
|
||||
- return len1 < len2 ? -1 : len1 != len2;
|
||||
+ return len[0] < len[1] ? -1 : len[0] != len[1];
|
||||
}
|
||||
|
||||
/* Check that successive input lines PREV and CURRENT from input file
|
||||
@@ -393,6 +470,133 @@ check_order (const struct line *prev,
|
||||
}
|
||||
}
|
||||
|
||||
+#if HAVE_MBRTOWC
|
||||
@ -1448,7 +1586,7 @@
|
||||
/* Read a line from FP into LINE and split it into fields.
|
||||
Return true if successful. */
|
||||
|
||||
@@ -248,7 +393,13 @@ get_line (FILE *fp, struct line *line)
|
||||
@@ -413,7 +617,13 @@ get_line (FILE *fp, struct line *line, i
|
||||
line->nfields_allocated = 0;
|
||||
line->nfields = 0;
|
||||
line->fields = NULL;
|
||||
@ -1460,148 +1598,10 @@
|
||||
+ else
|
||||
+#endif
|
||||
+ xfields (line);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -302,56 +453,115 @@ static int
|
||||
keycmp (struct line const *line1, struct line const *line2)
|
||||
{
|
||||
/* Start of field to compare in each file. */
|
||||
- char *beg1;
|
||||
- char *beg2;
|
||||
-
|
||||
- size_t len1;
|
||||
- size_t len2; /* Length of fields to compare. */
|
||||
+ char *beg[2];
|
||||
+ char *copy[2];
|
||||
+ size_t len[2]; /* Length of fields to compare. */
|
||||
int diff;
|
||||
+ int i, j;
|
||||
|
||||
if (join_field_1 < line1->nfields)
|
||||
if (prevline[which - 1])
|
||||
{
|
||||
- beg1 = line1->fields[join_field_1].beg;
|
||||
- len1 = line1->fields[join_field_1].len;
|
||||
+ beg[0] = line1->fields[join_field_1].beg;
|
||||
+ len[0] = line1->fields[join_field_1].len;
|
||||
}
|
||||
else
|
||||
{
|
||||
- beg1 = NULL;
|
||||
- len1 = 0;
|
||||
+ beg[0] = NULL;
|
||||
+ len[0] = 0;
|
||||
}
|
||||
|
||||
if (join_field_2 < line2->nfields)
|
||||
{
|
||||
- beg2 = line2->fields[join_field_2].beg;
|
||||
- len2 = line2->fields[join_field_2].len;
|
||||
+ beg[1] = line2->fields[join_field_2].beg;
|
||||
+ len[1] = line2->fields[join_field_2].len;
|
||||
}
|
||||
else
|
||||
{
|
||||
- beg2 = NULL;
|
||||
- len2 = 0;
|
||||
+ beg[1] = NULL;
|
||||
+ len[1] = 0;
|
||||
}
|
||||
|
||||
- if (len1 == 0)
|
||||
- return len2 == 0 ? 0 : -1;
|
||||
- if (len2 == 0)
|
||||
+ if (len[0] == 0)
|
||||
+ return len[1] == 0 ? 0 : -1;
|
||||
+ if (len[1] == 0)
|
||||
return 1;
|
||||
|
||||
if (ignore_case)
|
||||
{
|
||||
- /* FIXME: ignore_case does not work with NLS (in particular,
|
||||
- with multibyte chars). */
|
||||
- diff = memcasecmp (beg1, beg2, MIN (len1, len2));
|
||||
+#ifdef HAVE_MBRTOWC
|
||||
+ if (MB_CUR_MAX > 1)
|
||||
+ {
|
||||
+ size_t mblength;
|
||||
+ wchar_t wc, uwc;
|
||||
+ mbstate_t state, state_bak;
|
||||
+
|
||||
+ memset (&state, '\0', sizeof (mbstate_t));
|
||||
+
|
||||
+ for (i = 0; i < 2; i++)
|
||||
+ {
|
||||
+ copy[i] = alloca (len[i] + 1);
|
||||
+
|
||||
+ for (j = 0; j < MIN (len[0], len[1]);)
|
||||
+ {
|
||||
+ state_bak = state;
|
||||
+ mblength = mbrtowc (&wc, beg[i] + j, len[i] - j, &state);
|
||||
+
|
||||
+ switch (mblength)
|
||||
+ {
|
||||
+ case (size_t) -1:
|
||||
+ case (size_t) -2:
|
||||
+ state = state_bak;
|
||||
+ /* Fall through */
|
||||
+ case 0:
|
||||
+ mblength = 1;
|
||||
+ break;
|
||||
+
|
||||
+ default:
|
||||
+ uwc = towupper (wc);
|
||||
+
|
||||
+ if (uwc != wc)
|
||||
+ {
|
||||
+ mbstate_t state_wc;
|
||||
+
|
||||
+ memset (&state_wc, '\0', sizeof (mbstate_t));
|
||||
+ wcrtomb (copy[i] + j, uwc, &state_wc);
|
||||
+ }
|
||||
+ else
|
||||
+ memcpy (copy[i] + j, beg[i] + j, mblength);
|
||||
+ }
|
||||
+ j += mblength;
|
||||
+ }
|
||||
+ copy[i][j] = '\0';
|
||||
+ }
|
||||
+ return xmemcoll (copy[0], len[0], copy[1], len[1]);
|
||||
+ }
|
||||
+#endif
|
||||
+ if (hard_LC_COLLATE)
|
||||
+ {
|
||||
+ for (i = 0; i < 2; i++)
|
||||
+ {
|
||||
+ copy[i] = alloca (len[i] + 1);
|
||||
+
|
||||
+ for (j = 0; j < MIN (len[0], len[1]); j++)
|
||||
+ copy[i][j] = toupper (beg[i][j]);
|
||||
+
|
||||
+ copy[i][j] = '\0';
|
||||
+ }
|
||||
+ return xmemcoll (copy[0], len[0], copy[1], len[1]);
|
||||
+ }
|
||||
+ else
|
||||
+ diff = memcasecmp (beg[0], beg[1], MIN (len[0], len[1]));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (hard_LC_COLLATE)
|
||||
- return xmemcoll (beg1, len1, beg2, len2);
|
||||
- diff = memcmp (beg1, beg2, MIN (len1, len2));
|
||||
+ return xmemcoll (beg[0], len[0], beg[1], len[1]);
|
||||
+ diff = memcmp (beg[0], beg[1], MIN (len[0], len[1]));
|
||||
}
|
||||
|
||||
if (diff)
|
||||
return diff;
|
||||
- return len1 < len2 ? -1 : len1 != len2;
|
||||
+ return len[0] < len[1] ? -1 : len[0] != len[1];
|
||||
}
|
||||
|
||||
/* Print field N of LINE if it exists and is nonempty, otherwise
|
||||
@@ -380,7 +590,8 @@ static void
|
||||
@@ -513,7 +723,8 @@ static void
|
||||
prjoin (struct line const *line1, struct line const *line2)
|
||||
{
|
||||
const struct outlist *outlist;
|
||||
@ -1611,7 +1611,7 @@
|
||||
|
||||
outlist = outlist_head.next;
|
||||
if (outlist)
|
||||
@@ -415,7 +626,7 @@ prjoin (struct line const *line1, struct
|
||||
@@ -548,7 +759,7 @@ prjoin (struct line const *line1, struct
|
||||
o = o->next;
|
||||
if (o == NULL)
|
||||
break;
|
||||
@ -1620,7 +1620,7 @@
|
||||
}
|
||||
putchar ('\n');
|
||||
}
|
||||
@@ -433,23 +644,23 @@ prjoin (struct line const *line1, struct
|
||||
@@ -566,23 +777,23 @@ prjoin (struct line const *line1, struct
|
||||
prfield (join_field_1, line1);
|
||||
for (i = 0; i < join_field_1 && i < line1->nfields; ++i)
|
||||
{
|
||||
@ -1648,7 +1648,7 @@
|
||||
prfield (i, line2);
|
||||
}
|
||||
putchar ('\n');
|
||||
@@ -858,20 +1069,40 @@ main (int argc, char **argv)
|
||||
@@ -1016,20 +1227,40 @@ main (int argc, char **argv)
|
||||
|
||||
case 't':
|
||||
{
|
||||
@ -1694,8 +1694,8 @@
|
||||
}
|
||||
break;
|
||||
|
||||
--- coreutils-6.9-316-e6f4b/src/pr.c
|
||||
+++ coreutils-6.9-316-e6f4b/src/pr.c
|
||||
--- coreutils-6.11/src/pr.c
|
||||
+++ coreutils-6.11/src/pr.c
|
||||
@@ -312,6 +312,32 @@
|
||||
|
||||
#include <getopt.h>
|
||||
@ -1729,7 +1729,7 @@
|
||||
#include "system.h"
|
||||
#include "error.h"
|
||||
#include "hard-locale.h"
|
||||
@@ -323,6 +349,18 @@
|
||||
@@ -322,6 +348,18 @@
|
||||
#include "strftime.h"
|
||||
#include "xstrtol.h"
|
||||
|
||||
@ -1748,7 +1748,7 @@
|
||||
/* The official name of this program (e.g., no `g' prefix). */
|
||||
#define PROGRAM_NAME "pr"
|
||||
|
||||
@@ -414,8 +452,21 @@ struct COLUMN
|
||||
@@ -413,8 +451,21 @@ struct COLUMN
|
||||
typedef struct COLUMN COLUMN;
|
||||
|
||||
#define NULLCOL (COLUMN *)0
|
||||
@ -1771,7 +1771,7 @@
|
||||
static bool read_line (COLUMN *p);
|
||||
static bool print_page (void);
|
||||
static bool print_stored (COLUMN *p);
|
||||
@@ -425,6 +476,7 @@ static void print_header (void);
|
||||
@@ -424,6 +475,7 @@ static void print_header (void);
|
||||
static void pad_across_to (int position);
|
||||
static void add_line_number (COLUMN *p);
|
||||
static void getoptarg (char *arg, char switch_char, char *character,
|
||||
@ -1779,7 +1779,7 @@
|
||||
int *number);
|
||||
void usage (int status);
|
||||
static void print_files (int number_of_files, char **av);
|
||||
@@ -439,7 +491,6 @@ static void store_char (char c);
|
||||
@@ -438,7 +490,6 @@ static void store_char (char c);
|
||||
static void pad_down (int lines);
|
||||
static void read_rest_of_line (COLUMN *p);
|
||||
static void skip_read (COLUMN *p, int column_number);
|
||||
@ -1787,7 +1787,7 @@
|
||||
static void cleanup (void);
|
||||
static void print_sep_string (void);
|
||||
static void separator_string (const char *optarg_S);
|
||||
@@ -454,7 +505,7 @@ static COLUMN *column_vector;
|
||||
@@ -453,7 +504,7 @@ static COLUMN *column_vector;
|
||||
we store the leftmost columns contiguously in buff.
|
||||
To print a line from buff, get the index of the first character
|
||||
from line_vector[i], and print up to line_vector[i + 1]. */
|
||||
@ -1796,7 +1796,7 @@
|
||||
|
||||
/* Index of the position in buff where the next character
|
||||
will be stored. */
|
||||
@@ -558,7 +609,7 @@ static int chars_per_column;
|
||||
@@ -557,7 +608,7 @@ static int chars_per_column;
|
||||
static bool untabify_input = false;
|
||||
|
||||
/* (-e) The input tab character. */
|
||||
@ -1805,7 +1805,7 @@
|
||||
|
||||
/* (-e) Tabstops are at chars_per_tab, 2*chars_per_tab, 3*chars_per_tab, ...
|
||||
where the leftmost column is 1. */
|
||||
@@ -568,7 +619,10 @@ static int chars_per_input_tab = 8;
|
||||
@@ -567,7 +618,10 @@ static int chars_per_input_tab = 8;
|
||||
static bool tabify_output = false;
|
||||
|
||||
/* (-i) The output tab character. */
|
||||
@ -1817,7 +1817,7 @@
|
||||
|
||||
/* (-i) The width of the output tab. */
|
||||
static int chars_per_output_tab = 8;
|
||||
@@ -642,7 +696,13 @@ static int power_10;
|
||||
@@ -641,7 +695,13 @@ static int power_10;
|
||||
static bool numbered_lines = false;
|
||||
|
||||
/* (-n) Character which follows each line number. */
|
||||
@ -1832,7 +1832,7 @@
|
||||
|
||||
/* (-n) line counting starts with 1st line of input file (not with 1st
|
||||
line of 1st page printed). */
|
||||
@@ -695,6 +755,7 @@ static bool use_col_separator = false;
|
||||
@@ -694,6 +754,7 @@ static bool use_col_separator = false;
|
||||
-a|COLUMN|-m is a `space' and with the -J option a `tab'. */
|
||||
static char *col_sep_string = "";
|
||||
static int col_sep_length = 0;
|
||||
@ -1840,7 +1840,7 @@
|
||||
static char *column_separator = " ";
|
||||
static char *line_separator = "\t";
|
||||
|
||||
@@ -851,6 +912,13 @@ separator_string (const char *optarg_S)
|
||||
@@ -850,6 +911,13 @@ separator_string (const char *optarg_S)
|
||||
col_sep_length = (int) strlen (optarg_S);
|
||||
col_sep_string = xmalloc (col_sep_length + 1);
|
||||
strcpy (col_sep_string, optarg_S);
|
||||
@ -1854,7 +1854,7 @@
|
||||
}
|
||||
|
||||
int
|
||||
@@ -875,6 +943,21 @@ main (int argc, char **argv)
|
||||
@@ -874,6 +942,21 @@ main (int argc, char **argv)
|
||||
|
||||
atexit (close_stdout);
|
||||
|
||||
@ -1876,7 +1876,7 @@
|
||||
n_files = 0;
|
||||
file_names = (argc > 1
|
||||
? xmalloc ((argc - 1) * sizeof (char *))
|
||||
@@ -951,8 +1034,12 @@ main (int argc, char **argv)
|
||||
@@ -950,8 +1033,12 @@ main (int argc, char **argv)
|
||||
break;
|
||||
case 'e':
|
||||
if (optarg)
|
||||
@ -1891,7 +1891,7 @@
|
||||
/* Could check tab width > 0. */
|
||||
untabify_input = true;
|
||||
break;
|
||||
@@ -965,8 +1052,12 @@ main (int argc, char **argv)
|
||||
@@ -964,8 +1051,12 @@ main (int argc, char **argv)
|
||||
break;
|
||||
case 'i':
|
||||
if (optarg)
|
||||
@ -1906,7 +1906,7 @@
|
||||
/* Could check tab width > 0. */
|
||||
tabify_output = true;
|
||||
break;
|
||||
@@ -993,8 +1084,8 @@ main (int argc, char **argv)
|
||||
@@ -992,8 +1083,8 @@ main (int argc, char **argv)
|
||||
case 'n':
|
||||
numbered_lines = true;
|
||||
if (optarg)
|
||||
@ -1917,7 +1917,7 @@
|
||||
break;
|
||||
case 'N':
|
||||
skip_count = false;
|
||||
@@ -1033,7 +1124,7 @@ main (int argc, char **argv)
|
||||
@@ -1032,7 +1123,7 @@ main (int argc, char **argv)
|
||||
old_s = false;
|
||||
/* Reset an additional input of -s, -S dominates -s */
|
||||
col_sep_string = "";
|
||||
@ -1926,7 +1926,7 @@
|
||||
use_col_separator = true;
|
||||
if (optarg)
|
||||
separator_string (optarg);
|
||||
@@ -1190,10 +1281,45 @@ main (int argc, char **argv)
|
||||
@@ -1189,10 +1280,45 @@ main (int argc, char **argv)
|
||||
a number. */
|
||||
|
||||
static void
|
||||
@ -1974,7 +1974,7 @@
|
||||
if (*arg)
|
||||
{
|
||||
long int tmp_long;
|
||||
@@ -1252,7 +1378,7 @@ init_parameters (int number_of_files)
|
||||
@@ -1251,7 +1377,7 @@ init_parameters (int number_of_files)
|
||||
else
|
||||
col_sep_string = column_separator;
|
||||
|
||||
@ -1983,7 +1983,7 @@
|
||||
use_col_separator = true;
|
||||
}
|
||||
/* It's rather pointless to define a TAB separator with column
|
||||
@@ -1283,11 +1409,11 @@ init_parameters (int number_of_files)
|
||||
@@ -1282,11 +1408,11 @@ init_parameters (int number_of_files)
|
||||
TAB_WIDTH (chars_per_input_tab, chars_per_number); */
|
||||
|
||||
/* Estimate chars_per_text without any margin and keep it constant. */
|
||||
@ -1997,7 +1997,7 @@
|
||||
|
||||
/* The number is part of the column width unless we are
|
||||
printing files in parallel. */
|
||||
@@ -1302,7 +1428,7 @@ init_parameters (int number_of_files)
|
||||
@@ -1301,7 +1427,7 @@ init_parameters (int number_of_files)
|
||||
}
|
||||
|
||||
chars_per_column = (chars_per_line - chars_used_by_number -
|
||||
@ -2006,7 +2006,7 @@
|
||||
|
||||
if (chars_per_column < 1)
|
||||
error (EXIT_FAILURE, 0, _("page width too narrow"));
|
||||
@@ -1427,7 +1553,7 @@ init_funcs (void)
|
||||
@@ -1426,7 +1552,7 @@ init_funcs (void)
|
||||
|
||||
/* Enlarge p->start_position of first column to use the same form of
|
||||
padding_not_printed with all columns. */
|
||||
@ -2015,7 +2015,7 @@
|
||||
|
||||
/* This loop takes care of all but the rightmost column. */
|
||||
|
||||
@@ -1461,7 +1587,7 @@ init_funcs (void)
|
||||
@@ -1460,7 +1586,7 @@ init_funcs (void)
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2024,7 +2024,7 @@
|
||||
h_next = h + chars_per_column;
|
||||
}
|
||||
}
|
||||
@@ -1751,9 +1877,9 @@ static void
|
||||
@@ -1750,9 +1876,9 @@ static void
|
||||
align_column (COLUMN *p)
|
||||
{
|
||||
padding_not_printed = p->start_position;
|
||||
@ -2036,7 +2036,7 @@
|
||||
padding_not_printed = ANYWHERE;
|
||||
}
|
||||
|
||||
@@ -2024,13 +2150,13 @@ store_char (char c)
|
||||
@@ -2023,13 +2149,13 @@ store_char (char c)
|
||||
/* May be too generous. */
|
||||
buff = X2REALLOC (buff, &buff_allocated);
|
||||
}
|
||||
@ -2052,7 +2052,7 @@
|
||||
char *s;
|
||||
int left_cut;
|
||||
|
||||
@@ -2053,22 +2179,24 @@ add_line_number (COLUMN *p)
|
||||
@@ -2052,22 +2178,24 @@ add_line_number (COLUMN *p)
|
||||
/* Tabification is assumed for multiple columns, also for n-separators,
|
||||
but `default n-separator = TAB' hasn't been given priority over
|
||||
equal column_width also specified by POSIX. */
|
||||
@ -2081,7 +2081,7 @@
|
||||
output_position = POS_AFTER_TAB (chars_per_output_tab,
|
||||
output_position);
|
||||
}
|
||||
@@ -2229,7 +2357,7 @@ print_white_space (void)
|
||||
@@ -2228,7 +2356,7 @@ print_white_space (void)
|
||||
while (goal - h_old > 1
|
||||
&& (h_new = POS_AFTER_TAB (chars_per_output_tab, h_old)) <= goal)
|
||||
{
|
||||
@ -2090,7 +2090,7 @@
|
||||
h_old = h_new;
|
||||
}
|
||||
while (++h_old <= goal)
|
||||
@@ -2249,6 +2377,7 @@ print_sep_string (void)
|
||||
@@ -2248,6 +2376,7 @@ print_sep_string (void)
|
||||
{
|
||||
char *s;
|
||||
int l = col_sep_length;
|
||||
@ -2098,7 +2098,7 @@
|
||||
|
||||
s = col_sep_string;
|
||||
|
||||
@@ -2262,6 +2391,7 @@ print_sep_string (void)
|
||||
@@ -2261,6 +2390,7 @@ print_sep_string (void)
|
||||
{
|
||||
for (; separators_not_printed > 0; --separators_not_printed)
|
||||
{
|
||||
@ -2106,7 +2106,7 @@
|
||||
while (l-- > 0)
|
||||
{
|
||||
/* 3 types of sep_strings: spaces only, spaces and chars,
|
||||
@@ -2275,12 +2405,15 @@ print_sep_string (void)
|
||||
@@ -2274,12 +2404,15 @@ print_sep_string (void)
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2123,7 +2123,7 @@
|
||||
/* sep_string ends with some spaces */
|
||||
if (spaces_not_printed > 0)
|
||||
print_white_space ();
|
||||
@@ -2307,8 +2440,9 @@ print_clump (COLUMN *p, int n, char *clu
|
||||
@@ -2306,8 +2439,9 @@ print_clump (COLUMN *p, int n, char *clu
|
||||
a nonspace is encountered, call print_white_space() to print the
|
||||
required number of tabs and spaces. */
|
||||
|
||||
@ -2134,7 +2134,7 @@
|
||||
{
|
||||
if (tabify_output)
|
||||
{
|
||||
@@ -2332,6 +2466,75 @@ print_char (char c)
|
||||
@@ -2331,6 +2465,75 @@ print_char (char c)
|
||||
putchar (c);
|
||||
}
|
||||
|
||||
@ -2210,7 +2210,7 @@
|
||||
/* Skip to page PAGE before printing.
|
||||
PAGE may be larger than total number of pages. */
|
||||
|
||||
@@ -2509,9 +2712,9 @@ read_line (COLUMN *p)
|
||||
@@ -2508,9 +2711,9 @@ read_line (COLUMN *p)
|
||||
align_empty_cols = false;
|
||||
}
|
||||
|
||||
@ -2222,7 +2222,7 @@
|
||||
padding_not_printed = ANYWHERE;
|
||||
}
|
||||
|
||||
@@ -2612,9 +2815,9 @@ print_stored (COLUMN *p)
|
||||
@@ -2611,9 +2814,9 @@ print_stored (COLUMN *p)
|
||||
}
|
||||
}
|
||||
|
||||
@ -2234,7 +2234,7 @@
|
||||
padding_not_printed = ANYWHERE;
|
||||
}
|
||||
|
||||
@@ -2627,8 +2830,8 @@ print_stored (COLUMN *p)
|
||||
@@ -2626,8 +2829,8 @@ print_stored (COLUMN *p)
|
||||
if (spaces_not_printed == 0)
|
||||
{
|
||||
output_position = p->start_position + end_vector[line];
|
||||
@ -2245,7 +2245,7 @@
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -2646,8 +2849,9 @@ print_stored (COLUMN *p)
|
||||
@@ -2645,8 +2848,9 @@ print_stored (COLUMN *p)
|
||||
characters in clump_buff. (e.g, the width of '\b' is -1, while the
|
||||
number of characters is 1.) */
|
||||
|
||||
@ -2256,7 +2256,7 @@
|
||||
{
|
||||
unsigned char uc = c;
|
||||
char *s = clump_buff;
|
||||
@@ -2657,10 +2861,10 @@ char_to_clump (char c)
|
||||
@@ -2656,10 +2860,10 @@ char_to_clump (char c)
|
||||
int chars;
|
||||
int chars_per_c = 8;
|
||||
|
||||
@ -2269,7 +2269,7 @@
|
||||
{
|
||||
width = TAB_WIDTH (chars_per_c, input_position);
|
||||
|
||||
@@ -2731,6 +2935,155 @@ char_to_clump (char c)
|
||||
@@ -2740,6 +2944,155 @@ char_to_clump (char c)
|
||||
return chars;
|
||||
}
|
||||
|
||||
@ -2425,8 +2425,8 @@
|
||||
/* We've just printed some files and need to clean up things before
|
||||
looking for more options and printing the next batch of files.
|
||||
|
||||
--- coreutils-6.9-316-e6f4b/src/sort.c
|
||||
+++ coreutils-6.9-316-e6f4b/src/sort.c
|
||||
--- coreutils-6.11/src/sort.c
|
||||
+++ coreutils-6.11/src/sort.c
|
||||
@@ -26,6 +26,19 @@
|
||||
#include <sys/types.h>
|
||||
#include <sys/wait.h>
|
||||
@ -2523,7 +2523,7 @@
|
||||
|
||||
/* Flag to remove consecutive duplicate lines from the output.
|
||||
Only the last of a sequence of equal lines will be output. */
|
||||
@@ -638,6 +684,43 @@ reap_some (void)
|
||||
@@ -653,6 +699,43 @@ reap_some (void)
|
||||
update_proc (pid);
|
||||
}
|
||||
|
||||
@ -2567,7 +2567,7 @@
|
||||
/* Clean up any remaining temporary files. */
|
||||
|
||||
static void
|
||||
@@ -977,7 +1060,7 @@ zaptemp (const char *name)
|
||||
@@ -992,7 +1075,7 @@ zaptemp (const char *name)
|
||||
free (node);
|
||||
}
|
||||
|
||||
@ -2576,7 +2576,7 @@
|
||||
|
||||
static int
|
||||
struct_month_cmp (const void *m1, const void *m2)
|
||||
@@ -1004,7 +1087,7 @@ inittables (void)
|
||||
@@ -1019,7 +1102,7 @@ inittables (void)
|
||||
fold_toupper[i] = toupper (i);
|
||||
}
|
||||
|
||||
@ -2585,7 +2585,7 @@
|
||||
/* If we're not in the "C" locale, read different names for months. */
|
||||
if (hard_LC_TIME)
|
||||
{
|
||||
@@ -1030,6 +1113,71 @@ inittables (void)
|
||||
@@ -1045,6 +1128,71 @@ inittables (void)
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -2657,7 +2657,7 @@
|
||||
/* Specify the amount of main memory to use when sorting. */
|
||||
static void
|
||||
specify_sort_size (int oi, char c, char const *s)
|
||||
@@ -1240,7 +1388,7 @@ buffer_linelim (struct buffer const *buf
|
||||
@@ -1255,7 +1403,7 @@ buffer_linelim (struct buffer const *buf
|
||||
by KEY in LINE. */
|
||||
|
||||
static char *
|
||||
@ -2666,7 +2666,7 @@
|
||||
{
|
||||
char *ptr = line->text, *lim = ptr + line->length - 1;
|
||||
size_t sword = key->sword;
|
||||
@@ -1250,10 +1398,10 @@ begfield (const struct line *line, const
|
||||
@@ -1265,10 +1413,10 @@ begfield (const struct line *line, const
|
||||
/* The leading field separator itself is included in a field when -t
|
||||
is absent. */
|
||||
|
||||
@ -2679,7 +2679,7 @@
|
||||
++ptr;
|
||||
if (ptr < lim)
|
||||
++ptr;
|
||||
@@ -1281,11 +1429,70 @@ begfield (const struct line *line, const
|
||||
@@ -1296,11 +1444,70 @@ begfield (const struct line *line, const
|
||||
return ptr;
|
||||
}
|
||||
|
||||
@ -2751,7 +2751,7 @@
|
||||
{
|
||||
char *ptr = line->text, *lim = ptr + line->length - 1;
|
||||
size_t eword = key->eword, echar = key->echar;
|
||||
@@ -1298,10 +1505,10 @@ limfield (const struct line *line, const
|
||||
@@ -1313,10 +1520,10 @@ limfield (const struct line *line, const
|
||||
`beginning' is the first character following the delimiting TAB.
|
||||
Otherwise, leave PTR pointing at the first `blank' character after
|
||||
the preceding field. */
|
||||
@ -2764,7 +2764,7 @@
|
||||
++ptr;
|
||||
if (ptr < lim && (eword | echar))
|
||||
++ptr;
|
||||
@@ -1347,7 +1554,7 @@ limfield (const struct line *line, const
|
||||
@@ -1362,7 +1569,7 @@ limfield (const struct line *line, const
|
||||
*/
|
||||
|
||||
/* Make LIM point to the end of (one byte past) the current field. */
|
||||
@ -2773,7 +2773,7 @@
|
||||
{
|
||||
char *newlim;
|
||||
newlim = memchr (ptr, tab, lim - ptr);
|
||||
@@ -1383,6 +1590,107 @@ limfield (const struct line *line, const
|
||||
@@ -1398,6 +1605,107 @@ limfield (const struct line *line, const
|
||||
return ptr;
|
||||
}
|
||||
|
||||
@ -2881,7 +2881,7 @@
|
||||
/* Fill BUF reading from FP, moving buf->left bytes from the end
|
||||
of buf->buf to the beginning first. If EOF is reached and the
|
||||
file wasn't terminated by a newline, supply one. Set up BUF's line
|
||||
@@ -1465,8 +1773,22 @@ fillbuf (struct buffer *buf, FILE *fp, c
|
||||
@@ -1480,8 +1788,22 @@ fillbuf (struct buffer *buf, FILE *fp, c
|
||||
else
|
||||
{
|
||||
if (key->skipsblanks)
|
||||
@ -2906,7 +2906,7 @@
|
||||
line->keybeg = line_start;
|
||||
}
|
||||
}
|
||||
@@ -1521,15 +1843,59 @@ general_numcompare (const char *sa, cons
|
||||
@@ -1536,15 +1858,59 @@ general_numcompare (const char *sa, cons
|
||||
/* FIXME: maybe add option to try expensive FP conversion
|
||||
only if A and B can't be compared more cheaply/accurately. */
|
||||
|
||||
@ -2973,7 +2973,7 @@
|
||||
return 1;
|
||||
|
||||
/* Sort numbers in the usual way, where -0 == +0. Put NaNs after
|
||||
@@ -1547,7 +1913,7 @@ general_numcompare (const char *sa, cons
|
||||
@@ -1562,7 +1928,7 @@ general_numcompare (const char *sa, cons
|
||||
Return 0 if the name in S is not recognized. */
|
||||
|
||||
static int
|
||||
@ -2982,7 +2982,7 @@
|
||||
{
|
||||
size_t lo = 0;
|
||||
size_t hi = MONTHS_PER_YEAR;
|
||||
@@ -1702,11 +2068,79 @@ compare_random (char *restrict texta, si
|
||||
@@ -1717,11 +2083,79 @@ compare_random (char *restrict texta, si
|
||||
return diff;
|
||||
}
|
||||
|
||||
@ -3063,7 +3063,7 @@
|
||||
{
|
||||
struct keyfield const *key = keylist;
|
||||
|
||||
@@ -1873,12 +2307,189 @@ keycompare (const struct line *a, const
|
||||
@@ -1888,12 +2322,189 @@ keycompare (const struct line *a, const
|
||||
|
||||
return 0;
|
||||
|
||||
@ -3255,7 +3255,7 @@
|
||||
/* Compare two lines A and B, returning negative, zero, or positive
|
||||
depending on whether A compares less than, equal to, or greater than B. */
|
||||
|
||||
@@ -2695,6 +3306,11 @@ set_ordering (const char *s, struct keyf
|
||||
@@ -2710,6 +3321,11 @@ set_ordering (const char *s, struct keyf
|
||||
break;
|
||||
case 'M':
|
||||
key->month = true;
|
||||
@ -3267,7 +3267,7 @@
|
||||
break;
|
||||
case 'n':
|
||||
key->numeric = true;
|
||||
@@ -2748,7 +3364,7 @@ main (int argc, char **argv)
|
||||
@@ -2763,7 +3379,7 @@ main (int argc, char **argv)
|
||||
initialize_exit_failure (SORT_FAILURE);
|
||||
|
||||
hard_LC_COLLATE = hard_locale (LC_COLLATE);
|
||||
@ -3276,7 +3276,7 @@
|
||||
hard_LC_TIME = hard_locale (LC_TIME);
|
||||
#endif
|
||||
|
||||
@@ -2761,14 +3377,40 @@ main (int argc, char **argv)
|
||||
@@ -2776,14 +3392,40 @@ main (int argc, char **argv)
|
||||
add support for multibyte decimal points. */
|
||||
decimal_point = to_uchar (locale->decimal_point[0]);
|
||||
if (! decimal_point || locale->decimal_point[1])
|
||||
@ -3319,7 +3319,7 @@
|
||||
have_read_stdin = false;
|
||||
inittables ();
|
||||
|
||||
@@ -3017,13 +3659,32 @@ main (int argc, char **argv)
|
||||
@@ -3035,13 +3677,32 @@ main (int argc, char **argv)
|
||||
|
||||
case 't':
|
||||
{
|
||||
@ -3356,7 +3356,7 @@
|
||||
else
|
||||
{
|
||||
/* Provoke with `sort -txx'. Complain about
|
||||
@@ -3034,9 +3695,12 @@ main (int argc, char **argv)
|
||||
@@ -3052,9 +3713,12 @@ main (int argc, char **argv)
|
||||
quote (optarg));
|
||||
}
|
||||
}
|
||||
@ -3370,8 +3370,8 @@
|
||||
}
|
||||
break;
|
||||
|
||||
--- coreutils-6.9-316-e6f4b/src/unexpand.c
|
||||
+++ coreutils-6.9-316-e6f4b/src/unexpand.c
|
||||
--- coreutils-6.11/src/unexpand.c
|
||||
+++ coreutils-6.11/src/unexpand.c
|
||||
@@ -38,11 +38,34 @@
|
||||
#include <stdio.h>
|
||||
#include <getopt.h>
|
||||
@ -3659,8 +3659,8 @@
|
||||
|
||||
if (have_read_stdin && fclose (stdin) != 0)
|
||||
error (EXIT_FAILURE, errno, "-");
|
||||
--- coreutils-6.9-316-e6f4b/src/uniq.c
|
||||
+++ coreutils-6.9-316-e6f4b/src/uniq.c
|
||||
--- coreutils-6.11/src/uniq.c
|
||||
+++ coreutils-6.11/src/uniq.c
|
||||
@@ -22,6 +22,16 @@
|
||||
#include <getopt.h>
|
||||
#include <sys/types.h>
|
||||
@ -3705,7 +3705,7 @@
|
||||
static struct option const longopts[] =
|
||||
{
|
||||
{"count", no_argument, NULL, 'c'},
|
||||
@@ -199,7 +222,7 @@ size_opt (char const *opt, char const *m
|
||||
@@ -204,7 +227,7 @@ size_opt (char const *opt, char const *m
|
||||
return a pointer to the beginning of the line's field to be compared. */
|
||||
|
||||
static char *
|
||||
@ -3714,7 +3714,7 @@
|
||||
{
|
||||
size_t count;
|
||||
char *lp = line->buffer;
|
||||
@@ -220,6 +243,83 @@ find_field (const struct linebuffer *lin
|
||||
@@ -225,6 +248,83 @@ find_field (const struct linebuffer *lin
|
||||
return lp + i;
|
||||
}
|
||||
|
||||
@ -3798,7 +3798,7 @@
|
||||
/* Return false if two strings OLD and NEW match, true if not.
|
||||
OLD and NEW point not to the beginnings of the lines
|
||||
but rather to the beginnings of the fields to compare.
|
||||
@@ -244,6 +344,73 @@ different (char *old, char *new, size_t
|
||||
@@ -249,6 +349,73 @@ different (char *old, char *new, size_t
|
||||
return oldlen != newlen || memcmp (old, new, oldlen);
|
||||
}
|
||||
|
||||
@ -3872,7 +3872,7 @@
|
||||
/* Output the line in linebuffer LINE to standard output
|
||||
provided that the switches say it should be output.
|
||||
MATCH is true if the line matches the previous line.
|
||||
@@ -296,15 +463,42 @@ check_file (const char *infile, const ch
|
||||
@@ -301,15 +468,42 @@ check_file (const char *infile, const ch
|
||||
{
|
||||
char *prevfield IF_LINT (= NULL);
|
||||
size_t prevlen IF_LINT (= 0);
|
||||
@ -3915,7 +3915,7 @@
|
||||
if (prevline->length == 0
|
||||
|| different (thisfield, prevfield, thislen, prevlen))
|
||||
{
|
||||
@@ -323,17 +517,26 @@ check_file (const char *infile, const ch
|
||||
@@ -328,17 +522,26 @@ check_file (const char *infile, const ch
|
||||
size_t prevlen;
|
||||
uintmax_t match_count = 0;
|
||||
bool first_delimiter = true;
|
||||
@ -3942,7 +3942,7 @@
|
||||
if (readlinebuffer_delim (thisline, stdin, delimiter) == 0)
|
||||
{
|
||||
if (ferror (stdin))
|
||||
@@ -342,6 +545,15 @@ check_file (const char *infile, const ch
|
||||
@@ -347,6 +550,15 @@ check_file (const char *infile, const ch
|
||||
}
|
||||
thisfield = find_field (thisline);
|
||||
thislen = thisline->length - 1 - (thisfield - thisline->buffer);
|
||||
@ -3958,7 +3958,7 @@
|
||||
match = !different (thisfield, prevfield, thislen, prevlen);
|
||||
match_count += match;
|
||||
|
||||
@@ -374,6 +586,9 @@ check_file (const char *infile, const ch
|
||||
@@ -379,6 +591,9 @@ check_file (const char *infile, const ch
|
||||
SWAP_LINES (prevline, thisline);
|
||||
prevfield = thisfield;
|
||||
prevlen = thislen;
|
||||
@ -3968,7 +3968,7 @@
|
||||
if (!match)
|
||||
match_count = 0;
|
||||
}
|
||||
@@ -419,6 +634,18 @@ main (int argc, char **argv)
|
||||
@@ -424,6 +639,18 @@ main (int argc, char **argv)
|
||||
|
||||
atexit (close_stdout);
|
||||
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1d013547889f20576460249c4210632d5314531c8477378a2e046b13a8ebeb7e
|
||||
size 9193125
|
@ -18,7 +18,7 @@
|
||||
|
||||
@command{date}: Print or set system date and time
|
||||
|
||||
@@ -12467,8 +12463,6 @@ information.
|
||||
@@ -12515,8 +12511,6 @@ information.
|
||||
* arch invocation:: Print machine hardware name.
|
||||
* date invocation:: Print or set system date and time.
|
||||
* uname invocation:: Print system information.
|
||||
@ -27,7 +27,7 @@
|
||||
@end menu
|
||||
|
||||
|
||||
@@ -13248,55 +13242,6 @@ Print the kernel version.
|
||||
@@ -13296,55 +13290,6 @@ Print the kernel version.
|
||||
|
||||
@exitstatus
|
||||
|
||||
@ -85,7 +85,7 @@
|
||||
@chapter Modified command invocation
|
||||
--- gnulib-tests/test-isnanl.h
|
||||
+++ gnulib-tests/test-isnanl.h
|
||||
@@ -57,7 +57,7 @@ main ()
|
||||
@@ -59,7 +59,7 @@ main ()
|
||||
/* Quiet NaN. */
|
||||
ASSERT (isnanl (0.0L / 0.0L));
|
||||
|
||||
@ -94,7 +94,7 @@
|
||||
/* A bit pattern that is different from a Quiet NaN. With a bit of luck,
|
||||
it's a Signalling NaN. */
|
||||
{
|
||||
@@ -99,6 +99,7 @@ main ()
|
||||
@@ -101,6 +101,7 @@ main ()
|
||||
{ LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
|
||||
ASSERT (isnanl (x.value));
|
||||
}
|
||||
@ -102,7 +102,7 @@
|
||||
/* The isnanl function should recognize Pseudo-NaNs, Pseudo-Infinities,
|
||||
Pseudo-Zeroes, Unnormalized Numbers, and Pseudo-Denormals, as defined in
|
||||
Intel IA-64 Architecture Software Developer's Manual, Volume 1:
|
||||
@@ -132,6 +133,7 @@ main ()
|
||||
@@ -134,6 +135,7 @@ main ()
|
||||
ASSERT (isnanl (x.value));
|
||||
}
|
||||
#endif
|
||||
@ -112,7 +112,7 @@
|
||||
}
|
||||
--- m4/gnulib-comp.m4
|
||||
+++ m4/gnulib-comp.m4
|
||||
@@ -234,7 +234,6 @@ AC_DEFUN([gl_INIT],
|
||||
@@ -248,7 +248,6 @@ AC_DEFUN([gl_INIT],
|
||||
gl_POSIXVER
|
||||
gl_FUNC_PRINTF_FREXP
|
||||
gl_FUNC_PRINTF_FREXPL
|
||||
@ -126,8 +126,8 @@
|
||||
PATH=../src$(PATH_SEPARATOR)$$PATH; export PATH; \
|
||||
t=ls-files.$$$$; \
|
||||
(cd $(srcdir) && ls -1 *.x) | sed 's/\.x$$//' | $(ASSORT) > $$t;\
|
||||
- (echo $(dist_man_MANS) $(NO_INSTALL_PROGS_DEFAULT) \
|
||||
+ (echo $(dist_man_MANS) $(NO_INSTALL_PROGS_DEFAULT) hostid \
|
||||
- (echo $(dist_man1_MANS) $(NO_INSTALL_PROGS_DEFAULT) \
|
||||
+ (echo $(dist_man1_MANS) $(NO_INSTALL_PROGS_DEFAULT) hostid \
|
||||
| tr -s ' ' '\n' | sed 's/\.1$$//') \
|
||||
| $(ASSORT) -u | diff - $$t || { rm $$t; exit 1; }; \
|
||||
rm $$t
|
||||
@ -144,7 +144,7 @@
|
||||
/* Extract or fake data from a `struct stat'.
|
||||
--- tests/misc/help-version
|
||||
+++ tests/misc/help-version
|
||||
@@ -205,6 +205,7 @@ lbracket_args=": ]"
|
||||
@@ -180,6 +180,7 @@ lbracket_args=": ]"
|
||||
for i in $built_programs; do
|
||||
# Skip these.
|
||||
case $i in chroot|stty|tty|false|chcon|runcon) continue;; esac
|
||||
@ -162,4 +162,4 @@
|
||||
+test -f /bin/uname.bin && other_partition_tmpdir=
|
||||
|
||||
if test -z "$other_partition_tmpdir"; then
|
||||
cat <<EOF 1>&2
|
||||
skip_test_ \
|
3
coreutils-6.11.tar.gz
Normal file
3
coreutils-6.11.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:eb9976291aad92dd586c9ac41669024de065772cc2f2608200d50643ea3a8bce
|
||||
size 9095150
|
@ -1,3 +1,69 @@
|
||||
-------------------------------------------------------------------
|
||||
Sun Apr 20 00:19:07 CEST 2008 - schwab@suse.de
|
||||
|
||||
- Update to coreutils 6.11.
|
||||
** Bug fixes
|
||||
configure --enable-no-install-program=groups now works.
|
||||
"cp -fR fifo E" now succeeds with an existing E. Before this fix, using
|
||||
-fR to copy a fifo or "special" file onto an existing file would fail
|
||||
with EEXIST. Now, it once again unlinks the destination before trying
|
||||
to create the destination file. [bug introduced in coreutils-5.90]
|
||||
dd once again works with unnecessary options like if=/dev/stdin and
|
||||
of=/dev/stdout. [bug introduced in fileutils-4.0h]
|
||||
id now uses getgrouplist, when possible. This results in
|
||||
much better performance when there are many users and/or groups.
|
||||
ls no longer segfaults on files in /proc when linked with an older version
|
||||
of libselinux. E.g., ls -l /proc/sys would dereference a NULL pointer.
|
||||
md5sum would segfault for invalid BSD-style input, e.g.,
|
||||
echo 'MD5 (' | md5sum -c - Now, md5sum ignores that line.
|
||||
sha1sum, sha224sum, sha384sum, and sha512sum are affected, too.
|
||||
[bug introduced in coreutils-5.1.0]
|
||||
md5sum -c would accept a NUL-containing checksum string like "abcd\0..."
|
||||
and would unnecessarily read and compute the checksum of the named file,
|
||||
and then compare that checksum to the invalid one: guaranteed to fail.
|
||||
Now, it recognizes that the line is not valid and skips it.
|
||||
sha1sum, sha224sum, sha384sum, and sha512sum are affected, too.
|
||||
[bug present in the original version, in coreutils-4.5.1, 1995]
|
||||
"mkdir -Z x dir" no longer segfaults when diagnosing invalid context "x"
|
||||
mkfifo and mknod would fail similarly. Now they're fixed.
|
||||
mv would mistakenly unlink a destination file before calling rename,
|
||||
when the destination had two or more hard links. It no longer does that.
|
||||
[bug introduced in coreutils-5.3.0]
|
||||
"paste -d'\' file" no longer overruns memory (heap since coreutils-5.1.2,
|
||||
stack before then) [bug present in the original version, in 1992]
|
||||
"pr -e" with a mix of backspaces and TABs no longer corrupts the heap
|
||||
[bug present in the original version, in 1992]
|
||||
"ptx -F'\' long-file-name" would overrun a malloc'd buffer and corrupt
|
||||
the heap. That was triggered by a lone backslash (or odd number of them)
|
||||
at the end of the option argument to --flag-truncation=STRING (-F),
|
||||
--word-regexp=REGEXP (-W), or --sentence-regexp=REGEXP (-S).
|
||||
"rm -r DIR" would mistakenly declare to be "write protected" -- and
|
||||
prompt about -- full DIR-relative names longer than MIN (PATH_MAX, 8192).
|
||||
"rmdir --ignore-fail-on-non-empty" detects and ignores the failure
|
||||
in more cases when a directory is empty.
|
||||
"seq -f % 1" would issue the erroneous diagnostic "seq: memory exhausted"
|
||||
rather than reporting the invalid string format.
|
||||
[bug introduced in coreutils-6.0]
|
||||
** New features
|
||||
join now verifies that the inputs are in sorted order. This check can
|
||||
be turned off with the --nocheck-order option.
|
||||
sort accepts the new option --sort=WORD, where WORD can be one of
|
||||
general-numeric, month, numeric or random. These are equivalent to the
|
||||
options --general-numeric-sort/-g, --month-sort/-M, --numeric-sort/-n
|
||||
and --random-sort/-R, resp.
|
||||
** Improvements
|
||||
id and groups work around an AFS-related bug whereby those programs
|
||||
would print an invalid group number, when given no user-name argument.
|
||||
ls --color no longer outputs unnecessary escape sequences
|
||||
seq gives better diagnostics for invalid formats.
|
||||
** Portability
|
||||
rm now works properly even on systems like BeOS and Haiku,
|
||||
which have negative errno values.
|
||||
** Consistency
|
||||
install, mkdir, rmdir and split now write --verbose output to stdout,
|
||||
not to stderr.
|
||||
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Apr 11 11:42:57 CEST 2008 - schwab@suse.de
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# spec file for package coreutils (Version 6.10)
|
||||
# spec file for package coreutils (Version 6.11)
|
||||
#
|
||||
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# This file and all modifications and additions to the pristine
|
||||
@ -16,8 +16,8 @@ BuildRequires: help2man libacl-devel pam-devel
|
||||
Url: http://www.gnu.org/software/coreutils/
|
||||
License: GNU Free Documentation License, Version 1.2 (GFDL 1.2); GPL v2 or later; GPL v3 or later
|
||||
Group: System/Base
|
||||
Version: 6.10
|
||||
Release: 22
|
||||
Version: 6.11
|
||||
Release: 1
|
||||
Provides: fileutils sh-utils stat textutils mktemp
|
||||
Obsoletes: fileutils sh-utils stat textutils mktemp
|
||||
Obsoletes: libselinux <= 1.23.11-3 libselinux-32bit >= 9 libselinux-64bit = 9 libselinux-x86 = 9
|
||||
@ -34,8 +34,6 @@ Patch4: coreutils-5.3.0-i18n-0.1.patch
|
||||
Patch5: i18n-uninit.diff
|
||||
Patch6: i18n-infloop.diff
|
||||
Patch8: coreutils-sysinfo.diff
|
||||
Patch9: testsuite.diff
|
||||
Patch10: frexpl.diff
|
||||
Patch11: i18n-monthsort.diff
|
||||
Patch12: i18n-random.diff
|
||||
Patch16: invalid-ids.diff
|
||||
@ -105,8 +103,6 @@ Authors:
|
||||
%patch6
|
||||
%patch
|
||||
%patch8 -p1
|
||||
%patch9 -p1
|
||||
%patch10 -p1
|
||||
%patch11
|
||||
%patch12
|
||||
%patch16 -p1
|
||||
@ -182,6 +178,68 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%defattr(-,root,root)
|
||||
|
||||
%changelog
|
||||
* Sun Apr 20 2008 schwab@suse.de
|
||||
- Update to coreutils 6.11.
|
||||
** Bug fixes
|
||||
configure --enable-no-install-program=groups now works.
|
||||
"cp -fR fifo E" now succeeds with an existing E. Before this fix, using
|
||||
-fR to copy a fifo or "special" file onto an existing file would fail
|
||||
with EEXIST. Now, it once again unlinks the destination before trying
|
||||
to create the destination file. [bug introduced in coreutils-5.90]
|
||||
dd once again works with unnecessary options like if=/dev/stdin and
|
||||
of=/dev/stdout. [bug introduced in fileutils-4.0h]
|
||||
id now uses getgrouplist, when possible. This results in
|
||||
much better performance when there are many users and/or groups.
|
||||
ls no longer segfaults on files in /proc when linked with an older version
|
||||
of libselinux. E.g., ls -l /proc/sys would dereference a NULL pointer.
|
||||
md5sum would segfault for invalid BSD-style input, e.g.,
|
||||
echo 'MD5 (' | md5sum -c - Now, md5sum ignores that line.
|
||||
sha1sum, sha224sum, sha384sum, and sha512sum are affected, too.
|
||||
[bug introduced in coreutils-5.1.0]
|
||||
md5sum -c would accept a NUL-containing checksum string like "abcd\0..."
|
||||
and would unnecessarily read and compute the checksum of the named file,
|
||||
and then compare that checksum to the invalid one: guaranteed to fail.
|
||||
Now, it recognizes that the line is not valid and skips it.
|
||||
sha1sum, sha224sum, sha384sum, and sha512sum are affected, too.
|
||||
[bug present in the original version, in coreutils-4.5.1, 1995]
|
||||
"mkdir -Z x dir" no longer segfaults when diagnosing invalid context "x"
|
||||
mkfifo and mknod would fail similarly. Now they're fixed.
|
||||
mv would mistakenly unlink a destination file before calling rename,
|
||||
when the destination had two or more hard links. It no longer does that.
|
||||
[bug introduced in coreutils-5.3.0]
|
||||
"paste -d'\' file" no longer overruns memory (heap since coreutils-5.1.2,
|
||||
stack before then) [bug present in the original version, in 1992]
|
||||
"pr -e" with a mix of backspaces and TABs no longer corrupts the heap
|
||||
[bug present in the original version, in 1992]
|
||||
"ptx -F'\' long-file-name" would overrun a malloc'd buffer and corrupt
|
||||
the heap. That was triggered by a lone backslash (or odd number of them)
|
||||
at the end of the option argument to --flag-truncation=STRING (-F),
|
||||
--word-regexp=REGEXP (-W), or --sentence-regexp=REGEXP (-S).
|
||||
"rm -r DIR" would mistakenly declare to be "write protected" -- and
|
||||
prompt about -- full DIR-relative names longer than MIN (PATH_MAX, 8192).
|
||||
"rmdir --ignore-fail-on-non-empty" detects and ignores the failure
|
||||
in more cases when a directory is empty.
|
||||
"seq -f %% 1" would issue the erroneous diagnostic "seq: memory exhausted"
|
||||
rather than reporting the invalid string format.
|
||||
[bug introduced in coreutils-6.0]
|
||||
** New features
|
||||
join now verifies that the inputs are in sorted order. This check can
|
||||
be turned off with the --nocheck-order option.
|
||||
sort accepts the new option --sort=WORD, where WORD can be one of
|
||||
general-numeric, month, numeric or random. These are equivalent to the
|
||||
options --general-numeric-sort/-g, --month-sort/-M, --numeric-sort/-n
|
||||
and --random-sort/-R, resp.
|
||||
** Improvements
|
||||
id and groups work around an AFS-related bug whereby those programs
|
||||
would print an invalid group number, when given no user-name argument.
|
||||
ls --color no longer outputs unnecessary escape sequences
|
||||
seq gives better diagnostics for invalid formats.
|
||||
** Portability
|
||||
rm now works properly even on systems like BeOS and Haiku,
|
||||
which have negative errno values.
|
||||
** Consistency
|
||||
install, mkdir, rmdir and split now write --verbose output to stdout,
|
||||
not to stderr.
|
||||
* Fri Apr 11 2008 schwab@suse.de
|
||||
- Work around a recent glibc/getopt.c diagnostic change.
|
||||
- Fix frexpl test.
|
||||
|
36
frexpl.diff
36
frexpl.diff
@ -1,36 +0,0 @@
|
||||
commit 5ac7a821bd96ca5e531d5127f66ab6a258cd7fcb
|
||||
Author: Andreas Schwab <schwab@suse.de>
|
||||
Date: Thu Jan 31 00:25:53 2008 +0100
|
||||
|
||||
Fix autoconf test bug introduced on 2008-01-15.
|
||||
|
||||
2008-01-30 Andreas Schwab <schwab@suse.de>
|
||||
Bruno Haible <bruno@clisp.org>
|
||||
|
||||
* m4/frexpl.m4 (gl_FUNC_FREXPL_WORKS): Include <float.h> and ensure a
|
||||
correct definition of LDBL_MIN_EXP.
|
||||
|
||||
diff --git a/m4/frexpl.m4 b/m4/frexpl.m4
|
||||
index a4f2bd8..c6bdff6 100644
|
||||
--- a/m4/frexpl.m4
|
||||
+++ b/m4/frexpl.m4
|
||||
@@ -1,4 +1,4 @@
|
||||
-# frexpl.m4 serial 7
|
||||
+# frexpl.m4 serial 8
|
||||
dnl Copyright (C) 2007-2008 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
@@ -106,7 +106,13 @@ AC_DEFUN([gl_FUNC_FREXPL_WORKS],
|
||||
AC_CACHE_CHECK([whether frexpl works], [gl_cv_func_frexpl_works],
|
||||
[
|
||||
AC_TRY_RUN([
|
||||
+#include <float.h>
|
||||
#include <math.h>
|
||||
+/* Override the values of <float.h>, like done in float.in.h. */
|
||||
+#if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__)
|
||||
+# undef LDBL_MIN_EXP
|
||||
+# define LDBL_MIN_EXP (-16381)
|
||||
+#endif
|
||||
extern long double frexpl (long double, int *);
|
||||
int main()
|
||||
{
|
@ -1,22 +0,0 @@
|
||||
commit 76576ba2f5e270bfb78e46604392d0258bbf6320
|
||||
Author: Jim Meyering <meyering@redhat.com>
|
||||
Date: Sat Mar 29 00:11:15 2008 +0100
|
||||
|
||||
Work around a recent glibc/getopt.c diagnostic change.
|
||||
|
||||
* tests/misc/factor: Map new "-- '1'" to expected "-- 1".
|
||||
|
||||
Signed-off-by: Jim Meyering <meyering@redhat.com>
|
||||
|
||||
diff --git a/tests/misc/factor b/tests/misc/factor
|
||||
index a350ca9..de3f376 100755
|
||||
--- a/tests/misc/factor
|
||||
+++ b/tests/misc/factor
|
||||
@@ -65,6 +65,7 @@ my @Tests =
|
||||
['x', '4294966896', {OUT => '2 2 2 2 3 3 3 11 607 1489'}],
|
||||
['y', '4294966998', {OUT => '2 3 7 3917 26107'}],
|
||||
['z', '-1',
|
||||
+ {ERR_SUBST => q!s/'1'/1/!}, # map newer glibc diagnostic to expected.
|
||||
{ERR => "$prog: invalid option -- 1\n"
|
||||
. "Try `$prog --help' for more information.\n"},
|
||||
{EXIT => 1}],
|
Loading…
Reference in New Issue
Block a user