file: Added file read utility
authorLukas Krickl <lukas@krickl.dev>
Wed, 11 Mar 2026 09:59:17 +0000 (10:59 +0100)
committerLukas Krickl <lukas@krickl.dev>
Wed, 11 Mar 2026 09:59:17 +0000 (10:59 +0100)
src/lrts_impl.h
src/p_pc/u_stdio.c
src/u_file.c [new file with mode: 0644]
src/u_file.h [new file with mode: 0644]

index 6bd2ac75fcefa1a7aff1cc9f1461e7e4661346f7..d6a23113a7b87c93cdc272dcd67ac53241f7b530 100644 (file)
@@ -54,6 +54,7 @@
 #include "t_update.c"
 #include "l_lsl.c"
 #include "u_debug.c"
+#include "u_file.c"
 
 #endif
 
index c69e61461362520dd1934fd17ce749ec061ce52a..f5b3a54b4dd978ec173011ff6b50bebeddc313e1 100644 (file)
@@ -47,3 +47,16 @@ int u_eprintf(const char *fmt, ...) {
 
        return res;
 }
+
+
+U_FILE* u_fopen(const char *path, const char *mode) {
+       return fopen(path, mode);
+}
+
+void u_fclose(U_FILE *f) {
+       fclose(f);
+}
+
+int u_fgetc(U_FILE *f) {
+       return fgetc(f);
+}
diff --git a/src/u_file.c b/src/u_file.c
new file mode 100644 (file)
index 0000000..538ba27
--- /dev/null
@@ -0,0 +1,22 @@
+#include "u_file.h"
+
+const char *u_file_read(const char *path) {
+       u32 len = 16;
+       u32 index = 0;
+       char *buf = u_malloc(len);
+       char c;
+       U_FILE *f = u_fopen(path, "r");
+       if (f == LRTS_NULL) {
+               return LRTS_NULL;
+       }
+
+       while ((c = u_fgetc(f)) >= 0) {
+               if (index >= len) {
+                       len *= 2;
+                       buf = u_realloc(buf, len);
+               }
+               buf[index++] = c;
+       }
+
+       return buf;
+}
diff --git a/src/u_file.h b/src/u_file.h
new file mode 100644 (file)
index 0000000..53201cd
--- /dev/null
@@ -0,0 +1,14 @@
+#ifndef U_FILE_H__
+#define U_FILE_H__
+
+U_FILE* u_fopen(const char *path, const char *mode);
+
+void u_fclose(U_FILE *f);
+
+int u_fgetc(U_FILE *f);
+
+/* reads a file into a memory buffer 
+ * allocated with u_malloc */
+const char *u_file_read(const char *path);
+
+#endif