Mercurial > hg > octave-nkf
diff src/octave.cc @ 624:1a7dea6fa26b
[project @ 1994-08-17 16:19:40 by jwe]
author | jwe |
---|---|
date | Wed, 17 Aug 1994 16:19:45 +0000 |
parents | 9ced66fce8a3 |
children | fae2bd91c027 |
line wrap: on
line diff
--- a/src/octave.cc +++ b/src/octave.cc @@ -778,32 +778,42 @@ int nargin = args.length (); - if (nargin == 2 && args(1).is_string ()) + if (nargin < 2 || nargin > 3) { - iprocstream cmd (args(1).string_value ()); + print_usage ("shell_cmd"); + return retval; + } + + tree_constant tc_command = args(1); + + if (tc_command.is_string ()) + { + iprocstream cmd (tc_command.string_value ()); + + ostrstream output_buf; + char ch; - ostrstream output_buf; while (cmd.get (ch)) output_buf.put (ch); + output_buf << ends; + int status = cmd.close (); - switch (nargout) + + if (nargout > 0 || nargin > 2) { - case 1: - maybe_page_output (output_buf); - retval.resize (1); - retval(0) = tree_constant ((double) status); - break; - case 2: - retval.resize (2); - retval(0) = tree_constant ((double) status); - retval(1) = tree_constant (output_buf.str ()); - break; - break; + char *msg = output_buf.str (); + + retval(1) = (double) status; + retval(0) = msg; + + delete [] msg; } + else + maybe_page_output (output_buf); } else - print_usage ("shell_cmd"); + error ("shell_cmd: expecting string as first argument"); return retval; }