359d12297cdb5a5c42d216c805eb3df8566a776f
[scilab.git] / scilab / modules / fileio / macros / mputl.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA
3 // Copyright (C) DIGITEO - 2008 - Allan CORNET
4 //
5 // This file must be used under the terms of the CeCILL.
6 // This source file is licensed as described in the file COPYING, which
7 // you should have received as part of this distribution.  The terms
8 // are also available at
9 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10
11 function bok = mputl(str,fd)
12
13 [lhs,rhs]=argn();
14
15 if ~or(lhs ==[0 1]) then
16   error(999,msprintf(gettext("%s: Wrong number of output argument(s).\n"),'mputl'));
17   return
18 end
19
20 if ~or(rhs ==[1 2]) then
21   error(999,msprintf(gettext("%s: Wrong number of input argument(s).\n"),'mputl'));
22   return
23 end
24
25 if type(str) <> 10 then
26   error(999,msprintf(gettext("%s: Wrong type for input argument: A string expected.\n"),'mputl'));
27   return
28 end
29
30 mn = size(str);
31 if ~or(mn == 1) then
32   error(999,msprintf(gettext("%s: Wrong size for input argument #%d: A 1-by-n or m-by-1 array expected.\n"),'mputl',1));
33   return
34 end
35
36 opened = %f;
37
38 if rhs == 1 then //write to last opened file
39   opened = %f;
40   fd = -1;
41   // @OBSOLETE
42   warnobsolete("mputl with a second input parameter", "5.2");
43 else
44   if type(fd) == 10 then // file given by its path
45     opened = %t;
46     fil = fd;
47     [fd,ierr] = mopen(fil,'wt');
48     if ierr ~= 0 then 
49       error(999,msprintf(gettext("%s: Cannot open file %s.\n"),'mputl',fil));
50     end
51   else // file given by its logical unit
52     opened = %f;
53   end
54 end  
55
56 // checks that file is not read only
57 // units,typ,nams,mod,swap
58 [uk, tk, nk, mk, sk] = file(fd);
59 // READ ONLY MODE mk
60 if ( (mk >= 100) & (mk < 200) ) then 
61   bok = %f;
62   return
63 end
64
65 mn = size(str,'*');
66 for i = 1:mn
67         try
68     mfprintf(fd, '%s\n',str(i));
69   catch
70     bok = %f;
71     return
72   end
73 end
74
75 if opened then mclose(fd),end
76
77 bok = %t;
78
79 endfunction