summaryrefslogtreecommitdiffstats
path: root/abs/core-testing/grep/03-i18n.patch
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core-testing/grep/03-i18n.patch')
-rw-r--r--abs/core-testing/grep/03-i18n.patch303
1 files changed, 0 insertions, 303 deletions
diff --git a/abs/core-testing/grep/03-i18n.patch b/abs/core-testing/grep/03-i18n.patch
deleted file mode 100644
index 8dc3dfe..0000000
--- a/abs/core-testing/grep/03-i18n.patch
+++ /dev/null
@@ -1,303 +0,0 @@
---- grep-2.5.1/src/dfa.c 2004-02-26 13:09:54.000000000 +0000
-+++ grep-2.5.1/src/dfa.c 2004-05-18 16:43:31.189200479 +0100
-@@ -414,7 +414,7 @@
-
- /* This function fetch a wide character, and update cur_mb_len,
- used only if the current locale is a multibyte environment. */
--static wchar_t
-+static wint_t
- fetch_wc (char const *eoferr)
- {
- wchar_t wc;
-@@ -423,7 +423,7 @@
- if (eoferr != 0)
- dfaerror (eoferr);
- else
-- return -1;
-+ return WEOF;
- }
-
- cur_mb_len = mbrtowc(&wc, lexptr, lexleft, &mbs);
-@@ -459,7 +459,7 @@
- static void
- parse_bracket_exp_mb ()
- {
-- wchar_t wc, wc1, wc2;
-+ wint_t wc, wc1, wc2;
-
- /* Work area to build a mb_char_classes. */
- struct mb_char_classes *work_mbc;
-@@ -496,7 +496,7 @@
- work_mbc->invert = 0;
- do
- {
-- wc1 = -1; /* mark wc1 is not initialized". */
-+ wc1 = WEOF; /* mark wc1 is not initialized". */
-
- /* Note that if we're looking at some other [:...:] construct,
- we just treat it as a bunch of ordinary characters. We can do
-@@ -586,7 +586,7 @@
- work_mbc->coll_elems[work_mbc->ncoll_elems++] = elem;
- }
- }
-- wc1 = wc = -1;
-+ wc1 = wc = WEOF;
- }
- else
- /* We treat '[' as a normal character here. */
-@@ -600,7 +600,7 @@
- wc = fetch_wc(("Unbalanced ["));
- }
-
-- if (wc1 == -1)
-+ if (wc1 == WEOF)
- wc1 = fetch_wc(_("Unbalanced ["));
-
- if (wc1 == L'-')
-@@ -630,17 +630,17 @@
- }
- REALLOC_IF_NECESSARY(work_mbc->range_sts, wchar_t,
- range_sts_al, work_mbc->nranges + 1);
-- work_mbc->range_sts[work_mbc->nranges] = wc;
-+ work_mbc->range_sts[work_mbc->nranges] = (wchar_t)wc;
- REALLOC_IF_NECESSARY(work_mbc->range_ends, wchar_t,
- range_ends_al, work_mbc->nranges + 1);
-- work_mbc->range_ends[work_mbc->nranges++] = wc2;
-+ work_mbc->range_ends[work_mbc->nranges++] = (wchar_t)wc2;
- }
-- else if (wc != -1)
-+ else if (wc != WEOF)
- /* build normal characters. */
- {
- REALLOC_IF_NECESSARY(work_mbc->chars, wchar_t, chars_al,
- work_mbc->nchars + 1);
-- work_mbc->chars[work_mbc->nchars++] = wc;
-+ work_mbc->chars[work_mbc->nchars++] = (wchar_t)wc;
- }
- }
- while ((wc = wc1) != L']');
-@@ -2552,6 +2552,8 @@
- }
-
- /* match with a character? */
-+ if (case_fold)
-+ wc = towlower (wc);
- for (i = 0; i<work_mbc->nchars; i++)
- {
- if (wc == work_mbc->chars[i])
---- grep-2.5.1/src/grep.c.i18n 2002-03-26 15:54:12.000000000 +0000
-+++ grep-2.5.1/src/grep.c 2004-02-26 13:09:54.000000000 +0000
-@@ -30,6 +30,12 @@
- # include <sys/time.h>
- # include <sys/resource.h>
- #endif
-+#if defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H && defined HAVE_MBRTOWC
-+/* We can handle multibyte string. */
-+# define MBS_SUPPORT
-+# include <wchar.h>
-+# include <wctype.h>
-+#endif
- #include <stdio.h>
- #include "system.h"
- #include "getopt.h"
-@@ -1697,6 +1703,37 @@
- if (!install_matcher (matcher) && !install_matcher ("default"))
- abort ();
-
-+#ifdef MBS_SUPPORT
-+ if (MB_CUR_MAX != 1 && match_icase)
-+ {
-+ wchar_t wc;
-+ mbstate_t cur_state, prev_state;
-+ int i, len = strlen(keys);
-+
-+ memset(&cur_state, 0, sizeof(mbstate_t));
-+ for (i = 0; i <= len ;)
-+ {
-+ size_t mbclen;
-+ mbclen = mbrtowc(&wc, keys + i, len - i, &cur_state);
-+ if (mbclen == (size_t) -1 || mbclen == (size_t) -2 || mbclen == 0)
-+ {
-+ /* An invalid sequence, or a truncated multibyte character.
-+ We treat it as a singlebyte character. */
-+ mbclen = 1;
-+ }
-+ else
-+ {
-+ if (iswupper((wint_t)wc))
-+ {
-+ wc = towlower((wint_t)wc);
-+ wcrtomb(keys + i, wc, &cur_state);
-+ }
-+ }
-+ i += mbclen;
-+ }
-+ }
-+#endif /* MBS_SUPPORT */
-+
- (*compile)(keys, keycc);
-
- if ((argc - optind > 1 && !no_filenames) || with_filenames)
---- grep-2.5.1/src/search.c.i18n 2004-02-26 13:09:54.000000000 +0000
-+++ grep-2.5.1/src/search.c 2004-02-26 13:17:12.000000000 +0000
-@@ -149,15 +149,16 @@
- static char*
- check_multibyte_string(char const *buf, size_t size)
- {
-- char *mb_properties = malloc(size);
-+ char *mb_properties = xmalloc(size);
- mbstate_t cur_state;
-+ wchar_t wc;
- int i;
- memset(&cur_state, 0, sizeof(mbstate_t));
- memset(mb_properties, 0, sizeof(char)*size);
- for (i = 0; i < size ;)
- {
- size_t mbclen;
-- mbclen = mbrlen(buf + i, size - i, &cur_state);
-+ mbclen = mbrtowc(&wc, buf + i, size - i, &cur_state);
-
- if (mbclen == (size_t) -1 || mbclen == (size_t) -2 || mbclen == 0)
- {
-@@ -165,6 +166,14 @@
- We treat it as a singlebyte character. */
- mbclen = 1;
- }
-+ else if (match_icase)
-+ {
-+ if (iswupper((wint_t)wc))
-+ {
-+ wc = towlower((wint_t)wc);
-+ wcrtomb(buf + i, wc, &cur_state);
-+ }
-+ }
- mb_properties[i] = mbclen;
- i += mbclen;
- }
-@@ -233,7 +242,7 @@
- static char const line_end[] = "\\)$";
- static char const word_beg[] = "\\(^\\|[^[:alnum:]_]\\)\\(";
- static char const word_end[] = "\\)\\([^[:alnum:]_]\\|$\\)";
-- char *n = malloc (sizeof word_beg - 1 + size + sizeof word_end);
-+ char *n = xmalloc (sizeof word_beg - 1 + size + sizeof word_end);
- size_t i;
- strcpy (n, match_lines ? line_beg : word_beg);
- i = strlen (n);
-@@ -316,7 +325,7 @@
- static char const line_end[] = ")$";
- static char const word_beg[] = "(^|[^[:alnum:]_])(";
- static char const word_end[] = ")([^[:alnum:]_]|$)";
-- char *n = malloc (sizeof word_beg - 1 + size + sizeof word_end);
-+ char *n = xmalloc (sizeof word_beg - 1 + size + sizeof word_end);
- size_t i;
- strcpy (n, match_lines ? line_beg : word_beg);
- i = strlen(n);
-@@ -339,14 +348,20 @@
- char eol = eolbyte;
- int backref, start, len;
- struct kwsmatch kwsm;
-- size_t i;
-+ size_t i, ret_val;
- #ifdef MBS_SUPPORT
- char *mb_properties = NULL;
--#endif /* MBS_SUPPORT */
--
--#ifdef MBS_SUPPORT
-- if (MB_CUR_MAX > 1 && kwset)
-- mb_properties = check_multibyte_string(buf, size);
-+ if (MB_CUR_MAX > 1)
-+ {
-+ if (match_icase)
-+ {
-+ char *case_buf = xmalloc(size);
-+ memcpy(case_buf, buf, size);
-+ buf = case_buf;
-+ }
-+ if (kwset)
-+ mb_properties = check_multibyte_string(buf, size);
-+ }
- #endif /* MBS_SUPPORT */
-
- buflim = buf + size;
-@@ -455,8 +470,13 @@
-
- failure:
- #ifdef MBS_SUPPORT
-- if (MB_CUR_MAX > 1 && mb_properties)
-- free (mb_properties);
-+ if (MB_CUR_MAX > 1)
-+ {
-+ if (mb_properties)
-+ free (mb_properties);
-+ if (match_icase)
-+ free ((char *) buf);
-+ }
- #endif /* MBS_SUPPORT */
- return (size_t) -1;
-
-@@ -467,8 +487,13 @@
-
- success_in_start_and_len:
- #ifdef MBS_SUPPORT
-- if (MB_CUR_MAX > 1 && mb_properties)
-- free (mb_properties);
-+ if (MB_CUR_MAX > 1)
-+ {
-+ if (mb_properties)
-+ free (mb_properties);
-+ if (match_icase)
-+ free ((char *) buf);
-+ }
- #endif /* MBS_SUPPORT */
- *match_size = len;
- return start;
-@@ -504,10 +529,19 @@
- register size_t len;
- char eol = eolbyte;
- struct kwsmatch kwsmatch;
-+ size_t ret_val;
- #ifdef MBS_SUPPORT
-- char *mb_properties;
-+ char *mb_properties = NULL;
- if (MB_CUR_MAX > 1)
-- mb_properties = check_multibyte_string (buf, size);
-+ {
-+ if (match_icase)
-+ {
-+ char *case_buf = xmalloc(size);
-+ memcpy(case_buf, buf, size);
-+ buf = case_buf;
-+ }
-+ mb_properties = check_multibyte_string(buf, size);
-+ }
- #endif /* MBS_SUPPORT */
-
- for (beg = buf; beg <= buf + size; ++beg)
-@@ -565,7 +599,12 @@
- failure:
- #ifdef MBS_SUPPORT
- if (MB_CUR_MAX > 1)
-- free (mb_properties);
-+ {
-+ if (match_icase)
-+ free((char *) buf);
-+ if (mb_properties)
-+ free(mb_properties);
-+ }
- #endif /* MBS_SUPPORT */
- return -1;
-
-@@ -581,7 +620,12 @@
- *match_size = len;
- #ifdef MBS_SUPPORT
- if (MB_CUR_MAX > 1)
-- free (mb_properties);
-+ {
-+ if (mb_properties)
-+ free (mb_properties);
-+ if (match_icase)
-+ free ((char *) buf);
-+ }
- #endif /* MBS_SUPPORT */
- return beg - buf;
- }