From 6529e5a11e6d1c6f2a3fc3c08d77d22aaeccfef6 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 11 May 2025 19:39:58 +0900 Subject: refactor --- main.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'main.c') diff --git a/main.c b/main.c index 186e504..ffc0dd3 100644 --- a/main.c +++ b/main.c @@ -10,6 +10,7 @@ extern FILE* stderr; int atoi(const char*); void* calloc(size_t, size_t); void exit(int); +char* fgets(char*, int, FILE*); int getchar(void); int isalnum(int); int isalpha(int); @@ -34,16 +35,14 @@ void unreachable() { fatal_error("unreachable"); } -char* read_all() { +char* read_all(FILE* in) { char* buf = calloc(1024 * 1024, sizeof(char)); char* cur = buf; - while (1) { - int c = getchar(); - if (c == -1) { - break; - } - *cur = c; - ++cur; + char* tmp = calloc(1024, sizeof(char)); + while (fgets(tmp, 1024, in)) { + size_t len = strlen(tmp); + memcpy(cur, tmp, len); + cur += len; } return buf; } @@ -2184,7 +2183,7 @@ void codegen(Program* prog) { } int main() { - char* source = read_all(); + char* source = read_all(stdin); Token* tokens = tokenize(source); Program* prog = parse(tokens); analyze(prog); -- cgit v1.2.3-70-g09d2