* Bug #13108 fixed - Atoms: updates spread and configurable
[scilab.git] / scilab / modules / atoms / macros / atomsGetConfig.sci
index 6954708..6914651 100644 (file)
@@ -1,51 +1,60 @@
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 // Copyright (C) 2009 - DIGITEO - Pierre MARECHAL <pierre.marechal@scilab.org>
+// Copyright (C) 2021 - DIGITEO - Allan CORNET
 //
 // This file must be used under the terms of the CeCILL.
 // This source file is licensed as described in the file COPYING, which
 // you should have received as part of this distribution.  The terms
 // are also available at
-// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
-
-// Internal function
-
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+//
 // Get the configuration of the atoms system
-
+//
 function result = atomsGetConfig(field)
-    // Load Atoms Internals lib if it's not already loaded
-    // =========================================================================
-    if ~ exists("atomsinternalslib") then
-        load("SCI/modules/atoms/macros/atoms_internals/lib");
-    end
 
     rhs = argn(2);
 
     // Check number of input arguments
     // =========================================================================
-
     if rhs > 1 then
-        error(msprintf(gettext("%s: Wrong number of input argument: %d to %d expected.\n"),"atomsGetConfig",0,1));
+        error(msprintf(gettext("%s: Wrong number of input argument: %d to %d expected.\n"), "atomsGetConfig", 0, 1));
     end
 
     // Check input parameters type
     // =========================================================================
-
-    if  (rhs>0) & (type(field) <> 10) then
-        error(msprintf(gettext("%s: Wrong type for input argument #%d: Single string expected.\n"),"atomsGetConfig",1));
+    if (rhs > 0) & (type(field) <> 10) then
+        error(msprintf(gettext("%s: Wrong type for input argument #%d: Single string expected.\n"), "atomsGetConfig", 1));
     end
 
     // Check input parameters dimensions
     // =========================================================================
+    if (rhs > 0) & (size(field, "*") <> 1) then
+        error(msprintf(gettext("%s: Wrong size for input argument #%d: Single string expected.\n"), "atomsGetConfig", 1));
+    end
 
-    if (rhs>0) & (size(field,"*") <> 1) then
-        error(msprintf(gettext("%s: Wrong size for input argument #%d: Single string expected.\n"),"atomsGetConfig",1));
+
+    if rhs <> 0 then
+        supported_field = ["useProxy", "proxyHost", "proxyPort", ..
+        "proxyUser", "proxyPassword", "offline", ..
+        "autoload", "autoloadAddAfterInstall", ..
+        "verbose", "downloadTool", "downloadTimeout", "updateTime"];
+
+        if ~or(convstr(supported_field) == convstr(field)) then
+            error(msprintf(gettext("%s: Wrong value for input argument #%d.\n"),"atomsGetConfig", 1));
+        end
+    end
+
+    // Load Atoms Internals lib if it's not already loaded
+    // =========================================================================
+    if ~ exists("atomsinternalslib") then
+        load("SCI/modules/atoms/macros/atoms_internals/lib");
     end
 
     // Define the default value of the result according to the number of input
     // arguments
     // =========================================================================
 
-    if rhs==0 then
+    if rhs == 0 then
         result = struct();
     else
         result = "";
@@ -53,13 +62,13 @@ function result = atomsGetConfig(field)
 
     // Define the path of the file that will record the change
     // =========================================================================
-    atoms_directory = atomsPath("system","user");
+    atoms_directory = atomsPath("system", "user");
 
     // Does the SCIHOME/atoms/config exist, if yes load it
     // =========================================================================
 
-    if fileinfo(atoms_directory+"config") <> [] then
-        config_lines = mgetl(atoms_directory+"config");
+    if fileinfo(atoms_directory + "config") <> [] then
+        config_lines = mgetl(atoms_directory + "config");
     else
         return;
     end
@@ -67,30 +76,26 @@ function result = atomsGetConfig(field)
     // Loop on each URL specified as input argument
     // =========================================================================
 
-    for i=1:size(config_lines,"*")
-
-        if isempty( stripblanks( config_lines(i) ) ) then
+    for i=1:size(config_lines, "*")
+        if isempty( stripblanks(config_lines(i))) then
             continue;
         end
 
         if regexp(config_lines(i),"/^[a-zA-Z0-9]*\s=\s/","o") == 1 then
-
             // process field
             current_field_length  = regexp(config_lines(i),"/\s=\s/","o")
-            current_field         = part(config_lines(i),1:current_field_length-1);
-            current_value         = part(config_lines(i),current_field_length+3:length(config_lines(i)));
+            current_field     = part(config_lines(i),1:current_field_length-1);
+            current_value     = part(config_lines(i),current_field_length+3:length(config_lines(i)));
 
-            if (rhs==1) & (current_field==field) then
+            if (rhs == 1) & (current_field == field) then
                 result = current_value;
                 return;
-            elseif( rhs==0 )
+            elseif(rhs == 0)
                 result(current_field) = current_value;
             end
-
         else
             error(msprintf(gettext("%s: The config file (''%s'') is not well formated at line %d\n"),"atomsGetConfig",atoms_directory+"config",i));
         end
-
     end
 
 endfunction