Fix localization issues
[scilab.git] / scilab / modules / m2sci / macros / matfile2sci.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) ???? - INRIA - Serge STEER
3 // Copyright (C) 2009 - DIGITEO - Vincent COUVERT
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.1-en.txt
10
11 function matfile2sci(mat_file_path, result_file_path, overwrite)
12     // Translate a Matlab MAT file into a Scilab file
13     //
14     // mat_file_path : path of the Matlab MAT file
15     // result_file_path : path of the generated Scilab file
16     //
17     //This function has been developed following the "MAT-File Format" description:
18     //www.mathworks.com/access/helpdesk/help/pdf_doc/matlab/matfile_format.pdf
19
20     if ~with_module("matio") then
21         error(msprintf(gettext("%s: %s module is not installed.\n"), "matfile2sci", "matio"));
22     end
23
24     [lhs,rhs]=argn(0)
25     if rhs<2 | rhs>3 then
26         error(msprintf(gettext("%s: Wrong number of input arguments: %d to %d expected.\n"), "matfile2sci", 2, 3));
27     end
28
29     //overwrite is false by default
30     if rhs==2
31         overwrite = %F;
32     end
33
34     //overwrite must be a boolean
35     if type(overwrite)<>4
36         error(msprintf(_("%s: Wrong type for argument #%d: Boolean matrix expected.\n"), "matfile2sci", 3));
37     end
38
39     if size(overwrite, "*")<>1
40         error(msprintf(_("%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n"), "matfile2sci", 3, 1, 1));
41     end
42
43     //--file opening
44     input_file_path = pathconvert(mat_file_path, %F, %T)
45     fdi=matfile_open(input_file_path, "r");
46     fdo_path=pathconvert(result_file_path, %F, %T);
47
48     //Wipe file if overwrite is true and the output file previously existed
49     if isfile(fdo_path) & overwrite
50         fdo = mopen(fdo_path, "wb");
51     end
52
53     //-- Read first variable
54     ierr = execstr("[Name, Matrix, Class] = matfile_varreadnext(fdi);", "errcatch");
55     ierrsave = 0;
56
57     if (ierr~=0) | ~exists("Name")
58         error(msprintf(_("%s: Could not read variables in %s"), "matfile2sci", input_file_path))
59     end
60
61     if Name==""
62         error(msprintf(_("%s: Could not read variables in %s"), "matfile2sci", input_file_path))
63     end
64
65     //--loop on the stored variables
66     while Name<>"" & ierr==0 & ierrsave==0
67         ierrsave = execstr(Name + " = Matrix; save(fdo_path, ""-append"", """+Name+""")", "errcatch")
68         if ierrsave==0 then
69             //-- Read next variable
70             ierr = execstr("[Name, Matrix, Class] = matfile_varreadnext(fdi);", "errcatch");
71         end
72     end
73
74     if exists("fdo")==1
75         mclose(fdo);
76     end
77
78     //--file closing
79     matfile_close(fdi);
80 endfunction