aboutsummaryrefslogtreecommitdiff
path: root/compiler/lexer.cup
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/lexer.cup')
-rw-r--r--compiler/lexer.cup15
1 files changed, 5 insertions, 10 deletions
diff --git a/compiler/lexer.cup b/compiler/lexer.cup
index 50b06e2..9e967f8 100644
--- a/compiler/lexer.cup
+++ b/compiler/lexer.cup
@@ -19,16 +19,11 @@ fn lexer_new(filename: char*, src: char*, len: int): Lexer* {
}
fn lexer_new_open_file(filename: char*): Lexer* {
- let input_file = fopen(filename, 'r');
- defer fclose(input_file);
-
- // using `fmap` here doesn't work on linux, for some reason.
- let file_size = fsize(input_file);
- let src: char* = malloc(file_size+1);
- fread(input_file, src, file_size);
- src[file_size] = '\0';
-
- return lexer_new(filename, src, file_size);
+ let file = fopen(filename, 'r');
+ let size = 0;
+ let source = fread_to_string(file, &size);
+ fclose(file);
+ return lexer_new(filename, source, size);
}
fn lexer_loc(lexer: Lexer*, loc: Location*) {