Regenerate dia.ref after indentation hook
[scilab.git] / scilab / modules / io / macros / unix_x.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) XXXX-2008 - INRIA
3 // Copyright (C) XXXX-2008 - INRIA - Allan CORNET
4 //
5 // Copyright (C) 2012 - 2016 - Scilab Enterprises
6 //
7 // This file is hereby licensed under the terms of the GNU GPL v2.0,
8 // pursuant to article 5.3.4 of the CeCILL v.2.1.
9 // This file was originally licensed under the terms of the CeCILL v2.1,
10 // and continues to be available under such terms.
11 // For more information, see the COPYING file which you should have received
12 // along with this program.
13
14
15 function unix_x(cmd)
16     //unix_x - shell command execution, results redirected in a window
17     //%Syntax
18     // unix_x(cmd)
19     //%Parameters
20     // cmd - a character string
21     //%Description
22     // cmd instruction is passed to shell, the standard output is redirected
23     // to  a  window
24     //%Examples
25     // unix_x("ls")
26     //%See also
27     // host unix_g unix_s
28     //!
29
30     [lhs,rhs] = argn(0);
31
32     if rhs <> 1 then
33         error(msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"),"unix_x",1));
34     end
35
36     if type(cmd) <> 10 then
37         error(msprintf(gettext("%s: Wrong type for input argument #%d: String expected.\n"),"unix_x",1));
38     end
39
40     if size(cmd,"*") <> 1 then
41         error(msprintf(gettext("%s: Wrong size for input argument #%d: string expected.\n"),"unix_x",1));
42     end
43
44     if getos() == "Windows" then
45         [rep,stat]=dos(cmd);
46         if (stat) then
47             messagebox(rep);
48         else
49             for i=1:size(rep,"*") do write(%io(2),"   "+rep(i));end
50             error(msprintf(gettext("%s: error during ""%s"" execution"),"unix_x",cmd));
51         end
52     else
53         tmp=TMPDIR+"/unix.out";
54         cmd1="("+cmd+")>"+ tmp +" 2>"+TMPDIR+"/unix.err;";
55         stat=host(cmd1);
56         select stat
57         case 0 then
58             rep=mgetl(tmp)
59             if (size(rep,"*")==0) | (length(rep)==0) then
60                 rep=[]
61             end
62             messagebox(rep);
63         case -1 then // host failed
64             error(msprintf(gettext("%s: The system interpreter does not answer..."),"unix_x"));
65         else //sh failed
66             msg=read(TMPDIR+"/unix.err",-1,1,"(a)")
67             error("unix_x: "+msg(1))
68         end
69     end
70
71 endfunction