summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2013-12-01 04:19:43 +0000
committerDimitri Sokolyuk <demon@dim13.org>2013-12-01 04:19:43 +0000
commit40cae2aa9431bb985bdb876eec6414729e1d62c2 (patch)
tree26fcc3fafba5f346f4cded5368bd696ec699cf79
parent2fea85ea4f6f9f46fcec701e3301fe9b1180fe93 (diff)
replace readprog with freadall
-rw-r--r--bf.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/bf.c b/bf.c
index 788b516..3413bb4 100644
--- a/bf.c
+++ b/bf.c
@@ -75,12 +75,11 @@ dumpcells(Cell *c)
}
char *
-readprog(char *fname)
+freadall(char *fname)
{
- char *prog, *p;
FILE *fd;
+ char *buf;
size_t len;
- int ch;
fd = fopen(fname, "r");
if (!fd)
@@ -90,17 +89,13 @@ readprog(char *fname)
len = ftell(fd);
fseek(fd, 0L, SEEK_SET);
- prog = calloc(len + 1, sizeof(char));
- assert(prog);
-
- p = prog;
- while ((ch = fgetc(fd)) != EOF)
- if (strchr("><+-,.[]", ch))
- *p++ = ch;
+ buf = calloc(len + 1, sizeof(char));
+ assert(buf);
+ fread(buf, sizeof(char), len, fd);
fclose(fd);
- return prog;
+ return buf;
}
void
@@ -140,7 +135,7 @@ main(int argc, char **argv)
if (!argc)
return -1;
- prog = readprog(*argv);
+ prog = freadall(*argv);
if (!prog)
errx(1, "not found: %s", *argv);