diff options
| author | Keith Packard <keithp@keithp.com> | 2017-12-19 11:33:36 -0800 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2017-12-19 11:33:36 -0800 | 
| commit | 431165e5fa72ba6dffd477de32960745cdec332c (patch) | |
| tree | e27c174d5d6cea72caf92de3a4fe2c97e9249ddf /src/scheme/ao_scheme_string.c | |
| parent | 5628b983497d9d03e10cccee157419210a49cfa9 (diff) | |
altos/scheme: Rework display/write code
Unify output functions and add bool to switch between write and
display mode. Make that only affect strings (as per r⁷rs).
Use print recursion detection in frame and stack code, eliminating
PRINT flags in type field.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/scheme/ao_scheme_string.c')
| -rw-r--r-- | src/scheme/ao_scheme_string.c | 56 | 
1 files changed, 25 insertions, 31 deletions
| diff --git a/src/scheme/ao_scheme_string.c b/src/scheme/ao_scheme_string.c index e18a8e85..b00ef276 100644 --- 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 -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; -	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);  } | 
