void Console::execute(const Common::UString &line) { if (line.empty()) return; // Add the line to console _console->print(Common::UString(kPrompt) + " " + line); // Split command from redirect target Common::UString command; Common::UString redirect; line.split(line.findFirst('>'), command, redirect, true); command.trim(); redirect.trim(); // Split command from arguments CommandLine cl; command.split(command.findFirst(' '), cl.cmd, cl.args, true); cl.cmd.trim(); cl.args.trim(); // Find the command CommandMap::iterator cmd = _commands.find(cl.cmd); if (cmd == _commands.end()) { printf("Unknown command \"%s\". Type 'help' for a list of available commands.", cl.cmd.c_str()); return; } // Set redirect if (!_console->setRedirect(redirect)) return; // Execute _console->hidePrompt(); cmd->second.callback(cl); _console->showPrompt(); // Reset redirect _console->setRedirect(); }