lex.c (MULTIBYTE_CHARS): #undef if cross compiling.

* lex.c (MULTIBYTE_CHARS): #undef if cross compiling.
	(real_yylex): Record wide strings using target endianness, not host.

From-SVN: r16316
This commit is contained in:
Doug Evans 1997-11-04 21:57:40 +00:00 committed by Doug Evans
parent 645ebf3767
commit 30c317f5da
2 changed files with 13 additions and 7 deletions

View File

@ -1,3 +1,8 @@
Tue Nov 4 13:45:10 1997 Doug Evans <devans@canuck.cygnus.com>
* lex.c (MULTIBYTE_CHARS): #undef if cross compiling.
(real_yylex): Record wide strings using target endianness, not host.
1997-11-03 Brendan Kehoe <brendan@lisa.cygnus.com>
* repo.c (rindex): Add decl unconditionally.

View File

@ -39,6 +39,13 @@ Boston, MA 02111-1307, USA. */
#include "obstack.h"
#include "c-pragma.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 <stdlib.h>
#include <locale.h>
@ -4064,15 +4071,9 @@ real_yylex ()
bzero (widep + (len * WCHAR_BYTES), WCHAR_BYTES);
#else
{
union { long l; char c[sizeof (long)]; } u;
int big_endian;
char *wp, *cp;
/* Determine whether host is little or big endian. */
u.l = 1;
big_endian = u.c[sizeof (long) - 1];
wp = widep + (big_endian ? WCHAR_BYTES - 1 : 0);
wp = widep + (BYTES_BIG_ENDIAN ? WCHAR_BYTES - 1 : 0);
bzero (widep, (p - token_buffer) * WCHAR_BYTES);
for (cp = token_buffer + 1; cp < p; cp++)
*wp = *cp, wp += WCHAR_BYTES;