# HG changeset patch # User jwe # Date 775175334 0 # Node ID 34c713db72b684ebfdeea2a7e98f1731bd37424f # Parent 4e826edfbc5662926d44d8db427710bc66f770e2 [project @ 1994-07-25 22:28:54 by jwe] diff -r 4e826edfbc56 -r 34c713db72b6 src/octave.cc --- a/src/octave.cc Mon Jul 25 22:19:05 1994 +0000 +++ b/src/octave.cc Mon Jul 25 22:28:54 1994 +0000 @@ -751,6 +751,46 @@ } /* + * Execute a shell command. + */ +DEFUN ("shell_cmd", Fshell_cmd, Sshell_cmd, 2, 1, + "shell_cmd (string [, return_output]): execute shell commands") +{ + Octave_object retval; + + int nargin = args.length (); + + if (nargin == 2 && args(1).is_string_type ()) + { + iprocstream cmd (args(1).string_value ()); + char ch; + ostrstream output_buf; + while (cmd.get (ch)) + output_buf.put (ch); + output_buf << ends; + int status = cmd.close (); + switch (nargout) + { + 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; + } + } + else + print_usage ("shell_cmd"); + + return retval; +} + +/* ;;; Local Variables: *** ;;; mode: C++ *** ;;; page-delimiter: "^/\\*" ***