From d6d0b75bf0e80bd8402540bc98caec35d8bc0a53 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Sun, 8 Feb 2009 04:32:46 -0400 Subject: Repaired the output of the "eval" command. --- src/precmd.cc | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/precmd.cc b/src/precmd.cc index e8f48b6a..173ca517 100644 --- a/src/precmd.cc +++ b/src/precmd.cc @@ -71,19 +71,26 @@ value_t parse_command(call_scope_t& args) value_t eval_command(call_scope_t& args) { - var_t arg(args, 0); - - if (! arg) { - throw std::logic_error("Usage: eval TEXT"); - return 1L; + std::ostringstream buf; + bool first = true; + + for (std::size_t i = 0; i < args.size(); i++) { + if (first) { + buf << args[i]; + first = false; + } else { + buf << ' ' << args[i]; + } } report_t& report(find_scope(args)); - std::ostream& out(report.output_stream); - expr_t expr(*arg); - out << expr.calc(args).strip_annotations(report.what_to_keep()) - << std::endl; + expr_t expr(buf.str()); + value_t result(expr.calc(args).strip_annotations(report.what_to_keep())); + + if (! result.is_null()) + report.output_stream << result << std::endl; + return 0L; } -- cgit v1.2.3