diff options
Diffstat (limited to 'core/coreutils/coreutils-uniq.patch.new')
-rw-r--r-- | core/coreutils/coreutils-uniq.patch.new | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/core/coreutils/coreutils-uniq.patch.new b/core/coreutils/coreutils-uniq.patch.new deleted file mode 100644 index d690cf6..0000000 --- a/core/coreutils/coreutils-uniq.patch.new +++ /dev/null @@ -1,122 +0,0 @@ ---- old/src/uniq.c 2023-10-26 22:16:06.128439677 +0200 -+++ new/src/uniq.c 2023-10-26 22:15:43.965104621 +0200 -@@ -51,6 +51,9 @@ - /* Number of fields to skip on each line when doing comparisons. */ - static size_t skip_fields; - -+/* Number of fields to compare. */ -+static size_t check_fields; -+ - /* Number of chars to skip after skipping any fields. */ - static size_t skip_chars; - -@@ -146,6 +149,7 @@ - {"ignore-case", no_argument, nullptr, 'i'}, - {"unique", no_argument, nullptr, 'u'}, - {"skip-fields", required_argument, nullptr, 'f'}, -+ {"check-fields", required_argument, nullptr, 'm'}, - {"skip-chars", required_argument, nullptr, 's'}, - {"check-chars", required_argument, nullptr, 'w'}, - {"zero-terminated", no_argument, nullptr, 'z'}, -@@ -193,6 +197,11 @@ - "), stdout); - fputs (_("\ - -i, --ignore-case ignore differences in case when comparing\n\ -+"), stdout); -+ fputs (_("\ -+ -m, --check-fields=N compare no more than N fields\n\ -+"), stdout); -+ fputs (_("\ - -s, --skip-chars=N avoid comparing the first N characters\n\ - -u, --unique only print unique lines\n\ - "), stdout); -@@ -252,7 +261,7 @@ - - ATTRIBUTE_PURE - static char * --find_field (struct linebuffer const *line) -+find_field (struct linebuffer const *line, size_t *len) - { - size_t count; - char const *lp = line->buffer; -@@ -269,6 +278,21 @@ - - i += MIN (skip_chars, size - i); - -+ if (check_fields == 0) -+ (*len) = size; -+ else -+ { -+ (*len) = i; -+ for (count = 0; count < check_fields && (*len) < size; count ++) -+ { -+ while ((*len) < size && field_sep (lp[*len])) -+ (*len)++; -+ while ((*len) < size && !field_sep (lp[*len])) -+ (*len)++; -+ } -+ } -+ (*len) = (*len) - i; -+ - return line->buffer + i; - } - -@@ -366,8 +390,7 @@ - if (readlinebuffer_delim (thisline, stdin, delimiter) == 0) - break; - -- thisfield = find_field (thisline); -- thislen = thisline->length - 1 - (thisfield - thisline->buffer); -+ thisfield = find_field (thisline,&thislen); - - new_group = (!prevfield - || different (thisfield, prevfield, thislen, prevlen)); -@@ -402,8 +425,7 @@ - - if (readlinebuffer_delim (prevline, stdin, delimiter) == 0) - goto closefiles; -- prevfield = find_field (prevline); -- prevlen = prevline->length - 1 - (prevfield - prevline->buffer); -+ prevfield = find_field (prevline,&prevlen); - - while (!feof (stdin)) - { -@@ -416,8 +438,7 @@ - goto closefiles; - break; - } -- thisfield = find_field (thisline); -- thislen = thisline->length - 1 - (thisfield - thisline->buffer); -+ thisfield = find_field (thisline,&thislen); - match = !different (thisfield, prevfield, thislen, prevlen); - match_count += match; - -@@ -497,6 +518,7 @@ - - skip_chars = 0; - skip_fields = 0; -+ check_fields = 0; - check_chars = SIZE_MAX; - output_unique = output_first_repeated = true; - output_later_repeated = false; -@@ -512,7 +534,7 @@ - if (optc == -1 - || (posixly_correct && nfiles != 0) - || ((optc = getopt_long (argc, argv, -- "-0123456789Dcdf:is:uw:z", -+ "-0123456789Dcdf:im:s:uw:z", - longopts, nullptr)) - == -1)) - { -@@ -607,6 +629,11 @@ - ignore_case = true; - break; - -+ case 'm': -+ check_fields = size_opt (optarg, -+ N_("invalid number of fields to compare")); -+ break; -+ - case 's': - skip_chars = size_opt (optarg, - N_("invalid number of bytes to skip")); |