projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos/scheme: Rework display/write code
[fw/altos]
/
src
/
scheme
/
ao_scheme_string.c
diff --git
a/src/scheme/ao_scheme_string.c
b/src/scheme/ao_scheme_string.c
index e18a8e854df8ded0dfeef1ede11f757a61dd5a28..b00ef276815be1b04f6476603b1924ce56a1eaa4 100644
(file)
--- a/
src/scheme/ao_scheme_string.c
+++ b/
src/scheme/ao_scheme_string.c
@@
-173,42
+173,36
@@
ao_scheme_string_unpack(struct ao_scheme_string *a)
}
void
}
void
-ao_scheme_string_write(ao_poly p)
+ao_scheme_string_write(ao_poly p
, bool write
)
{
struct ao_scheme_string *s = ao_scheme_poly_string(p);
char *sval = s->val;
char c;
{
struct ao_scheme_string *s = ao_scheme_poly_string(p);
char *sval = s->val;
char c;
- putchar('"');
- while ((c = *sval++)) {
- switch (c) {
- case '\n':
- printf ("\\n");
- break;
- case '\r':
- printf ("\\r");
- break;
- case '\t':
- printf ("\\t");
- break;
- default:
- if (c < ' ')
- printf("\\%03o", c);
- else
- putchar(c);
- break;
+ if (write) {
+ putchar('"');
+ while ((c = *sval++)) {
+ switch (c) {
+ case '\n':
+ printf ("\\n");
+ break;
+ case '\r':
+ printf ("\\r");
+ break;
+ case '\t':
+ printf ("\\t");
+ break;
+ default:
+ if (c < ' ')
+ printf("\\%03o", c);
+ else
+ putchar(c);
+ break;
+ }
}
}
+ putchar('"');
+ } else {
+ while ((c = *sval++))
+ putchar(c);
}
}
- putchar('"');
-}
-
-void
-ao_scheme_string_display(ao_poly p)
-{
- struct ao_scheme_string *s = ao_scheme_poly_string(p);
- char *sval = s->val;
- char c;
-
- while ((c = *sval++))
- putchar(c);
}
}