klisp

an open source interpreter for the Kernel Programming Language.
git clone http://git.hanabi.in/repos/klisp.git
Log | Files | Refs | README

commit c706ac20b438a864a022aeaba17c10a275bf5a23
parent 6f168541efab052dd5f9d8c2e0b761546f131f4a
Author: Andres Navarro <canavarro82@gmail.com>
Date:   Thu, 21 Apr 2011 20:43:48 -0300

Corrected display code to avoid escaping backslashes and double quotes.

Diffstat:
Msrc/kwrite.c | 9++++++---
1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/kwrite.c b/src/kwrite.c @@ -92,8 +92,10 @@ void kw_print_string(klisp_State *K, TValue str) while (i < size) { /* find the longest printf-able substring to avoid calling printf for every char */ - for (ptr = buf; i < size && *ptr != '\0' - && *ptr != '\\' && *ptr != '"'; i++, ptr++) + for (ptr = buf; + i < size && *ptr != '\0' && + (K->write_displayp || (*ptr != '\\' && *ptr != '"')); + i++, ptr++) ; /* NOTE: this work even if ptr == buf (which can only happen the @@ -103,7 +105,8 @@ void kw_print_string(klisp_State *K, TValue str) kw_printf(K, "%s", buf); *ptr = ch; - while(i < size && (*ptr == '\0' || *ptr == '\\' || *ptr == '"')) { + while(i < size && (*ptr == '\0' || + (!K->write_displayp && (*ptr == '\\' || *ptr == '"')))) { if (*ptr == '\0') kw_printf(K, "%c", '\0'); /* this may not show in the terminal */ else