From eb7aef5b50c77b2ada5ec883b446b18e18348012 Mon Sep 17 00:00:00 2001 From: Raymond Toy Date: Tue, 4 Sep 2012 19:49:17 -0700 Subject: [PATCH] Output lisp strings in utf8 format in ldb print. print.c: * Use utf16_output to output strings as utf8 instead of raw utf16. interr.c: * Make utf16_output public instead of static. interr.h: * Declare utf16_output. --- src/lisp/interr.c | 2 +- src/lisp/interr.h | 1 + src/lisp/print.c | 9 +-------- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/src/lisp/interr.c b/src/lisp/interr.c index 5b43b6a..6b46957 100644 --- a/src/lisp/interr.c +++ b/src/lisp/interr.c @@ -262,7 +262,7 @@ utf16_codepoint(unsigned short int* utf16, int len, int* consumed) * Send the utf-16 Lisp unicode string to standard output as a * utf8-encoded sequence of octets. */ -static void +void utf16_output(unsigned short int* utf16, int len) { while (len) { diff --git a/src/lisp/interr.h b/src/lisp/interr.h index 29f4eb7..2611c64 100644 --- a/src/lisp/interr.h +++ b/src/lisp/interr.h @@ -14,6 +14,7 @@ extern void lose(char *fmt, ...); extern void set_lossage_handler(void fun(void)); extern void internal_error(os_context_t * context); +extern void utf16_output(unsigned short int* utf16, int len); extern lispobj debug_print(lispobj string); #endif /* _INTERR_H_ */ diff --git a/src/lisp/print.c b/src/lisp/print.c index 34aa0ce..b4758d8 100644 --- a/src/lisp/print.c +++ b/src/lisp/print.c @@ -376,14 +376,7 @@ print_string(struct vector* vector) uint16_t *charptr = (uint16_t *) vector->data; int len = fixnum_value(vector->length); - while (len-- > 0) { - if (*charptr == '"') { - putchar('\\'); - } - /* Just dump out the UTF-16 data */ - fwrite(charptr, sizeof(*charptr), 1, stdout); - charptr++; - } + utf16_output(charptr, len); #endif } -- 1.7.10.4