From 6daa56323634e1142f2d22a756a77a74382cf3a7 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Mon, 21 Jul 2025 10:09:00 +0900 Subject: feat: separate main.c --- common.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 common.c (limited to 'common.c') diff --git a/common.c b/common.c new file mode 100644 index 0000000..fcc0790 --- /dev/null +++ b/common.c @@ -0,0 +1,41 @@ +void fatal_error(const char* msg) { + fprintf(stderr, "%s\n", msg); + exit(1); +} + +void unreachable() { + fatal_error("unreachable"); +} + +char* read_all(FILE* in) { + char* buf = calloc(1024 * 1024, sizeof(char)); + char* cur = buf; + char* tmp = calloc(1024, sizeof(char)); + while (fgets(tmp, 1024, in)) { + size_t len = strlen(tmp); + memcpy(cur, tmp, len); + cur += len; + } + return buf; +} + +struct String { + char* data; + size_t len; +}; +typedef struct String String; + +char* string_to_cstr(const String* s) { + char* buf = calloc(s->len + 1, sizeof(char)); + memcpy(buf, s->data, s->len); + return buf; +} + +int string_equals(const String* s1, const String* s2) { + return s1->len == s2->len && strncmp(s1->data, s2->data, s1->len) == 0; +} + +int string_equals_cstr(const String* s1, const char* s2) { + size_t s2_len = strlen(s2); + return s1->len == s2_len && strncmp(s1->data, s2, s1->len) == 0; +} -- cgit v1.2.3-70-g09d2