diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/manifest_parser.cc | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/src/manifest_parser.cc b/src/manifest_parser.cc index d4f0007..88c16ab 100644 --- a/src/manifest_parser.cc +++ b/src/manifest_parser.cc @@ -28,6 +28,7 @@ ManifestParser::ManifestParser(State* state, FileReader* file_reader) : state_(state), file_reader_(file_reader) { env_ = &state->bindings_; } + bool ManifestParser::Load(const string& filename, string* err) { string contents; string read_err; @@ -35,7 +36,6 @@ bool ManifestParser::Load(const string& filename, string* err) { *err = "loading '" + filename + "': " + read_err; return false; } - contents.resize(contents.size() + 10); return Parse(filename, contents, err); } @@ -338,17 +338,11 @@ bool ManifestParser::ParseEdge(string* err) { } bool ManifestParser::ParseFileInclude(bool new_scope, string* err) { - // XXX this should use ReadPath! EvalString eval; if (!lexer_.ReadPath(&eval, err)) return false; string path = eval.Evaluate(env_); - string contents; - string read_err; - if (!file_reader_->ReadFile(path, &contents, &read_err)) - return lexer_.Error("loading '" + path + "': " + read_err, err); - ManifestParser subparser(state_, file_reader_); if (new_scope) { subparser.env_ = new BindingEnv(env_); @@ -356,8 +350,8 @@ bool ManifestParser::ParseFileInclude(bool new_scope, string* err) { subparser.env_ = env_; } - if (!subparser.Parse(path, contents, err)) - return false; + if (!subparser.Load(path, err)) + return lexer_.Error(string(*err), err); if (!ExpectToken(Lexer::NEWLINE, err)) return false; |