X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Scheduler%2FConsole%2FExecutor.cc;h=d6218d8c7972446987b1bd5e450fe29f91be2444;hb=97a384b0738fed15b7d90b373408ffed52043c13;hp=8f054c789c70885b7cc01fb76220189235cfbc2d;hpb=e2d104a5f998f474c3f0afcc3a5dc04f620c49c7;p=senf.git diff --git a/Scheduler/Console/Executor.cc b/Scheduler/Console/Executor.cc index 8f054c7..d6218d8 100644 --- a/Scheduler/Console/Executor.cc +++ b/Scheduler/Console/Executor.cc @@ -249,8 +249,17 @@ senf::console::Executor::traverseNode(ParseCommandInfo::TokensRange const & path path.begin(), boost::prior(path.end())), dir); + // For auto-cd support we need to check against '.' and '..' here too + Token const & tok (*boost::prior(path.end())); + if (tok == WordToken("..")) { + if (dir.size() > 1) + dir.pop_back(); + return *dir.back().lock(); + } DirectoryNode & base (*dir.back().lock()); - std::string const & name (complete(base, boost::prior(path.end())->value())); + if (tok == WordToken(".")) + return base; + std::string const & name (complete(base, tok.value())); if (policy_) policy_( base, name ); return dir.back().lock()->get(name);