aboutsummaryrefslogtreecommitdiff
path: root/slurp.c
diff options
context:
space:
mode:
authorDavid Phillips <david@sighup.nz>2017-10-02 23:59:34 +1300
committerDavid Phillips <david@sighup.nz>2017-10-03 00:00:31 +1300
commit630135558c432a4cae1e74fdad09007ee17932ad (patch)
treeceab9848d4db4ff9d76f7070b2e87761bd41d0bf /slurp.c
parentefeab5984a62ad6d7a4a7285e2fc7275c38339c5 (diff)
downloadsand-leek-630135558c432a4cae1e74fdad09007ee17932ad.tar.xz
Dump WIP of opencl port
Diffstat (limited to 'slurp.c')
-rw-r--r--slurp.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/slurp.c b/slurp.c
new file mode 100644
index 0000000..ea7e2f7
--- /dev/null
+++ b/slurp.c
@@ -0,0 +1,31 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#define BUFFER_STEP 10240
+
+char *slurp(FILE *f, size_t *size)
+{
+ char *buffer = NULL;
+ size_t nread = 0;
+
+ buffer = malloc(BUFFER_STEP);
+ if (!buffer) {
+ perror("malloc");
+ return NULL;
+ }
+
+ while (!feof(f)) {
+ nread = fread(&buffer[*size], 1, BUFFER_STEP, f);
+ *size += nread;
+ printf("size is %d\n",*size);
+ buffer = realloc(buffer, *size);
+ if (!buffer) {
+ perror("realloc");
+ return NULL;
+ }
+ }
+ if (ferror(f)) {
+ perror("slurp/fread");
+ }
+ return buffer;
+}