fprintf, fscanf & sscanf: Clearly tag them as obsolete
[scilab.git] / scilab / modules / fileio / macros / fscanf.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) XXXX-2008 - INRIA
3 // Copyright (C) 2008-2011 - DIGITEO - 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
12 function varargout = fscanf(fil, frmt)
13
14 // fscanf - Emulator of C language fscanf
15 //!
16   warnobsolete("mfscanf","5.5.0");
17
18   [lhs, rhs] = argn(0);
19
20   if rhs <> 2 then
21     error(999, msprintf(gettext("%s: Wrong number of input arguments: %d expected.\n"),"fscanf", 2));
22   end
23
24   MAXLHS = 50;
25   if lhs > MAXLHS then
26     error(999, msprintf(gettext("%s: Wrong number of output argument(s).\n"),"fscanf"));
27   end
28
29   if type(fil)<>10 & type(fil)<> 1 then
30     error(999, msprintf(gettext("%s: Wrong type for input argument #%d: A file descriptor expected.\n"),"fscanf",1));
31   end
32
33   if size(fil,"*")<>1 then
34     error(999, msprintf(gettext("%s: Wrong size for input argument #%d: A file descriptor expected.\n")),"fscanf",1);
35   end
36
37   if type(frmt)<>10 then
38     error(999, msprintf(gettext("%s: Wrong type for input argument #%d: String expected.\n"),"fscanf",2));
39   end
40
41   if size(frmt,"*")<>1 then
42     error(999, msprintf(gettext("%s: Wrong size for input argument #%d: A string expected.\n")),"fscanf",2);
43   end
44
45
46   if type(fil) == 1 then
47     fids = file();
48     if ~or(fids == fil) then
49     error(999, msprintf(gettext("%s: Wrong value for input argument #%d: A valid file descriptor expected.\n"), "fscanf", 1));
50     return;
51     end
52   end
53
54   v = "v";
55   args = strcat( v(ones(lhs, 1)) + string(1:lhs)', ",");
56
57   if (type(fil) == 1) then
58     [id, typ, fn] = file(fil);
59     if typ == "F" then
60       buf = read(fil, 1, 1, "(a)");
61     else
62       buf = mgetl(fil, 1);
63     end
64   else
65     buf = mgetl(fil, 1);
66   end
67
68   execstr("[v0," + args + "] = msscanf(buf, frmt);"); // v0 is the number of data raed
69   execstr("varargout = list(" + args + ");");
70
71 endfunction