diff --git a/shell/e.cpp b/shell/e.cpp index 6ee41ad..c1aea82 100644 --- a/shell/e.cpp +++ b/shell/e.cpp @@ -1,9 +1,11 @@ #include "shell.h" #include "parser.h" #include "commands.h" +#include "errors.h" #include #include +#include //--- // e @@ -18,15 +20,24 @@ struct _e_args static _e_args parse_e(Session &session, Parser &parser) { _e_args args {}; + parser.option("vspace", [&args](std::string const &value) { args.space_name = value; }); - VirtualSpace *space = session.get_space(args.space_name); - if(space) { - while(!parser.at_end()) { + parser.accept_options(); + + VirtualSpace *space; + if(!args.space_name.empty()) + space = session.get_space(args.space_name); + else + space = session.current_space; + + if(space) + while(!parser.at_end()) args.values.push_back(parser.expr(space)); - } - } + else + FxOS_log(ERR, "virtual space '%s' does not exist", args.space_name); + // TODO: Error message when session specified in _e does not exist parser.end();