summaryrefslogtreecommitdiffstats
path: root/src/parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser.c')
-rw-r--r--src/parser.c25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/parser.c b/src/parser.c
index 9206f42..e90b200 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -217,12 +217,11 @@ next_escaped_line(FILE *f, char * line, int * lino, char * error) {
return 0;
}
-recipe *
-parse(char * path, const char * prev)
+FILE *
+file_from_path(const char * path)
{
- fdebug("Parsing: %s\n", path);
-
FILE *f;
+
if (!strcmp(path, "-")) {
f = stdin;
} else {
@@ -234,10 +233,20 @@ parse(char * path, const char * prev)
strcpy(tmp, path);
}
f = fopen(tmp, "r");
- if (!f) {
- fprintf(stderr, "Can't open %s\n", path);
- return NULL;
- }
+ }
+
+ return f;
+}
+
+recipe *
+parse(char * path, const char * prev)
+{
+ fdebug("Parsing: %s\n", path);
+
+ FILE *f = file_from_path(path);
+ if (!f) {
+ fprintf(stderr, "Can't open %s\n", path);
+ return NULL;
}
recipe * r = new_recipe();