lex.c (java_new_lexer): Set 'encoding'.
authorBryce McKinlay <mckinlay@redhat.com>
Wed, 26 May 2004 18:45:26 +0000 (18:45 +0000)
committerBryce McKinlay <bryce@gcc.gnu.org>
Wed, 26 May 2004 18:45:26 +0000 (19:45 +0100)
* lex.c (java_new_lexer): Set 'encoding'.
(java_read_char): Improve error message for unrecognized characters.
* lex.h (struct java_lexer): New field 'encoding'.

From-SVN: r82292

gcc/java/ChangeLog
gcc/java/lex.c
gcc/java/lex.h

index 2b6ada6756139ef131653d20d21035b077df53d4..a51d4a175174f7fecb7be459da68ebc41b319cc0 100644 (file)
@@ -1,3 +1,9 @@
+2004-05-26  Bryce McKinlay  <mckinlay@redhat.com>
+
+       * lex.c (java_new_lexer): Set 'encoding'.
+       (java_read_char): Improve error message for unrecognized characters.
+       * lex.h (struct java_lexer): New field 'encoding'.
+
 2004-05-23  Paolo Bonzini  <bonzini@gnu.org>
 
        * Make-lang.in: Link in $(LIBCPP) instead of mkdeps.o.
index 18c0a8adb9a1da631dd37a4868995bb4a82ed507..de9b2222e0b5282709b3e57c461b18fa560ee54e 100644 (file)
@@ -228,6 +228,7 @@ java_new_lexer (FILE *finput, const char *encoding)
   lex->bs_count = 0;
   lex->unget_value = 0;
   lex->hit_eof = 0;
+  lex->encoding = encoding;
 
 #ifdef HAVE_ICONV
   lex->handle = iconv_open ("UCS-2", encoding);
@@ -295,7 +296,10 @@ java_new_lexer (FILE *finput, const char *encoding)
        enc_error = 1;
 #ifdef HAVE_ICONV
       else
-       lex->use_fallback = 1;
+        {
+         lex->use_fallback = 1;
+         lex->encoding = "UTF-8";
+       }
 #endif /* HAVE_ICONV */
     }
 
@@ -430,8 +434,11 @@ java_read_char (java_lexer *lex)
                  else
                    {
                      /* A more serious error.  */
-                     java_lex_error ("unrecognized character in input stream",
-                                     0);
+                     char buffer[128];
+                     sprintf (buffer,
+                              "Unrecognized character for encoding '%s'", 
+                              lex->encoding);
+                     java_lex_error (buffer, 0);
                      return UEOF;
                    }
                }
index c339cc13e512b4267bb2c2edd6146d74d2652472..213a80f3c5dfe2ed9a3dec4bc9d5bce8205f5bfe 100644 (file)
@@ -116,6 +116,9 @@ struct java_lexer
 
   /* If nonzero, we've hit EOF.  Used only by java_get_unicode().  */
   int hit_eof : 1;
+  
+  /* Name of the character encoding we're using.  */
+  const char *encoding;
 
 #ifdef HAVE_ICONV
   /* Nonzero if we've read any bytes.  We only recognize the