diff options
| author | nsfisis <nsfisis@gmail.com> | 2025-07-21 10:09:00 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2025-08-15 10:04:28 +0900 |
| commit | 6daa56323634e1142f2d22a756a77a74382cf3a7 (patch) | |
| tree | 85355ad1ad0cf5dca837f8b4cd7e6b09eaa7bd9d /common.c | |
| parent | 16bbc2e0d72f94f8061ba294d1776edfe5bf8a55 (diff) | |
| download | ducc-6daa56323634e1142f2d22a756a77a74382cf3a7.tar.gz ducc-6daa56323634e1142f2d22a756a77a74382cf3a7.tar.zst ducc-6daa56323634e1142f2d22a756a77a74382cf3a7.zip | |
feat: separate main.c
Diffstat (limited to 'common.c')
| -rw-r--r-- | common.c | 41 |
1 files changed, 41 insertions, 0 deletions
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; +} |
