6954708b6c6021d6c14989480101cfe403a287cb
[scilab.git] / scilab / modules / atoms / macros / atomsGetConfig.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2009 - DIGITEO - Pierre MARECHAL <pierre.marechal@scilab.org>
3 //
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at
8 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
9
10 // Internal function
11
12 // Get the configuration of the atoms system
13
14 function result = atomsGetConfig(field)
15     // Load Atoms Internals lib if it's not already loaded
16     // =========================================================================
17     if ~ exists("atomsinternalslib") then
18         load("SCI/modules/atoms/macros/atoms_internals/lib");
19     end
20
21     rhs = argn(2);
22
23     // Check number of input arguments
24     // =========================================================================
25
26     if rhs > 1 then
27         error(msprintf(gettext("%s: Wrong number of input argument: %d to %d expected.\n"),"atomsGetConfig",0,1));
28     end
29
30     // Check input parameters type
31     // =========================================================================
32
33     if  (rhs>0) & (type(field) <> 10) then
34         error(msprintf(gettext("%s: Wrong type for input argument #%d: Single string expected.\n"),"atomsGetConfig",1));
35     end
36
37     // Check input parameters dimensions
38     // =========================================================================
39
40     if (rhs>0) & (size(field,"*") <> 1) then
41         error(msprintf(gettext("%s: Wrong size for input argument #%d: Single string expected.\n"),"atomsGetConfig",1));
42     end
43
44     // Define the default value of the result according to the number of input
45     // arguments
46     // =========================================================================
47
48     if rhs==0 then
49         result = struct();
50     else
51         result = "";
52     end
53
54     // Define the path of the file that will record the change
55     // =========================================================================
56     atoms_directory = atomsPath("system","user");
57
58     // Does the SCIHOME/atoms/config exist, if yes load it
59     // =========================================================================
60
61     if fileinfo(atoms_directory+"config") <> [] then
62         config_lines = mgetl(atoms_directory+"config");
63     else
64         return;
65     end
66
67     // Loop on each URL specified as input argument
68     // =========================================================================
69
70     for i=1:size(config_lines,"*")
71
72         if isempty( stripblanks( config_lines(i) ) ) then
73             continue;
74         end
75
76         if regexp(config_lines(i),"/^[a-zA-Z0-9]*\s=\s/","o") == 1 then
77
78             // process field
79             current_field_length  = regexp(config_lines(i),"/\s=\s/","o")
80             current_field         = part(config_lines(i),1:current_field_length-1);
81             current_value         = part(config_lines(i),current_field_length+3:length(config_lines(i)));
82
83             if (rhs==1) & (current_field==field) then
84                 result = current_value;
85                 return;
86             elseif( rhs==0 )
87                 result(current_field) = current_value;
88             end
89
90         else
91             error(msprintf(gettext("%s: The config file (''%s'') is not well formated at line %d\n"),"atomsGetConfig",atoms_directory+"config",i));
92         end
93
94     end
95
96 endfunction