blob: f2a5c82fec181af83a6ad81fc02ad9225d4be7e2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#include "io.h"
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
#include "stdint.h"
#include "unistd.h"
int l_readfile(lua_State* L){
size_t len;
char* a = (char*)luaL_checklstring(L, 1, &len);
FILE *fp;
const uint64_t chunk_iter = 512;
uint64_t chunk = 512;
uint64_t count = 0;
char* out = malloc(chunk);
fp = fopen(a, "r");
for(;;){
char ch = fgetc(fp);
if(ch==EOF) break;
if(count > chunk){
chunk += chunk_iter;
out = realloc(out, chunk);
}
out[count] = ch;
count++;
}
lua_pushstring(L, out);
free(out);
return 1;
};
|