summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/manifest_parser.cc12
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;