X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Flisp%2Fao_lisp_string.c;h=1daa50ea968f70ec211e9d487367ad7a58524aa3;hb=12a1f6ad48f2b924f71239effeb90afca75a090f;hp=207d4f3be8eae13c90e6e4869a8327ba64f0793c;hpb=ddb4b8d90478ae324aa207a7541352c1ac9451ee;p=fw%2Faltos diff --git a/src/lisp/ao_lisp_string.c b/src/lisp/ao_lisp_string.c index 207d4f3b..1daa50ea 100644 --- a/src/lisp/ao_lisp_string.c +++ b/src/lisp/ao_lisp_string.c @@ -83,9 +83,9 @@ ao_lisp_string_pack(struct ao_lisp_cons *cons) char *s = r; while (cons) { - if (ao_lisp_poly_type(cons->car) != AO_LISP_INT) + if (!ao_lisp_integer_typep(ao_lisp_poly_type(cons->car))) return ao_lisp_error(AO_LISP_INVALID, "non-int passed to pack"); - *s++ = ao_lisp_poly_int(cons->car); + *s++ = ao_lisp_poly_integer(cons->car); cons = ao_lisp_poly_cons(cons->cdr); } *s++ = 0; @@ -103,10 +103,10 @@ ao_lisp_string_unpack(char *a) ao_lisp_cons_stash(0, cons); ao_lisp_cons_stash(1, tail); ao_lisp_string_stash(0, a); - struct ao_lisp_cons *n = ao_lisp_cons_cons(ao_lisp_int_poly(c), NULL); + struct ao_lisp_cons *n = ao_lisp_cons_cons(ao_lisp_int_poly(c), AO_LISP_NIL); + a = ao_lisp_string_fetch(0); cons = ao_lisp_cons_fetch(0); tail = ao_lisp_cons_fetch(1); - a = ao_lisp_string_fetch(0); if (!n) { cons = NULL; @@ -122,7 +122,7 @@ ao_lisp_string_unpack(char *a) } void -ao_lisp_string_print(ao_poly p) +ao_lisp_string_write(ao_poly p) { char *s = ao_lisp_poly_string(p); char c; @@ -140,7 +140,10 @@ ao_lisp_string_print(ao_poly p) printf ("\\t"); break; default: - putchar(c); + if (c < ' ') + printf("\\%03o", c); + else + putchar(c); break; } } @@ -148,7 +151,7 @@ ao_lisp_string_print(ao_poly p) } void -ao_lisp_string_patom(ao_poly p) +ao_lisp_string_display(ao_poly p) { char *s = ao_lisp_poly_string(p); char c;