aboutsummaryrefslogtreecommitdiff
path: root/gcc/c-lex.c
diff options
context:
space:
mode:
authorMatthew Hiller <hiller@gcc.gnu.org>2002-04-24 22:18:25 +0000
committerMatthew Hiller <hiller@gcc.gnu.org>2002-04-24 22:18:25 +0000
commit64cdc38350d29ed0e2d5fa0b4bdd074ec69135dd (patch)
treec295949959dc8ecb1998758d055af141fb272257 /gcc/c-lex.c
parent67f0a6bf0132909f392c07fa5eab27b3e8c6e483 (diff)
downloadgcc-64cdc38350d29ed0e2d5fa0b4bdd074ec69135dd.zip
gcc-64cdc38350d29ed0e2d5fa0b4bdd074ec69135dd.tar.gz
gcc-64cdc38350d29ed0e2d5fa0b4bdd074ec69135dd.tar.bz2
cpplex.c: Remove conditional #undef of MULTIBYTE_CHARS.
2002-04-24 Matt Hiller <hiller@redhat.com> * cpplex.c: Remove conditional #undef of MULTIBYTE_CHARS. * c-lex.c: Ditto. * cpplex.c (skip_line_comment): Process comment one multibyte character at a time rather than one char at a time, if appropriate. (parse_string): Process string one multibyte character at a time rather than one char at a time, if appropriate. * c-lex.c (lex_string): Lex and copy multibyte strings appropriately. * cpplib.h (cppchar_t): Change to unsigned. From-SVN: r52737
Diffstat (limited to 'gcc/c-lex.c')
-rw-r--r--gcc/c-lex.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/gcc/c-lex.c b/gcc/c-lex.c
index 8a76dd3..f2f8c8c 100644
--- a/gcc/c-lex.c
+++ b/gcc/c-lex.c
@@ -40,13 +40,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "splay-tree.h"
#include "debug.h"
-/* MULTIBYTE_CHARS support only works for native compilers.
- ??? Ideally what we want is to model widechar support after
- the current floating point support. */
-#ifdef CROSS_COMPILE
-#undef MULTIBYTE_CHARS
-#endif
-
#ifdef MULTIBYTE_CHARS
#include "mbchar.h"
#include <locale.h>
@@ -1282,8 +1275,8 @@ lex_string (str, len, wide)
c = cpp_parse_escape (parse_in, &p, limit, mask);
}
- /* Add this single character into the buffer either as a wchar_t
- or as a single byte. */
+ /* Add this single character into the buffer either as a wchar_t,
+ a multibyte sequence, or as a single byte. */
if (wide)
{
unsigned charwidth = TYPE_PRECISION (char_type_node);
@@ -1304,6 +1297,16 @@ lex_string (str, len, wide)
}
q += WCHAR_BYTES;
}
+#ifdef MULTIBYTE_CHARS
+ else if (char_len > 1)
+ {
+ /* We're dealing with a multibyte character. */
+ for ( ; char_len >0; --char_len)
+ {
+ *q++ = *(p - char_len);
+ }
+ }
+#endif
else
{
*q++ = c;