commit bash-20110520 snapshot

This commit is contained in:
Chet Ramey
2011-12-29 13:08:27 -05:00
parent f4f5e1c2b8
commit 22818c1449
16 changed files with 421 additions and 97 deletions
+73
View File
@@ -11661,3 +11661,76 @@ lib/readline/display.c
for UTF-8 combining characters. Added workaround dependent on
MACOSX. Fixes problem pointed out by Thomas De Contes
<d.l.tDecontes@free.fr>
5/16
----
lib/readline/rlmbutil.h
- WCWIDTH: wrapper for wcwidth that returns 0 for Unicode combining
characters on systems where wcwidth is broken (e.g., Mac OS X).
lib/readline/{complete,display,mbutil}.c
- use WCWIDTH instead of wcwidth
5/17
----
lib/readline/display.c
- update_line: after computing ofd and nfd, see whether the next
character in ofd is a zero-width combining character. If it is,
back ofd and nfd up one, so the base characters no longer compare
as equivalent. Fixes problem reported by Keith Winstein
<keithw@mit.edu>
lib/readline/nls.c
- _rl_utf8locale: new flag variable, set to non-zero if the current
locale is UTF-8
- utf8locale(): new function, returns 1 if the passed lspec (or the
current locale) indicates that the locale is UTF-8. Called from
_rl_init_eightbit
lib/readline/rlprivate.h
- extern declaration for _rl_utf8locale
locale.c
- locale_utf8locale: new flag variable, set to non-zero if the current
locale is UTF-8 (currently unused)
- locale_isutf8(): new function, returns 1 if the passed lspec (or the
current locale) indicates that the locale is UTF-8. Should be called
whenever the locale or LC_CTYPE value is modified
aclocal.m4
- BASH_WCWIDTH_BROKEN: new test for whether or not wcwidth returns
zero-width characters like unicode combining characters as having
display length 1; define WCWIDTH_BROKEN in this case
config.h.in
- WCWIDTH_BROKEN: new define
lib/readline/rlmbutil.h
- change WCWIDTH macro to use _rl_utf8locale and the full range of
Unicode combining characters (U+0300-U+036F)
5/19
----
lib/readline/rlprivate.h
- _rl_search_context: new member, prevc, will hold character read
prior to lastc
lib/readline/isearch.c
- _rl_isearch_dispatch: if the character causes us to index into
another keymap, save that character in cxt->prevc
- _rl_isearch_dispatch: if we index into another keymap, but don't
find a function that's special to i-search, and the character that
caused us to index into that keymap would have terminated the
search, push back cxt->prevc and cxt->lastc to make it appear as
if `prevc' terminated the search, and execute lastc as a command.
We have to push prevc back so we index into the same keymap before
we read lastc. Fixes bug report from Davor Cubranic
<cubranic@stat.ubc.ca>
5/20
----
expr.c
- expr_bind_variable: pay attention to the return value from
bind_variable and check whether or not we should error out due to
a readonly or noassign variable. Fixes bug reported by Eric
Blake <eblake@redhat.com>
Vendored
+27 -1
View File
@@ -1698,7 +1698,6 @@ AC_CHECK_FUNC(mbscmp, AC_DEFINE(HAVE_MBSCMP))
AC_CHECK_FUNC(mbsnrtowcs, AC_DEFINE(HAVE_MBSNRTOWCS))
AC_CHECK_FUNC(mbsrtowcs, AC_DEFINE(HAVE_MBSRTOWCS))
AC_REPLACE_FUNCS(mbschr)
AC_CHECK_FUNC(wcrtomb, AC_DEFINE(HAVE_WCRTOMB))
@@ -1763,6 +1762,33 @@ if test $bash_cv_type_wint_t = yes; then
AC_DEFINE(HAVE_WINT_T, 1, [systems should define this type here])
fi
dnl check for broken wcwidth
AC_CACHE_CHECK([for wcwidth broken with unicode combining characters],
bash_cv_wcwidth_broken,
[AC_TRY_RUN([
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>
#include <wchar.h>
main(c, v)
int c;
char **v;
{
int w;
setlocale(LC_ALL, "en_US.UTF-8");
w = wcwidth (0x0301);
exit (w == 0); /* exit 0 if wcwidth broken */
}
],
bash_cv_wcwidth_broken=yes, bash_cv_wcwdith_broken=no)])
if test $bash_cv_wcwidth_broken = yes; then
AC_DEFINE(WCWIDTH_BROKEN, 1, [wcwidth is usually not broken])
fi
if test "$am_cv_func_iconv" = yes; then
OLDLIBS="$LIBS"
LIBS="$LIBS $LIBICONV"
+51 -1
View File
@@ -10787,7 +10787,6 @@ if test "x$ac_cv_func_mbsrtowcs" = xyes; then :
fi
ac_fn_c_check_func "$LINENO" "mbschr" "ac_cv_func_mbschr"
if test "x$ac_cv_func_mbschr" = xyes; then :
$as_echo "@%:@define HAVE_MBSCHR 1" >>confdefs.h
@@ -11038,6 +11037,57 @@ $as_echo "@%:@define HAVE_WINT_T 1" >>confdefs.h
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wcwidth broken with unicode combining characters" >&5
$as_echo_n "checking for wcwidth broken with unicode combining characters... " >&6; }
if ${bash_cv_wcwidth_broken+:} false; then :
$as_echo_n "(cached) " >&6
else
if test "$cross_compiling" = yes; then :
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot run test program while cross compiling
See \`config.log' for more details" "$LINENO" 5; }
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>
#include <wchar.h>
main(c, v)
int c;
char **v;
{
int w;
setlocale(LC_ALL, "en_US.UTF-8");
w = wcwidth (0x0301);
exit (w == 0); /* exit 0 if wcwidth broken */
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
bash_cv_wcwidth_broken=yes
else
bash_cv_wcwdith_broken=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wcwidth_broken" >&5
$as_echo "$bash_cv_wcwidth_broken" >&6; }
if test $bash_cv_wcwidth_broken = yes; then
$as_echo "@%:@define WCWIDTH_BROKEN 1" >>confdefs.h
fi
if test "$am_cv_func_iconv" = yes; then
OLDLIBS="$LIBS"
LIBS="$LIBS $LIBICONV"
+18 -18
View File
@@ -15,55 +15,55 @@
'configure.in'
],
{
'AM_PROG_F77_C_O' => 1,
'_LT_AC_TAGCONFIG' => 1,
'm4_pattern_forbid' => 1,
'AM_PROG_F77_C_O' => 1,
'AC_INIT' => 1,
'AC_CANONICAL_TARGET' => 1,
'm4_pattern_forbid' => 1,
'_AM_COND_IF' => 1,
'AC_CONFIG_LIBOBJ_DIR' => 1,
'AC_CANONICAL_TARGET' => 1,
'AC_SUBST' => 1,
'AC_CANONICAL_HOST' => 1,
'AC_CONFIG_LIBOBJ_DIR' => 1,
'AC_FC_SRCEXT' => 1,
'AC_CANONICAL_HOST' => 1,
'AC_PROG_LIBTOOL' => 1,
'AM_INIT_AUTOMAKE' => 1,
'AC_CONFIG_SUBDIRS' => 1,
'AM_PATH_GUILE' => 1,
'AC_CONFIG_SUBDIRS' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'LT_CONFIG_LTDL_DIR' => 1,
'AC_CONFIG_LINKS' => 1,
'AC_REQUIRE_AUX_FILE' => 1,
'LT_SUPPORTED_TAG' => 1,
'AC_CONFIG_LINKS' => 1,
'm4_sinclude' => 1,
'LT_SUPPORTED_TAG' => 1,
'AM_MAINTAINER_MODE' => 1,
'AM_NLS' => 1,
'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
'_m4_warn' => 1,
'AM_MAKEFILE_INCLUDE' => 1,
'_m4_warn' => 1,
'AM_PROG_CXX_C_O' => 1,
'_AM_COND_ENDIF' => 1,
'_AM_MAKEFILE_INCLUDE' => 1,
'_AM_COND_ENDIF' => 1,
'AM_ENABLE_MULTILIB' => 1,
'AM_SILENT_RULES' => 1,
'AM_PROG_MOC' => 1,
'AC_CONFIG_FILES' => 1,
'LT_INIT' => 1,
'include' => 1,
'AM_GNU_GETTEXT' => 1,
'LT_INIT' => 1,
'AM_PROG_AR' => 1,
'AM_GNU_GETTEXT' => 1,
'AC_LIBSOURCE' => 1,
'AC_CANONICAL_BUILD' => 1,
'AM_PROG_FC_C_O' => 1,
'AC_CANONICAL_BUILD' => 1,
'AC_FC_FREEFORM' => 1,
'AH_OUTPUT' => 1,
'AC_CONFIG_AUX_DIR' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'AM_PROG_CC_C_O' => 1,
'm4_pattern_allow' => 1,
'AC_CONFIG_AUX_DIR' => 1,
'sinclude' => 1,
'AM_CONDITIONAL' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'm4_pattern_allow' => 1,
'AM_PROG_CC_C_O' => 1,
'AM_XGETTEXT_OPTION' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AM_CONDITIONAL' => 1,
'AC_CONFIG_HEADERS' => 1,
'AC_DEFINE_TRACE_LITERAL' => 1,
'AM_POT_TOOLS' => 1,
+67 -49
View File
@@ -580,7 +580,7 @@ m4trace:configure.in:513: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is ob
You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
aclocal.m4:1780: RL_LIB_READLINE_VERSION is expanded from...
aclocal.m4:1806: RL_LIB_READLINE_VERSION is expanded from...
configure.in:513: the top level])
m4trace:configure.in:513: -1- AC_DEFINE_TRACE_LITERAL([RL_READLINE_VERSION])
m4trace:configure.in:513: -1- m4_pattern_allow([^RL_READLINE_VERSION$])
@@ -773,8 +773,8 @@ m4trace:configure.in:659: -1- AC_SUBST_TRACE([MSGMERGE])
m4trace:configure.in:659: -1- m4_pattern_allow([^MSGMERGE$])
m4trace:configure.in:659: -1- _m4_warn([obsolete], [The macro `AC_OUTPUT_COMMANDS' is obsolete.
You should run autoupdate.], [../../lib/autoconf/status.m4:1028: AC_OUTPUT_COMMANDS is expanded from...
aclocal.m4:3681: AM_PO_SUBDIRS is expanded from...
aclocal.m4:2085: AM_GNU_GETTEXT is expanded from...
aclocal.m4:3707: AM_PO_SUBDIRS is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
configure.in:659: the top level])
m4trace:configure.in:659: -1- AC_DEFINE_TRACE_LITERAL([off_t])
m4trace:configure.in:659: -1- m4_pattern_allow([^off_t$])
@@ -838,9 +838,9 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
aclocal.m4:2587: gt_INTDIV0 is expanded from...
aclocal.m4:2373: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2085: AM_GNU_GETTEXT is expanded from...
aclocal.m4:2613: gt_INTDIV0 is expanded from...
aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
configure.in:659: the top level])
m4trace:configure.in:659: -1- AC_DEFINE_TRACE_LITERAL([INTDIV0_RAISES_SIGFPE])
m4trace:configure.in:659: -1- m4_pattern_allow([^INTDIV0_RAISES_SIGFPE$])
@@ -851,10 +851,10 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
aclocal.m4:2689: jm_AC_HEADER_INTTYPES_H is expanded from...
aclocal.m4:3990: jm_AC_TYPE_UINTMAX_T is expanded from...
aclocal.m4:2373: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2085: AM_GNU_GETTEXT is expanded from...
aclocal.m4:2715: jm_AC_HEADER_INTTYPES_H is expanded from...
aclocal.m4:4016: jm_AC_TYPE_UINTMAX_T is expanded from...
aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
configure.in:659: the top level])
m4trace:configure.in:659: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H_WITH_UINTMAX])
m4trace:configure.in:659: -1- m4_pattern_allow([^HAVE_INTTYPES_H_WITH_UINTMAX$])
@@ -866,10 +866,10 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
aclocal.m4:3960: jm_AC_HEADER_STDINT_H is expanded from...
aclocal.m4:3990: jm_AC_TYPE_UINTMAX_T is expanded from...
aclocal.m4:2373: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2085: AM_GNU_GETTEXT is expanded from...
aclocal.m4:3986: jm_AC_HEADER_STDINT_H is expanded from...
aclocal.m4:4016: jm_AC_TYPE_UINTMAX_T is expanded from...
aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
configure.in:659: the top level])
m4trace:configure.in:659: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDINT_H_WITH_UINTMAX])
m4trace:configure.in:659: -1- m4_pattern_allow([^HAVE_STDINT_H_WITH_UINTMAX$])
@@ -881,10 +881,10 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
aclocal.m4:4017: jm_AC_TYPE_UNSIGNED_LONG_LONG is expanded from...
aclocal.m4:3990: jm_AC_TYPE_UINTMAX_T is expanded from...
aclocal.m4:2373: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2085: AM_GNU_GETTEXT is expanded from...
aclocal.m4:4043: jm_AC_TYPE_UNSIGNED_LONG_LONG is expanded from...
aclocal.m4:4016: jm_AC_TYPE_UINTMAX_T is expanded from...
aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
configure.in:659: the top level])
m4trace:configure.in:659: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG])
m4trace:configure.in:659: -1- m4_pattern_allow([^HAVE_UNSIGNED_LONG_LONG$])
@@ -904,9 +904,9 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
aclocal.m4:2662: gt_HEADER_INTTYPES_H is expanded from...
aclocal.m4:2373: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2085: AM_GNU_GETTEXT is expanded from...
aclocal.m4:2688: gt_HEADER_INTTYPES_H is expanded from...
aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
configure.in:659: the top level])
m4trace:configure.in:659: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H])
m4trace:configure.in:659: -1- m4_pattern_allow([^HAVE_INTTYPES_H$])
@@ -917,9 +917,9 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
aclocal.m4:2717: gt_INTTYPES_PRI is expanded from...
aclocal.m4:2373: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2085: AM_GNU_GETTEXT is expanded from...
aclocal.m4:2743: gt_INTTYPES_PRI is expanded from...
aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
configure.in:659: the top level])
m4trace:configure.in:659: -1- AC_DEFINE_TRACE_LITERAL([PRI_MACROS_BROKEN])
m4trace:configure.in:659: -1- m4_pattern_allow([^PRI_MACROS_BROKEN$])
@@ -996,20 +996,20 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
aclocal.m4:2495: AM_ICONV_LINK is expanded from...
aclocal.m4:2550: AM_ICONV is expanded from...
aclocal.m4:2373: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2085: AM_GNU_GETTEXT is expanded from...
aclocal.m4:2521: AM_ICONV_LINK is expanded from...
aclocal.m4:2576: AM_ICONV is expanded from...
aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
configure.in:659: the top level])
m4trace:configure.in:659: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
aclocal.m4:2495: AM_ICONV_LINK is expanded from...
aclocal.m4:2550: AM_ICONV is expanded from...
aclocal.m4:2373: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2085: AM_GNU_GETTEXT is expanded from...
aclocal.m4:2521: AM_ICONV_LINK is expanded from...
aclocal.m4:2576: AM_ICONV is expanded from...
aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
configure.in:659: the top level])
m4trace:configure.in:659: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV])
m4trace:configure.in:659: -1- m4_pattern_allow([^HAVE_ICONV$])
@@ -1025,9 +1025,9 @@ m4trace:configure.in:659: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' i
You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
aclocal.m4:2550: AM_ICONV is expanded from...
aclocal.m4:2373: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2085: AM_GNU_GETTEXT is expanded from...
aclocal.m4:2576: AM_ICONV is expanded from...
aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
configure.in:659: the top level])
m4trace:configure.in:659: -1- AC_DEFINE_TRACE_LITERAL([ICONV_CONST])
m4trace:configure.in:659: -1- m4_pattern_allow([^ICONV_CONST$])
@@ -1038,9 +1038,9 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
aclocal.m4:2014: AM_LANGINFO_CODESET is expanded from...
aclocal.m4:2373: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2085: AM_GNU_GETTEXT is expanded from...
aclocal.m4:2040: AM_LANGINFO_CODESET is expanded from...
aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
configure.in:659: the top level])
m4trace:configure.in:659: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET])
m4trace:configure.in:659: -1- m4_pattern_allow([^HAVE_LANGINFO_CODESET$])
@@ -1051,9 +1051,9 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
aclocal.m4:2784: AM_LC_MESSAGES is expanded from...
aclocal.m4:2373: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2085: AM_GNU_GETTEXT is expanded from...
aclocal.m4:2810: AM_LC_MESSAGES is expanded from...
aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
configure.in:659: the top level])
m4trace:configure.in:659: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LC_MESSAGES])
m4trace:configure.in:659: -1- m4_pattern_allow([^HAVE_LC_MESSAGES$])
@@ -1071,21 +1071,21 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
aclocal.m4:2085: AM_GNU_GETTEXT is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
configure.in:659: the top level])
m4trace:configure.in:659: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
aclocal.m4:2085: AM_GNU_GETTEXT is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
configure.in:659: the top level])
m4trace:configure.in:659: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
aclocal.m4:2085: AM_GNU_GETTEXT is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
configure.in:659: the top level])
m4trace:configure.in:659: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS])
m4trace:configure.in:659: -1- m4_pattern_allow([^ENABLE_NLS$])
@@ -1829,6 +1829,24 @@ m4trace:configure.in:811: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WINT_T])
m4trace:configure.in:811: -1- m4_pattern_allow([^HAVE_WINT_T$])
m4trace:configure.in:811: -1- AH_OUTPUT([HAVE_WINT_T], [/* systems should define this type here */
@%:@undef HAVE_WINT_T])
m4trace:configure.in:811: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
aclocal.m4:1689: BASH_CHECK_MULTIBYTE is expanded from...
configure.in:811: the top level])
m4trace:configure.in:811: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [../../lib/autoconf/general.m4:2749: AC_RUN_IFELSE is expanded from...
../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
aclocal.m4:1689: BASH_CHECK_MULTIBYTE is expanded from...
configure.in:811: the top level])
m4trace:configure.in:811: -1- AC_DEFINE_TRACE_LITERAL([WCWIDTH_BROKEN])
m4trace:configure.in:811: -1- m4_pattern_allow([^WCWIDTH_BROKEN$])
m4trace:configure.in:811: -1- AH_OUTPUT([WCWIDTH_BROKEN], [/* wcwidth is usually not broken */
@%:@undef WCWIDTH_BROKEN])
m4trace:configure.in:811: -1- AH_OUTPUT([HAVE_LOCALE_CHARSET], [/* Define to 1 if you have the `locale_charset\' function. */
@%:@undef HAVE_LOCALE_CHARSET])
m4trace:configure.in:811: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LOCALE_CHARSET])
@@ -2100,7 +2118,7 @@ m4trace:configure.in:892: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is ob
You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
aclocal.m4:1894: BASH_FUNC_CTYPE_NONASCII is expanded from...
aclocal.m4:1920: BASH_FUNC_CTYPE_NONASCII is expanded from...
configure.in:892: the top level])
m4trace:configure.in:892: -1- AC_DEFINE_TRACE_LITERAL([CTYPE_NON_ASCII])
m4trace:configure.in:892: -1- m4_pattern_allow([^CTYPE_NON_ASCII$])
@@ -2320,7 +2338,7 @@ m4trace:configure.in:929: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is ob
You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
aclocal.m4:4123: BASH_STRUCT_WEXITSTATUS_OFFSET is expanded from...
aclocal.m4:4149: BASH_STRUCT_WEXITSTATUS_OFFSET is expanded from...
configure.in:929: the top level])
m4trace:configure.in:929: -1- AC_DEFINE_TRACE_LITERAL([WEXITSTATUS_OFFSET])
m4trace:configure.in:929: -1- m4_pattern_allow([^WEXITSTATUS_OFFSET$])
@@ -2402,7 +2420,7 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
aclocal.m4:4039: BASH_FUNC_SNPRINTF is expanded from...
aclocal.m4:4065: BASH_FUNC_SNPRINTF is expanded from...
configure.in:942: the top level])
m4trace:configure.in:942: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SNPRINTF])
m4trace:configure.in:942: -1- m4_pattern_allow([^HAVE_SNPRINTF$])
@@ -2415,7 +2433,7 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
aclocal.m4:4067: BASH_FUNC_VSNPRINTF is expanded from...
aclocal.m4:4093: BASH_FUNC_VSNPRINTF is expanded from...
configure.in:943: the top level])
m4trace:configure.in:943: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VSNPRINTF])
m4trace:configure.in:943: -1- m4_pattern_allow([^HAVE_VSNPRINTF$])
@@ -2499,7 +2517,7 @@ m4trace:configure.in:971: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is ob
You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
aclocal.m4:1938: BASH_CHECK_WCONTINUED is expanded from...
aclocal.m4:1964: BASH_CHECK_WCONTINUED is expanded from...
configure.in:971: the top level])
m4trace:configure.in:971: -1- AC_DEFINE_TRACE_LITERAL([WCONTINUED_BROKEN])
m4trace:configure.in:971: -1- m4_pattern_allow([^WCONTINUED_BROKEN$])
+3
View File
@@ -881,6 +881,9 @@
/* Define if you have the wcwidth function. */
#undef HAVE_WCWIDTH
/* and if it works */
#undef WCWIDTH_BROKEN
/* Presence of certain system include files. */
/* Define if you have the <arpa/inet.h> header file. */
Vendored
+51 -1
View File
@@ -10787,7 +10787,6 @@ if test "x$ac_cv_func_mbsrtowcs" = xyes; then :
fi
ac_fn_c_check_func "$LINENO" "mbschr" "ac_cv_func_mbschr"
if test "x$ac_cv_func_mbschr" = xyes; then :
$as_echo "#define HAVE_MBSCHR 1" >>confdefs.h
@@ -11038,6 +11037,57 @@ $as_echo "#define HAVE_WINT_T 1" >>confdefs.h
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wcwidth broken with unicode combining characters" >&5
$as_echo_n "checking for wcwidth broken with unicode combining characters... " >&6; }
if ${bash_cv_wcwidth_broken+:} false; then :
$as_echo_n "(cached) " >&6
else
if test "$cross_compiling" = yes; then :
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot run test program while cross compiling
See \`config.log' for more details" "$LINENO" 5; }
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>
#include <wchar.h>
main(c, v)
int c;
char **v;
{
int w;
setlocale(LC_ALL, "en_US.UTF-8");
w = wcwidth (0x0301);
exit (w == 0); /* exit 0 if wcwidth broken */
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
bash_cv_wcwidth_broken=yes
else
bash_cv_wcwdith_broken=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wcwidth_broken" >&5
$as_echo "$bash_cv_wcwidth_broken" >&6; }
if test $bash_cv_wcwidth_broken = yes; then
$as_echo "#define WCWIDTH_BROKEN 1" >>confdefs.h
fi
if test "$am_cv_func_iconv" = yes; then
OLDLIBS="$LIBS"
LIBS="$LIBS $LIBICONV"
+5 -1
View File
@@ -309,7 +309,11 @@ static void
expr_bind_variable (lhs, rhs)
char *lhs, *rhs;
{
(void)bind_int_variable (lhs, rhs);
SHELL_VAR *v;
v = bind_int_variable (lhs, rhs);
if (v && (readonly_p (v) || noassign_p (v)))
longjmp (evalbuf, 1); /* variable assignment error */
stupidly_hack_special_variables (lhs);
}
+2 -2
View File
@@ -679,7 +679,7 @@ fnwidth (string)
else
{
pos += clen;
w = wcwidth (wc);
w = WCWIDTH (wc);
width += (w >= 0) ? w : 1;
}
#else
@@ -766,7 +766,7 @@ fnprint (to_print, prefix_bytes)
break;
else
{
w = wcwidth (wc);
w = WCWIDTH (wc);
width = (w >= 0) ? w : 1;
}
fwrite (s, 1, tlen, rl_outstream);
+29 -10
View File
@@ -766,7 +766,7 @@ rl_redisplay ()
break; /* Found '\0' */
else
{
temp = wcwidth (wc);
temp = WCWIDTH (wc);
wc_width = (temp >= 0) ? temp : 1;
}
}
@@ -1320,7 +1320,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
else if (MB_NULLWCH (ret))
tempwidth = 0;
else
tempwidth = wcwidth (wc);
tempwidth = WCWIDTH (wc);
if (tempwidth > 0)
{
@@ -1377,6 +1377,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
temp = (omax < nmax) ? omax : nmax;
if (memcmp (old, new, temp) == 0) /* adding at the end */
{
new_offset = old_offset = temp;
ofd = old + temp;
nfd = new + temp;
}
@@ -1387,6 +1388,8 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
if (omax == nmax && STREQN (new, old, omax))
{
old_offset = omax;
new_offset = nmax;
ofd = old + omax;
nfd = new + nmax;
}
@@ -1399,6 +1402,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
{
old_offset = _rl_find_next_mbchar (old, old_offset, 1, MB_FIND_ANY);
new_offset = _rl_find_next_mbchar (new, new_offset, 1, MB_FIND_ANY);
ofd = old + old_offset;
nfd = new + new_offset;
}
@@ -1422,6 +1426,27 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
if (ofd == oe && nfd == ne)
return;
#if defined (HANDLE_MULTIBYTE)
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0 && _rl_utf8locale)
{
wchar_t wc;
mbstate_t ps = { 0 };
int t;
/* If the first character in the difference is a zero-width character,
assume it's a combining character and back one up so the two base
characters no longer compare equivalently. */
t = mbrtowc (&wc, ofd, MB_CUR_MAX, &ps);
if (t > 0 && UNICODE_COMBINING_CHAR (wc) && WCWIDTH (wc) == 0)
{
old_offset = _rl_find_prev_mbchar (old, ofd - old, MB_FIND_ANY);
new_offset = _rl_find_prev_mbchar (new, nfd - new, MB_FIND_ANY);
ofd = old + old_offset; /* equal by definition */
nfd = new + new_offset;
}
}
#endif
wsatend = 1; /* flag for trailing whitespace */
#if defined (HANDLE_MULTIBYTE)
@@ -1429,6 +1454,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
{
ols = old + _rl_find_prev_mbchar (old, oe - old, MB_FIND_ANY);
nls = new + _rl_find_prev_mbchar (new, ne - new, MB_FIND_ANY);
while ((ols > ofd) && (nls > nfd))
{
memset (&ps_old, 0, sizeof (mbstate_t));
@@ -2721,14 +2747,7 @@ _rl_ttymsg ("_rl_col_width: called with MB_CUR_MAX == 1");
{
point += tmp;
max -= tmp;
#if defined (MACOSX)
/* Mac OS X has a bug where wcwidth returns 1 for UTF-8 combining
characters */
if (wc >= 769 && wc <= 833)
tmp = 0;
else
#endif
tmp = wcwidth(wc);
tmp = WCWIDTH(wc);
width += (tmp >= 0) ? tmp : 1;
}
}
+21 -6
View File
@@ -6,7 +6,7 @@
/* */
/* **************************************************************** */
/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
/* Copyright (C) 1987-2011 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -110,7 +110,7 @@ _rl_scxt_alloc (type, flags)
cxt->history_pos = 0;
cxt->direction = 0;
cxt->lastc = 0;
cxt->prevc = cxt->lastc = 0;
cxt->sline = 0;
cxt->sline_len = cxt->sline_index = 0;
@@ -319,6 +319,9 @@ _rl_search_getchar (cxt)
return c;
}
#define ENDSRCH_CHAR(c) \
((CTRL_CHAR (c) || META_CHAR (c) || (c) == RUBOUT) && ((c) != CTRL ('G')))
/* Process just-read character C according to isearch context CXT. Return
-1 if the caller should just free the context and return, 0 if we should
break out of the loop, and 1 if we should continue to read characters. */
@@ -347,7 +350,10 @@ _rl_isearch_dispatch (cxt, c)
cxt->keymap = FUNCTION_TO_KEYMAP (cxt->keymap, c);
cxt->sflags |= SF_CHGKMAP;
/* XXX - we should probably save this sequence, so we can do
something useful if this doesn't end up mapping to a command. */
something useful if this doesn't end up mapping to a command we
interpret here. Right now we just save the most recent character
that caused the index into a new keymap. */
cxt->prevc = c;
return 1;
}
@@ -376,6 +382,18 @@ _rl_isearch_dispatch (cxt, c)
{
cxt->keymap = cxt->okeymap;
cxt->sflags &= ~SF_CHGKMAP;
/* If we indexed into a new keymap, but didn't map to a command that
affects the search (lastc > 0), and the character that mapped to a
new keymap would have ended the search (ENDSRCH_CHAR(cxt->prevc)),
handle that now as if the previous char would have ended the search
and we would have read the current character. */
/* XXX - should we check cxt->mb? */
if (cxt->lastc > 0 && ENDSRCH_CHAR (cxt->prevc))
{
rl_stuff_char (cxt->lastc);
rl_execute_next (cxt->prevc);
return (0);
}
}
/* The characters in isearch_terminators (set from the user-settable
@@ -398,9 +416,6 @@ _rl_isearch_dispatch (cxt, c)
return (0);
}
#define ENDSRCH_CHAR(c) \
((CTRL_CHAR (c) || META_CHAR (c) || (c) == RUBOUT) && ((c) != CTRL ('G')))
#if defined (HANDLE_MULTIBYTE)
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
{
+3 -3
View File
@@ -119,7 +119,7 @@ _rl_find_next_mbchar_internal (string, seed, count, find_non_zero)
point += tmp;
if (find_non_zero)
{
if (wcwidth (wc) == 0)
if (WCWIDTH (wc) == 0)
continue;
else
count--;
@@ -132,7 +132,7 @@ _rl_find_next_mbchar_internal (string, seed, count, find_non_zero)
if (find_non_zero)
{
tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
while (MB_NULLWCH (tmp) == 0 && MB_INVALIDCH (tmp) == 0 && wcwidth (wc) == 0)
while (MB_NULLWCH (tmp) == 0 && MB_INVALIDCH (tmp) == 0 && WCWIDTH (wc) == 0)
{
point += tmp;
tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
@@ -184,7 +184,7 @@ _rl_find_prev_mbchar_internal (string, seed, find_non_zero)
{
if (find_non_zero)
{
if (wcwidth (wc) != 0)
if (WCWIDTH (wc) != 0)
prev = point;
}
else
+34 -3
View File
@@ -43,6 +43,10 @@
# include <locale.h>
#endif
#if defined (HAVE_LANGINFO_CODESET)
# include <langinfo.h>
#endif
#include <ctype.h>
#include "rldefs.h"
@@ -50,6 +54,8 @@
#include "rlshell.h"
#include "rlprivate.h"
static int utf8locale PARAMS((char *));
#if !defined (HAVE_SETLOCALE)
/* A list of legal values for the LANG or LC_CTYPE environment variables.
If a locale name in this list is the value for the LC_ALL, LC_CTYPE,
@@ -72,9 +78,12 @@ static char *legal_lang_values[] =
};
static char *normalize_codeset PARAMS((char *));
static char *find_codeset PARAMS((char *, size_t *));
#endif /* !HAVE_SETLOCALE */
static char *find_codeset PARAMS((char *, size_t *));
int _rl_utf8locale = 0;
static char *_rl_get_locale_var PARAMS((const char *));
static char *
@@ -91,7 +100,26 @@ _rl_get_locale_var (v)
return lspec;
}
static int
utf8locale (lspec)
char *lspec;
{
char *cp;
size_t len;
#if HAVE_LANGINFO_CODESET
cp = nl_langinfo (CODESET);
return (STREQ (cp, "UTF-8") || STREQ (cp, "utf8"));
#else
cp = find_codeset (lspec, &len);
if (cp == 0 || len < 4 || len > 5)
return 0;
return ((len == 5) ? strncmp (cp. "UTF-8", len) == 0 : strncmp (cp, "utf8", 4) == 0);
#endif
}
/* Check for LC_ALL, LC_CTYPE, and LANG and use the first with a value
to decide the defaults for 8-bit character input and output. Returns
1 if we set eight-bit mode. */
@@ -116,6 +144,9 @@ _rl_init_eightbit ()
lspec = "";
t = setlocale (LC_CTYPE, lspec);
if (t && *t)
_rl_utf8locale = utf8locale (t);
if (t && *t && (t[0] != 'C' || t[1]) && (STREQ (t, "POSIX") == 0))
{
_rl_meta_flag = 1;
@@ -197,6 +228,7 @@ normalize_codeset (codeset)
return retval;
}
#endif /* !HAVE_SETLOCALE */
/* Isolate codeset portion of locale specification. */
static char *
@@ -249,4 +281,3 @@ find_codeset (name, lenp)
return result;
}
#endif /* !HAVE_SETLOCALE */
+9
View File
@@ -123,6 +123,15 @@ extern int _rl_walphabetic PARAMS((wchar_t));
#define MB_INVALIDCH(x) ((x) == (size_t)-1 || (x) == (size_t)-2)
#define MB_NULLWCH(x) ((x) == 0)
/* Unicode combining characters range from U+0300 to U+036F */
#define UNICODE_COMBINING_CHAR(x) ((x) >= 768 && (x) <= 879)
#if defined (WCWIDTH_BROKEN)
# define WCWIDTH(wc) ((_rl_utf8locale && UNICODE_COMBINING_CHAR(wc)) ? 0 : wcwidth(wc))
#else
# define WCWIDTH(wc) wcwidth(wc)
#endif
#else /* !HANDLE_MULTIBYTE */
#undef MB_LEN_MAX
+5 -1
View File
@@ -1,7 +1,7 @@
/* rlprivate.h -- functions and variables global to the readline library,
but not intended for use by applications. */
/* Copyright (C) 1999-2010 Free Software Foundation, Inc.
/* Copyright (C) 1999-2011 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -86,6 +86,7 @@ typedef struct __rl_search_context
int history_pos;
int direction;
int prevc;
int lastc;
#if defined (HANDLE_MULTIBYTE)
char mb[MB_LEN_MAX];
@@ -443,6 +444,9 @@ extern int _rl_history_saved_point;
extern _rl_arg_cxt _rl_argcxt;
/* nls.c */
extern int _rl_utf8locale;
/* readline.c */
extern int _rl_echoing_p;
extern int _rl_horizontal_scroll_mode;
+23 -1
View File
@@ -26,6 +26,10 @@
# include <unistd.h>
#endif
#if HAVE_LANGINFO_CODESET
# include <langinfo.h>
#endif
#include "bashintl.h"
#include "bashansi.h"
#include <stdio.h>
@@ -39,6 +43,8 @@
extern int errno;
#endif
int locale_utf8locale; /* unused for now */
extern int dump_translatable_strings, dump_po_strings;
/* The current locale when the program begins */
@@ -61,6 +67,7 @@ static char *lang;
static int reset_locale_vars __P((void));
static void locale_setblanks __P((void));
static int locale_isutf8 __P((char *));
/* Set the value of default_locale and make the current locale the
system default locale. This should be called very early in main(). */
@@ -267,7 +274,7 @@ set_lang (var, value)
lang = (char *)xmalloc (1);
lang[0] = '\0';
}
return ((lc_all == 0 || *lc_all == 0) ? reset_locale_vars () : 0);
}
@@ -532,3 +539,18 @@ locale_setblanks ()
sh_syntaxtab[x] &= ~(CSHBRK|CBLANK);
}
}
static int
locale_isutf8 (lspec)
char *lspec;
{
char *cp;
#if HAVE_LANGINFO_CODESET
cp = nl_langinfo (CODESET);
return (STREQ (cp, "UTF-8") || STREQ (cp, "utf8"));
#else
/* Take a shot */
return (strstr (lspec, "UTF-8") || strstr (lspec, "utf8"));
#endif
}