From 6d0ab845eaec51946190c847f1ad08f910e5a003 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Mon, 7 Dec 2009 20:43:17 -0500 Subject: Allow relative includes in the current directory --- src/textual.cc | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/textual.cc') diff --git a/src/textual.cc b/src/textual.cc index cf670cae..c5a6d896 100644 --- a/src/textual.cc +++ b/src/textual.cc @@ -663,20 +663,26 @@ void instance_t::include_directive(char * line) { path filename; + DEBUG("textual.include", "include: " << line); + if (line[0] != '/' && line[0] != '\\' && line[0] != '~') { + DEBUG("textual.include", "received a relative path"); + DEBUG("textual.include", "parent file path: " << pathname.string()); string::size_type pos = pathname.string().rfind('/'); if (pos == string::npos) pos = pathname.string().rfind('\\'); - if (pos != string::npos) + if (pos != string::npos) { filename = path(string(pathname.string(), 0, pos + 1)) / line; + DEBUG("textual.include", "normalized path: " << filename.string()); + } else { + filename = path(string(".")) / line; + } } else { filename = line; } filename = resolve_path(filename); - - DEBUG("textual.include", "Line " << linenum << ": " << - "Including path '" << filename << "'"); + DEBUG("textual.include", "resolved path: " << filename.string()); if (! exists(filename)) throw_(std::runtime_error, -- cgit v1.2.3