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