From 2ea86eaa3df4727d86306bbfb0f17ec6bd82fa90 Mon Sep 17 00:00:00 2001 From: Zuhaitz Méndez Fernández de Aránguiz Date: Wed, 14 Jan 2026 12:48:37 +0000 Subject: Changed (non-standard) to a more standard approach with . --- src/codegen/codegen_decl.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'src/codegen') diff --git a/src/codegen/codegen_decl.c b/src/codegen/codegen_decl.c index 4979236..42e0ba9 100644 --- a/src/codegen/codegen_decl.c +++ b/src/codegen/codegen_decl.c @@ -93,11 +93,18 @@ void emit_preamble(ParserContext *ctx, FILE *out) "\"Assertion failed: \" " "__VA_ARGS__); exit(1); }\n", out); - fputs("string _z_readln_raw() { char *line = NULL; size_t len = 0; " - "if(getline(&line, &len, " - "stdin) == -1) return NULL; if(strlen(line) > 0 && " - "line[strlen(line)-1] == '\\n') " - "line[strlen(line)-1] = 0; return line; }\n", + fputs("string _z_readln_raw() { " + "size_t cap = 64; size_t len = 0; " + "char *line = z_malloc(cap); " + "if(!line) return NULL; " + "int c; " + "while((c = fgetc(stdin)) != EOF) { " + "if(c == '\\n') break; " + "if(len + 1 >= cap) { cap *= 2; char *n = z_realloc(line, cap); " + "if(!n) { z_free(line); return NULL; } line = n; } " + "line[len++] = c; } " + "if(len == 0 && c == EOF) { z_free(line); return NULL; } " + "line[len] = 0; return line; }\n", out); fputs("int _z_scan_helper(const char *fmt, ...) { char *l = " "_z_readln_raw(); if(!l) return " -- cgit v1.2.3