diff options
| author | ame <[email protected]> | 2023-12-19 11:38:32 -0600 |
|---|---|---|
| committer | ame <[email protected]> | 2023-12-19 11:38:32 -0600 |
| commit | 2125ee40a74fad6d9c92f835dda590e35ffae0e5 (patch) | |
| tree | 69a999e4d39ddb4dfa3b7be37f5454f8e7d4e5a2 /src/io.c | |
| parent | 64d3e78262c35857ae9310c9b9da9ee91ea43dd2 (diff) | |
updated some io stuff
Diffstat (limited to 'src/io.c')
| -rw-r--r-- | src/io.c | 22 |
1 files changed, 15 insertions, 7 deletions
@@ -1,3 +1,4 @@ +#include <unistd.h> #include "io.h" #include "stdlib.h" #include "stdio.h" @@ -10,18 +11,25 @@ int l_readfile(lua_State* L){ char* a = (char*)luaL_checklstring(L, 1, &len); FILE *fp; - const uint64_t chunk_iter = 512; - uint64_t chunk = 512; + const uint64_t chunk_iter = _file_malloc_chunk; + uint64_t chunk = chunk_iter; uint64_t count = 0; - char* out = malloc(chunk); - + + if(access(a, F_OK)) { + p_fatal("file not found"); + } + if(access(a, R_OK)){ + p_fatal("missing permissions"); + } + fp = fopen(a, "r"); - + char* out = malloc(chunk); + for(;;){ - char ch = fgetc(fp); + char ch = fgetc(fp); if(ch==EOF) break; - if(count > chunk){ + if(count >= chunk){ chunk += chunk_iter; out = realloc(out, chunk); } |
