diff options
Diffstat (limited to 'src/context.h')
-rw-r--r-- | src/context.h | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/context.h b/src/context.h index 09734b3e..e5457641 100644 --- a/src/context.h +++ b/src/context.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003-2012, John Wiegley. All rights reserved. + * Copyright (c) 2003-2013, John Wiegley. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -112,16 +112,16 @@ inline parse_context_t open_for_reading(const path& pathname, const path& cwd) { path filename = resolve_path(pathname); - - if (! exists(filename)) - throw_(std::runtime_error, - _f("Cannot read journal file %1%") % filename); - #if BOOST_VERSION >= 104600 && BOOST_FILESYSTEM_VERSION >= 3 - path parent(filesystem::absolute(pathname, cwd).parent_path()); + filename = filesystem::absolute(filename, cwd); #else - path parent(filesystem::complete(pathname, cwd).parent_path()); + filename = filesystem::complete(filename, cwd); #endif + if (! exists(filename) || is_directory(filename)) + throw_(std::runtime_error, + _f("Cannot read journal file %1%") % filename); + + path parent(filename.parent_path()); shared_ptr<std::istream> stream(new ifstream(filename)); parse_context_t context(stream, parent); context.pathname = filename; |