diff options
author | Sebastian Schmidt <yath@yath.de> | 2012-04-17 11:23:35 +0200 |
---|---|---|
committer | Sebastian Schmidt <yath@yath.de> | 2012-04-17 11:24:20 +0200 |
commit | f4b417c62a4f272c4cf9a074d0f7a3a97201f9db (patch) | |
tree | e2196f3b6361e2377c43ab47a3abf17d8f6afd77 /lib/glob/smatch.c | |
parent | 791237e44695d2ee123c8a6f665ef074f5fadfbb (diff) | |
download | external_bash-f4b417c62a4f272c4cf9a074d0f7a3a97201f9db.zip external_bash-f4b417c62a4f272c4cf9a074d0f7a3a97201f9db.tar.gz external_bash-f4b417c62a4f272c4cf9a074d0f7a3a97201f9db.tar.bz2 |
Update to upstream bash 4.2
This upgrades bash to from 4.1-rc to 4.2-release. See CWRU/changelog for
changes.
Change-Id: I926269c300cf44fa25964b5b375a148fcf11c4b7
Diffstat (limited to 'lib/glob/smatch.c')
-rw-r--r-- | lib/glob/smatch.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/glob/smatch.c b/lib/glob/smatch.c index 11d86b0..061142b 100644 --- a/lib/glob/smatch.c +++ b/lib/glob/smatch.c @@ -1,7 +1,7 @@ /* strmatch.c -- ksh-like extended pattern matching for the shell and filename globbing. */ -/* Copyright (C) 1991-2005 Free Software Foundation, Inc. +/* Copyright (C) 1991-2011 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -241,6 +241,8 @@ is_cclass (c, name) # define STREQ(s1, s2) ((wcscmp (s1, s2) == 0)) # define STREQN(a, b, n) ((a)[0] == (b)[0] && wcsncmp(a, b, n) == 0) +extern char *mbsmbchar __P((const char *)); + static int rangecmp_wc (c1, c2) wint_t c1, c2; @@ -314,7 +316,7 @@ is_wcclass (wc, name) memset (&state, '\0', sizeof (mbstate_t)); mbs = (char *) malloc (wcslen(name) * MB_CUR_MAX + 1); - mbslength = wcsrtombs(mbs, (const wchar_t **)&name, (wcslen(name) * MB_CUR_MAX + 1), &state); + mbslength = wcsrtombs (mbs, (const wchar_t **)&name, (wcslen(name) * MB_CUR_MAX + 1), &state); if (mbslength == (size_t)-1 || mbslength == (size_t)-2) { @@ -365,6 +367,16 @@ xstrmatch (pattern, string, flags) int ret; size_t n; wchar_t *wpattern, *wstring; + size_t plen, slen, mplen, mslen; + +#if 0 + plen = strlen (pattern); + mplen = mbstrlen (pattern); + if (plen == mplen && strlen (string) == mbstrlen (string)) +#else + if (mbsmbchar (string) == 0 && mbsmbchar (pattern) == 0) +#endif + return (internal_strmatch ((unsigned char *)pattern, (unsigned char *)string, flags)); if (MB_CUR_MAX == 1) return (internal_strmatch ((unsigned char *)pattern, (unsigned char *)string, flags)); |