SENF_LOG(( "Executing: " << command ));
if (cwd_.expired() || ! cwd().active())
- cwd_ = root().thisptr();
+ cwd_ = root_;
try {
switch(command.builtin()) {
&& command.arguments().begin()->begin()->value() == "-") {
if (oldCwd_.expired() || ! oldCwd_.lock()->active()) {
oldCwd_ = cwd_;
- cwd_ = root().thisptr();
+ cwd_ = root_;
} else
swap(cwd_, oldCwd_);
}
catch (InvalidCommandException &) {
output << "invalid command" << std::endl;
}
+ catch (IgnoreCommandException &) {}
}
prefix_ senf::console::GenericNode &
senf::console::Executor::traverseNode(ParseCommandInfo::TokensRange const & path)
{
try {
- return cwd().traverse(
+ return traverse(
+ cwd(),
boost::make_iterator_range(
boost::make_transform_iterator(path.begin(), TraverseTokens()),
- boost::make_transform_iterator(path.end(), TraverseTokens())),
- autocomplete_);
+ boost::make_transform_iterator(path.end(), TraverseTokens())) );
}
catch (std::bad_cast &) {
throw InvalidPathException();
senf::console::Executor::traverseCommand(ParseCommandInfo::CommandPathRange const & path)
{
try {
- return cwd().traverse(path, autocomplete_);
+ return traverse(cwd(), path);
}
catch (std::bad_cast &) {
throw InvalidPathException();