GenericNode & node ( traverseCommand(command.commandPath()) );
DirectoryNode * dir ( dynamic_cast<DirectoryNode*>(&node) );
if ( dir ) {
- oldCwd_ = cwd_;
- cwd_ = dir->thisptr();
+ if (autocd_) {
+ oldCwd_ = cwd_;
+ cwd_ = dir->thisptr();
+ } else
+ throw InvalidCommandException();
} else {
dynamic_cast<CommandNode &>(node)(output, command);
}
return cwd().traverse(
boost::make_iterator_range(
boost::make_transform_iterator(path.begin(), TraverseTokens()),
- boost::make_transform_iterator(path.end(), TraverseTokens())));
+ boost::make_transform_iterator(path.end(), TraverseTokens())),
+ autocomplete_);
}
catch (std::bad_cast &) {
throw InvalidPathException();
senf::console::Executor::traverseCommand(ParseCommandInfo::CommandPathRange const & path)
{
try {
- return cwd().traverse(path);
+ return cwd().traverse(path, autocomplete_);
}
catch (std::bad_cast &) {
throw InvalidPathException();