mirror of
https://https.git.savannah.gnu.org/git/bash.git
synced 2026-07-21 02:42:51 +02:00
commit bash-20040902 snapshot
This commit is contained in:
+108
@@ -0,0 +1,108 @@
|
||||
*** ../bash-3.0/subst.c Sun Jul 4 13:56:13 2004
|
||||
--- subst.c Thu Aug 12 13:36:17 2004
|
||||
***************
|
||||
*** 4692,4695 ****
|
||||
--- 4692,4715 ----
|
||||
}
|
||||
|
||||
+ #if defined (HANDLE_MULTIBYTE)
|
||||
+ size_t
|
||||
+ mbstrlen (s)
|
||||
+ const char *s;
|
||||
+ {
|
||||
+ size_t clen, nc;
|
||||
+ mbstate_t mbs;
|
||||
+
|
||||
+ nc = 0;
|
||||
+ memset (&mbs, 0, sizeof (mbs));
|
||||
+ while ((clen = mbrlen(s, MB_CUR_MAX, &mbs)) != 0 && (MB_INVALIDCH(clen) == 0))
|
||||
+ {
|
||||
+ s += clen;
|
||||
+ nc++;
|
||||
+ }
|
||||
+ return nc;
|
||||
+ }
|
||||
+ #endif
|
||||
+
|
||||
+
|
||||
/* Handle the parameter brace expansion that requires us to return the
|
||||
length of a parameter. */
|
||||
***************
|
||||
*** 4747,4758 ****
|
||||
{
|
||||
t = get_dollar_var_value (arg_index);
|
||||
! number = STRLEN (t);
|
||||
FREE (t);
|
||||
}
|
||||
#if defined (ARRAY_VARS)
|
||||
! else if ((var = find_variable (name + 1)) && array_p (var))
|
||||
{
|
||||
t = array_reference (array_cell (var), 0);
|
||||
! number = STRLEN (t);
|
||||
}
|
||||
#endif
|
||||
--- 4767,4778 ----
|
||||
{
|
||||
t = get_dollar_var_value (arg_index);
|
||||
! number = MB_STRLEN (t);
|
||||
FREE (t);
|
||||
}
|
||||
#if defined (ARRAY_VARS)
|
||||
! else if ((var = find_variable (name + 1)) && (invisible_p (var) == 0) && array_p (var))
|
||||
{
|
||||
t = array_reference (array_cell (var), 0);
|
||||
! number = MB_STRLEN (t);
|
||||
}
|
||||
#endif
|
||||
***************
|
||||
*** 4767,4771 ****
|
||||
dispose_words (list);
|
||||
|
||||
! number = STRLEN (t);
|
||||
FREE (t);
|
||||
}
|
||||
--- 4787,4791 ----
|
||||
dispose_words (list);
|
||||
|
||||
! number = MB_STRLEN (t);
|
||||
FREE (t);
|
||||
}
|
||||
***************
|
||||
*** 4872,4876 ****
|
||||
case VT_VARIABLE:
|
||||
case VT_ARRAYMEMBER:
|
||||
! len = strlen (value);
|
||||
break;
|
||||
case VT_POSPARMS:
|
||||
--- 4892,4896 ----
|
||||
case VT_VARIABLE:
|
||||
case VT_ARRAYMEMBER:
|
||||
! len = MB_STRLEN (value);
|
||||
break;
|
||||
case VT_POSPARMS:
|
||||
***************
|
||||
*** 4892,4896 ****
|
||||
*e1p += len;
|
||||
|
||||
! if (*e1p >= len || *e1p < 0)
|
||||
return (-1);
|
||||
|
||||
--- 4912,4916 ----
|
||||
*e1p += len;
|
||||
|
||||
! if (*e1p > len || *e1p < 0)
|
||||
return (-1);
|
||||
|
||||
***************
|
||||
*** 4983,4987 ****
|
||||
return -1;
|
||||
}
|
||||
! else if ((v = find_variable (varname)) && array_p (v))
|
||||
{
|
||||
vtype = VT_ARRAYMEMBER;
|
||||
--- 5003,5007 ----
|
||||
return -1;
|
||||
}
|
||||
! else if ((v = find_variable (varname)) && (invisible_p (v) == 0) && array_p (v))
|
||||
{
|
||||
vtype = VT_ARRAYMEMBER;
|
||||
Reference in New Issue
Block a user