diff options
author | Stefan Weil <sw@weilnetz.de> | 2012-03-27 19:23:53 +0200 |
---|---|---|
committer | Blue Swirl <blauwirbel@gmail.com> | 2012-03-31 12:03:43 +0000 |
commit | bb55b712e8dc4d4eb515144d5c26798fea178cba (patch) | |
tree | c6d0e534d584a688333ada69bed22f32c188cf63 /scripts/tracetool | |
parent | 02b3efcb7509841871038d89406225d1aaf41684 (diff) |
Fix conversion from lower to upper case with Turkish locale
Some locale settings let make fail or create wrong results
because tr '[:lower:]' '[:upper:]' which is used to convert
from lower to upper case depends on the locale.
With locale tr_TR.UTF-8, lower case 'i' is not converted to 'I'.
This results in wrong entries in config-host.h like these ones:
#define CONFIG_QEMU_PREFiX "/usr/local"
#define CONFIG_QEMU_BiNDiR "/usr/local/bin"
This problem was reported by Emre Ersin.
The same problem occurs when configure creates the target specific
files config-target.mak. They get wrong declarations:
TARGET_CRiS=y
TARGET_i386=y
TARGET_MiCROBLAZE=y
TARGET_MiPS64=y
TARGET_MiPS=y
TARGET_UNiCORE32=y
It is sufficient to restrict the conversion to the characters a-z.
Using this explicit range avoids the dependency on the locale
settings and is also shorter.
v2:
POSIX says that 'tr a-z' is unspecified outside of the POSIX
locale, so we must set LC_ALL=C to make sure that we are using
POSIX (hint from Eric Blake, thanks).
Signed-off-by: Stefan Weil <sw@weilnetz.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Diffstat (limited to 'scripts/tracetool')
-rwxr-xr-x | scripts/tracetool | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/scripts/tracetool b/scripts/tracetool index 65bd0a1b4c..d675daba2b 100755 --- a/scripts/tracetool +++ b/scripts/tracetool @@ -410,7 +410,7 @@ linetoh_dtrace() args=$(get_args "$1") argnames=$(get_argnames "$1", ",") - nameupper=`echo $name | tr '[:lower:]' '[:upper:]'` + nameupper=`echo $name | LC_ALL=C tr '[a-z]' '[A-Z]'` # Define an empty function for the trace event cat <<EOF @@ -539,7 +539,7 @@ convert() fi if [ "$1" = "h" ]; then name=$(get_name "$str") - NAME=$(echo $name | tr '[:lower:]' '[:upper:]') + NAME=$(echo $name | LC_ALL=C tr '[a-z]' '[A-Z]') echo "#define TRACE_${NAME}_ENABLED ${enabled}" fi done |