diff options
Diffstat (limited to 'input.c')
| -rw-r--r-- | input.c | 33 |
1 files changed, 33 insertions, 0 deletions
@@ -0,0 +1,33 @@ +/* + * input.c: read the source form + */ + +#include <stdio.h> +#include <assert.h> +#include "buttress.h" + +static void unget(input *in, char c) { + assert(in->npushback < INPUT_PUSHBACK_MAX); + in->pushback[in->npushback++] = c; +} + +/* + * Can return EOF + */ +static int get(input *in) { + if (in->npushback) + return (unsigned char)in->pushback[--in->npushback]; + else if (in->currfp) { + int c = getc(in->currfp); + if (c == EOF) { + fclose(in->currfp); + in->currfp = NULL; + in->currindex++; + } + return c; + } +} + +paragraph *read_input(input *in) { + /* FIXME: do some reading */ +} |