diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f0a1275ce7..8e916383fe 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +Mon Sep 21 19:29:32 1998 Stu Grossman + + * defs.h utils.c (fputc_filtered): New function. Does the obvious... + * jv-lang.c (java_printchar): Fix output of chars > 0xff. Fold + java_emit_char into java_printchar. + * language.h (PRINT_LITERAL_FORM): Reformat for readability. + Mon Sep 21 14:38:03 1998 Catherine Moore * config/arm/tm-arm.h (*_BREAKPOINT): Define both little endian diff --git a/gdb/jv-lang.c b/gdb/jv-lang.c index d7b0070319..603b225390 100644 --- a/gdb/jv-lang.c +++ b/gdb/jv-lang.c @@ -32,6 +32,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "c-lang.h" #include "jv-lang.h" #include "gdbcore.h" +#include struct type *java_int_type; struct type *java_byte_type; @@ -703,67 +704,45 @@ java_value_string (ptr, len) error ("not implemented - java_value_string"); /* FIXME */ } -/* Print the character C on STREAM as part of the contents of a literal - string whose delimiter is QUOTER. Note that that format for printing - characters and strings is language specific. */ +static void java_printchar PARAMS ((int c, GDB_FILE *stream)); -void -java_emit_char (c, stream, quoter) - register int c; - GDB_FILE *stream; - int quoter; -{ - if (PRINT_LITERAL_FORM (c)) - { - if (c == '\\' || c == quoter) - { - fputs_filtered ("\\", stream); - } - fprintf_filtered (stream, "%c", c); - } - else - { - switch (c) - { - case '\n': - fputs_filtered ("\\n", stream); - break; - case '\b': - fputs_filtered ("\\b", stream); - break; - case '\t': - fputs_filtered ("\\t", stream); - break; - case '\f': - fputs_filtered ("\\f", stream); - break; - case '\r': - fputs_filtered ("\\r", stream); - break; - case '\033': - fputs_filtered ("\\e", stream); - break; - case '\007': - fputs_filtered ("\\a", stream); - break; - default: - if (c < 256) - fprintf_filtered (stream, "\\%.3o", (unsigned int) c); - else - fprintf_filtered (stream, "\\u%.4x", (unsigned int) c); - break; - } - } -} - -void +static void java_printchar (c, stream) int c; GDB_FILE *stream; { - fputs_filtered ("'", stream); - java_emit_char (c, stream, '\''); - fputs_filtered ("'", stream); + fputc_filtered ('\'', stream); + + switch (c) + { + case '\\': + case '\'': + fprintf_filtered (stream, "\\%c", c); + break; + case '\b': + fputs_filtered ("\\b", stream); + break; + case '\t': + fputs_filtered ("\\t", stream); + break; + case '\n': + fputs_filtered ("\\n", stream); + break; + case '\f': + fputs_filtered ("\\f", stream); + break; + case '\r': + fputs_filtered ("\\r", stream); + break; + default: + if (isprint (c)) + fputc_filtered (c, stream); + else + fprintf_filtered (stream, "\\u%.4x", (unsigned int) c); + break; + } + + fputc_filtered ('\'', stream); } static value_ptr diff --git a/gdb/language.h b/gdb/language.h index 877238d39a..347160dd4e 100644 --- a/gdb/language.h +++ b/gdb/language.h @@ -318,8 +318,10 @@ set_language PARAMS ((enum language)); and the "other representation" is '\141'. The "other representation" is program language dependent. */ -#define PRINT_LITERAL_FORM(c) \ - ((c)>=0x20 && ((c)<0x7F || (c)>=0xA0) && (!sevenbit_strings || (c)<0x80)) +#define PRINT_LITERAL_FORM(c) \ + ((c) >= 0x20 \ + && ((c) < 0x7F || (c) >= 0xA0) \ + && (!sevenbit_strings || (c) < 0x80)) /* Return a format string for printf that will print a number in one of the local (language-specific) formats. Result is static and is