Bug #10846 fixed - atomsSystemUpdate failed. 56/6856/2
Allan CORNET [Tue, 3 Apr 2012 11:25:45 +0000 (13:25 +0200)]
                    documentation about 'downloadTimeout' added.
Bug #10933 fixed - atomsGetConfig did not check value of input argument.

Change-Id: I38c1b6f6f7f8e04ea7ee374bfd5d7503bf0ad188

scilab/CHANGES_5.4.X
scilab/modules/atoms/help/en_US/atomsGetConfig.xml
scilab/modules/atoms/help/en_US/atomsSetConfig.xml
scilab/modules/atoms/macros/atomsGetConfig.sci
scilab/modules/atoms/macros/atomsSetConfig.sci
scilab/modules/atoms/tests/nonreg_tests/bug_10933.dia.ref [new file with mode: 0644]
scilab/modules/atoms/tests/nonreg_tests/bug_10933.tst [new file with mode: 0644]

index 1cb422a..09026e3 100644 (file)
@@ -274,6 +274,10 @@ ATOMS
 
 * Bug #10707 fixed - atomsInstall failed to use the path shortcut.
 
+* Bug #10846 fixed - atomsSystemUpdate failed.
+                     documentation about 'downloadTimeout' added.
+
+* Bug #10933 fixed - atomsGetConfig did not check value of input argument.
 
 Documentation
 =============
index 4e2dfef..7bbb06e 100644 (file)
 <!--
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) DIGITEO - Pierre MARECHAL <pierre.marechal@scilab.org>
- * 
+ *
  * 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    
+ * are also available at
  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
  *
  -->
-<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" version="5.0-subset Scilab" xml:lang="en" xml:id="atomsGetConfig">
+<refentry version="5.0-subset Scilab" xml:id="atomsGetConfig" xml:lang="en"
+          xmlns="http://docbook.org/ns/docbook"
+          xmlns:xlink="http://www.w3.org/1999/xlink"
+          xmlns:svg="http://www.w3.org/2000/svg"
+          xmlns:ns4="http://www.w3.org/1999/xhtml"
+          xmlns:mml="http://www.w3.org/1998/Math/MathML"
+          xmlns:db="http://docbook.org/ns/docbook">
   <refnamediv>
     <refname>atomsGetConfig</refname>
+    
     <refpurpose>Get ATOMS system parameters</refpurpose>
   </refnamediv>
-  <!-- ===================================================================== -->
-  <!-- Calling Sequence -->
-  <!-- ===================================================================== -->
+  
   <refsynopsisdiv>
     <title>Calling Sequence</title>
+    
     <synopsis>
       result = atomsGetConfig(parameter)
     </synopsis>
   </refsynopsisdiv>
-  <!-- ===================================================================== -->
-  <!-- Parameters -->
-  <!-- ===================================================================== -->
+  
   <refsection>
     <title>Arguments</title>
+    
     <variablelist>
       <varlistentry>
         <term>parameter</term>
+        
         <listitem>
-          <para>
-            single-string matrix
-          </para>
+          <para>single-string matrix</para>
         </listitem>
       </varlistentry>
+      
       <varlistentry>
         <term>result</term>
+        
         <listitem>
           Value of the parameter
         </listitem>
       </varlistentry>
     </variablelist>
   </refsection>
+  
   <refsection>
     <title>Proxy</title>
-    <para>
-      <informaltable border="1">
+    
+    <para><informaltable border="1">
         <tr>
           <th>Parameter</th>
+          
           <th>Description</th>
+          
           <th>Values</th>
         </tr>
+        
         <tr>
           <td>useProxy</td>
+          
           <td>Use/Don't use proxies</td>
+          
           <td>
             <emphasis role="strong">True</emphasis>/False
           </td>
         </tr>
+        
         <tr>
           <td>proxyHost</td>
+          
           <td>the hostname (IP or DNS name)</td>
-          <td/>
+          
+          <td></td>
         </tr>
+        
         <tr>
           <td>proxyPort</td>
+          
           <td>the port</td>
-          <td/>
+          
+          <td></td>
         </tr>
+        
         <tr>
           <td>proxyUser</td>
+          
           <td>Specify the username for authentication on a proxy server</td>
-          <td/>
+          
+          <td></td>
         </tr>
+        
         <tr>
           <td>proxyPassword</td>
+          
           <td>Specify the password for authentication on a proxy server</td>
-          <td/>
+          
+          <td></td>
         </tr>
       </informaltable>
     </para>
   </refsection>
+  
   <refsection>
     <title>Network</title>
-    <para>
-      <informaltable border="1">
+    
+    <para><informaltable border="1">
         <tr>
           <th>Parameter</th>
+          
           <th>Description</th>
+          
           <th>Values</th>
         </tr>
+        
         <tr>
           <td>offline</td>
-          <td>
-            If set to "True", the system only works with local repositories.
+          
+          <td>If set to "True", the system only works with local repositories.
             The offline mode permits the user to install modules from a local
-            repository or a local package (hard disk, USB keys, ...) even if
-            the network is unreachable.
-            In version prior to 5.4.0, this tag was called offLine.
+            repository or a local package (hard disk, USB keys, ...) even if the
+            network is unreachable. In version prior to 5.4.0, this tag was
+            called offLine.
           </td>
+          
           <td>
             True/<emphasis role="strong">False</emphasis>
           </td>
       </informaltable>
     </para>
   </refsection>
+  
   <refsection>
     <title>Autoload System</title>
-    <para>
-      <informaltable border="1">
+    
+    <para><informaltable border="1">
         <tr>
           <th>Parameter</th>
+          
           <th>Description</th>
+          
           <th>Values</th>
         </tr>
+        
         <tr>
           <td>autoload</td>
+          
           <td>Enable/Disable autoload system</td>
+          
           <td>
             <emphasis role="strong">True</emphasis>/False
           </td>
         </tr>
+        
         <tr>
           <td>autoloadAddAfterInstall</td>
-          <td>Automatically add a module to the list of module to autoload at Scilab start</td>
+          
+          <td>Automatically add a module to the list of module to autoload at
+            Scilab start
+          </td>
+          
           <td>
             <emphasis role="strong">True</emphasis>/False
           </td>
       </informaltable>
     </para>
   </refsection>
+  
   <refsection>
     <title>Miscellenous</title>
-    <para>
-      <informaltable border="1">
+    
+    <para><informaltable border="1">
         <tr>
           <th>Parameter</th>
+          
           <th>Description</th>
+          
           <th>Values</th>
         </tr>
+        
         <tr>
           <td>verbose</td>
+          
           <td>Display or not extra-informations</td>
+          
           <td>
             True/<emphasis role="strong">False</emphasis>
           </td>
         </tr>
+        
+        <tr>
+          <td>downloadTool</td>
+          
+          <td> Get tool used for download</td>
+          
+          <td> "curl", "wget" or "httpdownload" (Windows only)</td>
+        </tr>
+        
+        <tr>
+          <td>downloadTimeout</td>
+          
+          <td> Get timeout used for download</td>
+          
+          <td> "5" is the default value</td>
+        </tr>
       </informaltable>
     </para>
   </refsection>
-  <!-- ===================================================================== -->
-  <!-- Description -->
-  <!-- ===================================================================== -->
+  
   <refsection>
     <title>Description</title>
+    
     <para>
-      <literal>atomsGetConfig</literal> returns the value of the parameter given
+      <literal>atomsGetConfig</literal> returns the value of the parameter
+      given
     </para>
   </refsection>
-  <!-- ===================================================================== -->
-  <!-- Examples -->
-  <!-- ===================================================================== -->
+  
+  <refsection role="see also">
+    <title>See Also</title>
+    
+    <simplelist type="inline">
+      <member>
+        <link linkend="atomsSetConfig">atomsSetConfig</link>
+      </member>
+    </simplelist>
+  </refsection>
+  
   <refsection>
     <title>Examples</title>
-    <programlisting role="example"><![CDATA[
-// Get value of verbose parameter
-atomsGetConfig('Verbose')
-]]></programlisting>
+    
+    <programlisting role="example">// Get value of verbose parameter
+      atomsGetConfig('Verbose')
+    </programlisting>
   </refsection>
+  
   <refsection>
     <title>History</title>
+    
     <revhistory>
       <revision>
         <revnumber>5.4.0</revnumber>
+        
         <revdescription>offLine parameter renamed to offline</revdescription>
       </revision>
     </revhistory>
index 26447fe..185c9cd 100644 (file)
 <!--
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) DIGITEO - Pierre MARECHAL <pierre.marechal@scilab.org>
- * 
+ * Copyright (C) DIGITEO - 2012 - 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    
+ * are also available at
  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
  *
  -->
-<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" version="5.0-subset Scilab" xml:lang="en" xml:id="atomsSetConfig">
+<refentry version="5.0-subset Scilab" xml:id="atomsSetConfig" xml:lang="en"
+          xmlns="http://docbook.org/ns/docbook"
+          xmlns:xlink="http://www.w3.org/1999/xlink"
+          xmlns:svg="http://www.w3.org/2000/svg"
+          xmlns:ns4="http://www.w3.org/1999/xhtml"
+          xmlns:mml="http://www.w3.org/1998/Math/MathML"
+          xmlns:db="http://docbook.org/ns/docbook">
   <refnamediv>
     <refname>atomsSetConfig</refname>
+
     <refpurpose>Manage ATOMS system parameters</refpurpose>
   </refnamediv>
-  <!-- ===================================================================== -->
-  <!-- Calling Sequence -->
-  <!-- ===================================================================== -->
+
   <refsynopsisdiv>
     <title>Calling Sequence</title>
+
     <synopsis>
-      result = atomsSetConfig(parameter,value)
+      result = atomsSetConfig(parameter, value)
     </synopsis>
   </refsynopsisdiv>
-  <!-- ===================================================================== -->
-  <!-- Parameters -->
-  <!-- ===================================================================== -->
+
   <refsection>
     <title>Arguments</title>
+
     <variablelist>
       <varlistentry>
         <term>parameter</term>
+
         <listitem>
-          <para>
-            single-string matrix
-          </para>
+          <para>single-string matrix</para>
         </listitem>
       </varlistentry>
+
       <varlistentry>
         <term>value</term>
+
         <listitem>
-          <para>
-            single-string matrix
-          </para>
+          <para>single-string matrix</para>
         </listitem>
       </varlistentry>
+
       <varlistentry>
         <term>result</term>
+
         <listitem>
-          Number of changed parameters
+           Number of changed parameters
         </listitem>
       </varlistentry>
     </variablelist>
   </refsection>
+
   <refsection>
     <title>Proxy</title>
-    <para>
-      <informaltable border="1">
+
+    <para><informaltable border="1">
         <tr>
           <th>Parameter</th>
+
           <th>Description</th>
+
           <th>Values</th>
         </tr>
+
         <tr>
           <td>useProxy</td>
+
           <td>Use/Don't use proxies</td>
-          <td>
-            <emphasis role="strong">True</emphasis>/False
-          </td>
+
+          <td><emphasis role="strong">True</emphasis>/False</td>
         </tr>
+
         <tr>
           <td>proxyHost</td>
+
           <td>the hostname (IP or DNS name)</td>
-          <td/>
+
+          <td></td>
         </tr>
+
         <tr>
           <td>proxyPort</td>
+
           <td>the port</td>
-          <td/>
+
+          <td></td>
         </tr>
+
         <tr>
           <td>proxyUser</td>
+
           <td>Specify the username for authentication on a proxy server</td>
-          <td/>
+
+          <td></td>
         </tr>
+
         <tr>
           <td>proxyPassword</td>
+
           <td>Specify the password for authentication on a proxy server</td>
-          <td/>
+
+          <td></td>
         </tr>
-      </informaltable>
-    </para>
+      </informaltable></para>
   </refsection>
+
   <refsection>
     <title>Network</title>
-    <para>
-      <informaltable border="1">
+
+    <para><informaltable border="1">
         <tr>
           <th>Parameter</th>
+
           <th>Description</th>
+
           <th>Values</th>
         </tr>
+
         <tr>
           <td>offline</td>
-          <td>
-            If set to "True", the system only works with local repositories.
-            The offline mode permits the user to install modules from a local
-            repository or a local package (hard disk, USB keys, ...) even if
-            the network is unreachable.
-            In version prior to 5.4.0, this tag was called offLine.
-          </td>
-          <td>
-            True/<emphasis role="strong">False</emphasis>
-          </td>
+
+          <td>If set to "True", the system only works with local repositories.
+          The offline mode permits the user to install modules from a local
+          repository or a local package (hard disk, USB keys, ...) even if the
+          network is unreachable. In version prior to 5.4.0, this tag was
+          called offLine.</td>
+
+          <td>True/<emphasis role="strong">False</emphasis></td>
         </tr>
-      </informaltable>
-    </para>
+      </informaltable></para>
   </refsection>
+
   <refsection>
     <title>Autoload System</title>
-    <para>
-      <informaltable border="1">
+
+    <para><informaltable border="1">
         <tr>
           <th>Parameter</th>
+
           <th>Description</th>
+
           <th>Values</th>
         </tr>
+
         <tr>
           <td>autoload</td>
+
           <td>Enable/Disable autoload system</td>
-          <td>
-            <emphasis role="strong">True</emphasis>/False
-          </td>
+
+          <td><emphasis role="strong">True</emphasis>/False</td>
         </tr>
+
         <tr>
           <td>autoloadAddAfterInstall</td>
-          <td>Automatically add a module to the list of module to autoload at Scilab start</td>
-          <td>
-            <emphasis role="strong">True</emphasis>/False
-          </td>
+
+          <td>Automatically add a module to the list of module to autoload at
+          Scilab start</td>
+
+          <td><emphasis role="strong">True</emphasis>/False</td>
         </tr>
-      </informaltable>
-    </para>
+      </informaltable></para>
   </refsection>
+
   <refsection>
     <title>Miscellenous</title>
-    <para>
-      <informaltable border="1">
+
+    <para><informaltable border="1">
         <tr>
           <th>Parameter</th>
+
           <th>Description</th>
+
           <th>Values</th>
         </tr>
+
         <tr>
           <td>Verbose</td>
+
           <td>Display or not extra-informations</td>
-          <td>
-            True/<emphasis role="strong">False</emphasis>
-          </td>
+
+          <td>True/<emphasis role="strong">False</emphasis></td>
         </tr>
-      </informaltable>
-    </para>
+
+        <tr>
+          <td>downloadTool</td>
+
+          <td>Set tool used to download</td>
+
+          <td>"curl", "wget" or "httpdownload" (Windows only)</td>
+        </tr>
+
+        <tr>
+          <td>downloadTimeout</td>
+
+          <td>Set timeout for download</td>
+
+          <td>"5" by default</td>
+        </tr>
+      </informaltable></para>
   </refsection>
-  <!-- ===================================================================== -->
-  <!-- Description -->
-  <!-- ===================================================================== -->
+
   <refsection>
     <title>Description</title>
-    <para>
-      <literal>atomsSetConfig</literal> returns the list of modules registered to autoload
-    </para>
+
+    <para><literal>atomsSetConfig</literal> returns the list of modules
+    registered to autoload</para>
   </refsection>
-  <!-- ===================================================================== -->
-  <!-- Examples -->
-  <!-- ===================================================================== -->
+
   <refsection>
     <title>Examples</title>
-    <programlisting role="example"><![CDATA[
-// Display extra-informations
+
+    <programlisting role="example">// Display extra-informations
 atomsSetConfig('Verbose','True')
 
 // Disable autoload system
-atomsSetConfig('autoload','False')
-]]></programlisting>
+atomsSetConfig('autoload','False')</programlisting>
   </refsection>
+
+  <refsection role="see also">
+    <title>See Also</title>
+
+    <simplelist type="inline">
+      <member><link linkend="atomsGetConfig">atomsGetConfig</link></member>
+    </simplelist>
+  </refsection>
+
   <refsection>
     <title>History</title>
+
     <revhistory>
       <revision>
         <revnumber>5.4.0</revnumber>
+
         <revdescription>offLine parameter renamed to offline</revdescription>
       </revision>
     </revhistory>
index 6954708..2f9d043 100644 (file)
 // 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
-
+//
 // 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);
+  rhs = argn(2);
 
-    // Check number of input arguments
-    // =========================================================================
+  // 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));
+  end
 
-    if rhs > 1 then
-        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));
+  end
 
-    // Check input parameters type
-    // =========================================================================
+  // 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) & (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 then
+    supported_field = ["useProxy", "proxyHost", "proxyPort", ..
+                     "proxyUser", "proxyPassword", "offline", ..
+                     "autoload", "autoloadAddAfterInstall", ..
+                     "verbose", "downloadTool", "downloadTimeout"];
 
-    if (rhs>0) & (size(field,"*") <> 1) then
-        error(msprintf(gettext("%s: Wrong size for input argument #%d: Single string expected.\n"),"atomsGetConfig",1));
+    if ~or(convstr(supported_field) == convstr(field)) then
+      error(msprintf(gettext("%s: Wrong value for input argument #%d.\n"),"atomsGetConfig", 1));
     end
-
-    // Define the default value of the result according to the number of input
-    // arguments
-    // =========================================================================
-
-    if rhs==0 then
-        result = struct();
-    else
-        result = "";
+  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
+    result = struct();
+  else
+    result = "";
+  end
+
+  // Define the path of the file that will record the change
+  // =========================================================================
+  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");
+  else
+    return;
+  end
+
+  // Loop on each URL specified as input argument
+  // =========================================================================
+
+  for i=1:size(config_lines, "*")
+    if isempty( stripblanks(config_lines(i))) then
+      continue;
     end
 
-    // Define the path of the file that will record the change
-    // =========================================================================
-    atoms_directory = atomsPath("system","user");
-
-    // Does the SCIHOME/atoms/config exist, if yes load it
-    // =========================================================================
+    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)));
 
-    if fileinfo(atoms_directory+"config") <> [] then
-        config_lines = mgetl(atoms_directory+"config");
-    else
+      if (rhs == 1) & (current_field == field) then
+        result = current_value;
         return;
+      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
-
-    // Loop on each URL specified as input argument
-    // =========================================================================
-
-    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)));
-
-            if (rhs==1) & (current_field==field) then
-                result = current_value;
-                return;
-            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
+  end
 
 endfunction
index 6223510..c3f186b 100644 (file)
@@ -1,5 +1,6 @@
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 // Copyright (C) 2009 - DIGITEO - Pierre MARECHAL <pierre.marechal@scilab.org>
+// Copyright (C) 2012 - 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
 // This function has an impact on the following files :
 //  -> ATOMSDIR/config
 
-function nbChanges = atomsSetConfig(field,value)
+function nbChanges = atomsSetConfig(field, value)
 
-    rhs                = argn(2);
-    nbChanges          = 0;
-    systemUpdateNeeded = %F;
+  rhs        = argn(2);
+  nbChanges      = 0;
+  systemUpdateNeeded = %F;
 
-    // Load Atoms Internals lib if it's not already loaded
-    // =========================================================================
-    if ~ exists("atomsinternalslib") then
-        load("SCI/modules/atoms/macros/atoms_internals/lib");
-    end
-
-    // Check number of input arguments
-    // =========================================================================
+  // Check number of input arguments
+  // =========================================================================
 
-    if rhs <> 2 then
-        error(msprintf(gettext("%s: Wrong number of input argument: %d expected.\n"),"atomsSetConfig",2));
-    end
+  if rhs <> 2 then
+    error(msprintf(gettext("%s: Wrong number of input argument: %d expected.\n"), "atomsSetConfig", 2));
+  end
 
-    // Check input parameters type
-    // =========================================================================
+  // Check input parameters type
+  // =========================================================================
 
-    if type(field) <> 10 then
-        error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"),"atomsSetConfig",1));
-    end
+  if type(field) <> 10 then
+    error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"), "atomsSetConfig", 1));
+  end
 
-    if type(value) <> 10 then
-        error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"),"atomsSetConfig",2));
-    end
+  if type(value) <> 10 then
+    error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"), "atomsSetConfig", 2));
+  end
 
-    // field and value must have the same size
-    // =========================================================================
+  // field and value must have the same size
+  // =========================================================================
 
-    if or( size(field) <> size(value) ) then
-        error(msprintf(gettext("%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"),"atomsSetConfig",1,2));
+  if or( size(field) <> size(value) ) then
+    error(msprintf(gettext("%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"), "atomsSetConfig", 1, 2));
+  end
+  i=1;
+  for element = field(:)
+    if strcmpi("verbose",element) == 0 then
+      field(i) = convstr(part(element,1),'u') + part(element,2:length(element));
+    else
+      field(i) = convstr(part(element,1),'l') + part(element,2:length(element));
     end
-    i=1;
-    for element = field(:)
-        if strcmpi("verbose",element) == 0 then
-            field(i)=convstr(part(element,1),'u')+part(element,2:length(element));
-        else
-            field(i)=convstr(part(element,1),'l')+part(element,2:length(element));
-        end
-        element=field(i);   
-
-        if element == "offLine" then
-           // Prior to version 5.4.0, offline was called Offline
-           element = "offline"
-        end
-
-        if element == "useProxy"..
-            | element == "offline"..
-            | element == "autoload"..
-            | element == "autoloadAddAfterInstall"..
-            | element == "Verbose"..
-        then
-            select value(i)
-            case "True" then,
-            case "False" then,
-            case "true" then value(i)="True",
-            case "false" then value(i)="False",
-            else error(msprintf(gettext("%s: Wrong value for input configuration argument: True or False expected.\n"),value(i)));
-            end
-        elseif element == "proxyHost"..
-            | element == "proxyPort"..
-            | element == "proxyUser"..
-            | element == "proxyPassword"..
-            | element == "downloadTool"..
-            then continue;
-        else error(msprintf(gettext("%s: Wrong key for input configuration argument.\n"),element));
-        end
-        i=i+1;
+    element = field(i);
+
+    if element == "offLine" then
+      // Prior to version 5.4.0, offline was called Offline
+      element = "offline"
     end
 
-    // Define the path of the file that will record the change
-    // =========================================================================
-    atoms_directory =  atomsPath("system","user");
+    if element == "useProxy" ..
+      | element == "offline" ..
+      | element == "autoload" ..
+      | element == "autoloadAddAfterInstall" ..
+      | element == "Verbose" ..
+      then
+      select value(i)
+        case "True" then,
+        case "False" then,
+        case "true" then value(i)="True",
+        case "false" then value(i)="False",
+      else
+        error(msprintf(gettext("%s: Wrong value for input configuration argument: True or False expected.\n"), value(i)));
+      end
+    elseif element == "proxyHost" ..
+      | element == "proxyPort" ..
+      | element == "proxyUser" ..
+      | element == "proxyPassword" ..
+      | element == "downloadTool" ..
+      | element == "downloadTimeout" ..
+      then continue;
+    else
+      error(msprintf(gettext("%s: Wrong key for input configuration argument.\n"), element));
+    end
+    i = i + 1;
+  end
 
-    // Does the atoms_directory exist, if not create it
-    // =========================================================================
+  // Load Atoms Internals lib if it's not already loaded
+  // =========================================================================
+  if ~ exists("atomsinternalslib") then
+    load("SCI/modules/atoms/macros/atoms_internals/lib");
+  end
 
-    if ~ isdir(atoms_directory) then
-        mkdir(atoms_directory);
-    end
+  // Define the path of the file that will record the change
+  // =========================================================================
+  atoms_directory =  atomsPath("system", "user");
 
-    // Get the current config struct
-    // =========================================================================
+  // Does the atoms_directory exist, if not create it
+  // =========================================================================
 
-    config_struct = atomsGetConfig();
+  if ~ isdir(atoms_directory) then
+    mkdir(atoms_directory);
+  end
 
-    // Loop on field
-    // =========================================================================
+  // Get the current config struct
+  // =========================================================================
 
-    for i=1:size(field,"*")
+  config_struct = atomsGetConfig();
 
-        if (~isfield(config_struct,field(i))) | (config_struct(field(i))<> value(i)) then
-            nbChanges = nbChanges + 1;
-        else
-            continue;
-        end
+  // Loop on field
+  // =========================================================================
 
-        if field(i) == "offline" then
-            systemUpdateNeeded = %T;
-        end
+  for i=1:size(field, "*")
 
-        config_struct(field(i)) = value(i);
+    if (~isfield(config_struct, field(i))) | (config_struct(field(i)) <> value(i)) then
+      nbChanges = nbChanges + 1;
+    else
+      continue;
     end
 
-    // Shortcut
-    // =========================================================================
-    if nbChanges == 0 then
-        return;
+    if field(i) == "offline" then
+      systemUpdateNeeded = %T;
     end
 
-    // Apply Changes
-    // =========================================================================
+    config_struct(field(i)) = value(i);
+  end
 
-    config_fields      = getfield(1,config_struct);
-    config_fields(1:2) = [];
-    config_fields      = gsort(config_fields);
+  // Shortcut
+  // =========================================================================
+  if nbChanges == 0 then
+    return;
+  end
 
-    config_str = [];
+  // Apply Changes
+  // =========================================================================
 
-    for i=1:size(config_fields,"*")
-        config_str = [ config_str ; config_fields(i) + " = " + config_struct(config_fields(i)) ];
-    end
+  config_fields    = getfield(1, config_struct);
+  config_fields(1:2) = [];
+  config_fields    = gsort(config_fields);
 
-    mputl(config_str,atoms_directory+"config");
+  config_str = [];
 
-    // SystemUpdate
-    // =========================================================================
+  for i=1:size(config_fields, "*")
+    config_str = [ config_str ; config_fields(i) + " = " + config_struct(config_fields(i)) ];
+  end
 
-    if systemUpdateNeeded then
-        atomsSystemUpdate();
-    end
+  mputl(config_str, atoms_directory + "config");
+
+  // SystemUpdate
+  // =========================================================================
+
+  if systemUpdateNeeded then
+    atomsSystemUpdate();
+  end
 
 endfunction
diff --git a/scilab/modules/atoms/tests/nonreg_tests/bug_10933.dia.ref b/scilab/modules/atoms/tests/nonreg_tests/bug_10933.dia.ref
new file mode 100644 (file)
index 0000000..cccbd99
--- /dev/null
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - DIGITEO - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- TEST WITH ATOMS -->
+// <-- JVM NOT MANDATORY -->
+//
+// <-- Non-regression test for bug 10933 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=10933
+//
+// <-- Short Description -->
+// atomsGetConfig did not check value of input argument
+msgerr = msprintf(gettext("%s: Wrong value for input argument #%d.\n"),"atomsGetConfig", 1);
+assert_checkerror("atomsGetConfig(''blabla'')", msgerr);
+atomsGetConfig("useProxy");
+atomsGetConfig("proxyHost");
+atomsGetConfig("proxyPort");
+atomsGetConfig("proxyUser");
+atomsGetConfig("proxyPassword");
+atomsGetConfig("offline");
+atomsGetConfig("autoload");
+atomsGetConfig("autoloadAddAfterInstall");
+atomsGetConfig("verbose");
+atomsGetConfig("downloadTool");
+atomsGetConfig("downloadTimeout");
diff --git a/scilab/modules/atoms/tests/nonreg_tests/bug_10933.tst b/scilab/modules/atoms/tests/nonreg_tests/bug_10933.tst
new file mode 100644 (file)
index 0000000..2792215
--- /dev/null
@@ -0,0 +1,32 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - DIGITEO - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH ATOMS -->
+// <-- JVM NOT MANDATORY -->
+//
+// <-- Non-regression test for bug 10933 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=10933
+//
+// <-- Short Description -->
+// atomsGetConfig did not check value of input argument
+
+msgerr = msprintf(gettext("%s: Wrong value for input argument #%d.\n"),"atomsGetConfig", 1);
+assert_checkerror("atomsGetConfig(''blabla'')", msgerr);
+
+atomsGetConfig("useProxy");
+atomsGetConfig("proxyHost");
+atomsGetConfig("proxyPort");
+atomsGetConfig("proxyUser");
+atomsGetConfig("proxyPassword");
+atomsGetConfig("offline");
+atomsGetConfig("autoload");
+atomsGetConfig("autoloadAddAfterInstall");
+atomsGetConfig("verbose");
+atomsGetConfig("downloadTool");
+atomsGetConfig("downloadTimeout");
\ No newline at end of file