* Bug #11114 - Using load(file_descriptor, ...) is now obsolete. 18/7218/2
Antoine ELIAS [Tue, 22 May 2012 14:02:25 +0000 (16:02 +0200)]
Change-Id: Icbe95705b43d4cb672508426db1727da806154f8

scilab/CHANGES_5.4.X
scilab/etc/scilab.start
scilab/modules/io/includes/gw_io.h
scilab/modules/io/macros/%_sodload.sci [moved from scilab/modules/io/macros/load.sci with 99% similarity]
scilab/modules/io/sci_gateway/c/gw_io.c
scilab/modules/io/sci_gateway/c/sci_load.c
scilab/modules/io/sci_gateway/c/sci_save.c
scilab/modules/io/sci_gateway/io_gateway.xml

index cc1c704..f052230 100644 (file)
@@ -82,6 +82,10 @@ Scilab
    The previous format will not be supported by Scilab 6.
  - The 'matfile2sci' function now converts MAT-files to SOD files.
 
+* Calling load with a file descriptor as first input argumlent is now obsolete.
+  Please replace the file descriptor by the corresponding file name.
+  This feature will be removed in Scilab 6.0.0
+
 * Update the default size of the Scilab stack to 100 M elements (instead of 50M).
   See stacksize for more information.
 
@@ -728,6 +732,8 @@ t.
 
 * Bug #11077 fixed - rlist() returned an error.
 
+* Bug #11114 fixed - Using load(file_descriptor, ...) is now obsolete.
+
 * Bug #11115 fixed - A graphic window was opened on with two xend().
 
 * Bug #11126 fixed - Improve some error messages.
index 021b94f..b80783e 100644 (file)
@@ -74,14 +74,15 @@ end
 // loads modules ======================================================
 modules    = getmodules();
 
+// Map 'load' to 'old binary files load' called %_load to be able to load Scilab libraries
+warning("off");
+load = %_load;
+warning("on");
+
 for i=1:size(modules,"*")
   exec("SCI/modules/" + modules(i) + "/etc/" + modules(i) + ".start", -1);
 end
-clear modules i
-
-// Load is now the 'load' macro
-// remove load alias on %_load
-clearfun('load')
+clear modules i load;
 
 // Create some configuration variables ================================
 home = getenv("HOME", SCI);
index bfa4279..032f616 100644 (file)
@@ -32,6 +32,7 @@ int sci_read4b(char *fname, unsigned long fname_len);
 int sci_write4b(char *fname, unsigned long fname_len);
 int sci_save(char *fname, unsigned long fname_len);
 int sci_load(char *fname, unsigned long fname_len);
+int sci_percent_load(char *fname, unsigned long fname_len);
 int sci_getio(char *fname, unsigned long fname_len);
 int sci_setenv(char *fname, unsigned long fname_len);
 
similarity index 99%
rename from scilab/modules/io/macros/load.sci
rename to scilab/modules/io/macros/%_sodload.sci
index e5de003..a3227de 100644 (file)
@@ -8,7 +8,7 @@
 // are also available at
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
-function load(filename, varargin)
+function %_sodload(filename, varargin)
     function [varValues] = %__convertHandles__(varValues)
         for i = 1:size(varValues)
             if typeof(varValues(i)) == "ScilabMatrixHandle" then
index 1c4716f..f6d33b3 100644 (file)
@@ -37,7 +37,8 @@ static gw_generic_table Tab[] =
     {sci_read4b, "read4b"},
     {sci_write4b, "write4b"},
     {sci_save, "save"},
-    {sci_load, "%_load"}
+    {sci_load, "load"},
+    {sci_percent_load, "%_load"}
 };
 /*--------------------------------------------------------------------------*/
 int gw_io(void)
index 3c75be6..4045898 100644 (file)
  */
 
 #include "gw_io.h"
+#include "api_scilab.h"
+#include "localization.h"
+#include "sciprint.h"
+#include "warningmode.h"
 /*--------------------------------------------------------------------------*/
 extern int C2F(intload)(); /* fortran subroutine */
 /*--------------------------------------------------------------------------*/
 int sci_load(char *fname,unsigned long fname_len)
 {
+    SciErr sciErr;
+    int* piAddr = NULL;
+
+    //check first input argument type ( double can be file descriptor )
+    sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
+    if (sciErr.iErr)
+    {
+        printError(&sciErr, 0);
+        return 1;
+    }
+
+    if(isDoubleType(pvApiCtx, piAddr))
+    {
+           int Val=40;
+           int k1=0;
+        if (getWarningMode())
+        {
+            sciprint(_("%s: Feature %s is obsolete.\n"), _("Warning"), "load(file_descriptor)");
+            sciprint(_("%s: See help('load') for the rational.\n"), _("Warning"));
+            sciprint(_("%s: This feature will be permanently removed in Scilab %s\n\n"), _("Warning"), "6.0.0");
+        }
+           C2F(intload)(&Val,&k1);
+    }
+    else
+    {
+        int lw = 0;
+        //call "overload" to prepare data to export_to_hdf5 function.
+        C2F(overload) (&lw, "sodload", (unsigned long)strlen("sodload"));
+    }
+       return 0;
+}
+
+int sci_percent_load(char *fname,unsigned long fname_len)
+{
        int Val=40;
        int k1=0;
        C2F(intload)(&Val,&k1);
index fe55c74..925026b 100644 (file)
@@ -118,6 +118,7 @@ int sci_save(char *fname, unsigned long fname_len)
             freeAllocatedSingleString(pstVarI);
         }
 
+        if(iOldSave == FALSE)
         {
             int lw = 0;
             //call "overload" to prepare data to export_to_hdf5 function.
@@ -136,9 +137,9 @@ int sci_save(char *fname, unsigned long fname_len)
     {
         if (getWarningMode())
         {
-            sciprint(_("WARNING: Scilab 6 will not support the file format used.\n"));
-            sciprint(_("WARNING: Please quote the variable declaration. Example, save('myData.sod',a) becomes save('myData.sod','a').\n"));
-            sciprint(_("WARNING: See help('save') for the rational.\n"));
+            sciprint(_("%s: Scilab 6 will not support the file format used.\n"), _("Warning"));
+            sciprint(_("%s: Please quote the variable declaration. Example, save('myData.sod',a) becomes save('myData.sod','a').\n"), _("Warning"));
+            sciprint(_("%s: See help('save') for the rational.\n"), _("Warning"));
         }
         C2F(intsave)();
     }
index 3481092..6f25028 100644 (file)
@@ -13,8 +13,8 @@
 
 <!DOCTYPE GATEWAY SYSTEM "../../functions/xml/gateway.dtd">
 <GATEWAY name="io">
-  <!-- =================== -->
-  <!--
+    <!-- =================== -->
+    <!--
  Scilab
  Interface description. In this file, we define the list of the function which
  will be available into Scilab and the link to the "native" function.
  ===================
  Don't touch if you do not know what you are doing
 -->
-  <!-- =================== -->
-  
-  <PRIMITIVE gatewayId="5" primitiveId="1" primitiveName="setenv" />
-  <PRIMITIVE gatewayId="5" primitiveId="2" primitiveName="read" />
-  <PRIMITIVE gatewayId="5" primitiveId="3" primitiveName="getenv" />
-  <PRIMITIVE gatewayId="5" primitiveId="4" primitiveName="getio" />
-  <!-- <PRIMITIVE gatewayId="5" primitiveId="5" primitiveName="" />  -->
-  <!-- <PRIMITIVE gatewayId="5" primitiveId="6" primitiveName="" />  -->
-  <PRIMITIVE gatewayId="5" primitiveId="7" primitiveName="write" />
-  <!-- <PRIMITIVE gatewayId="5" primitiveId="8" primitiveName="" />  -->
-  <PRIMITIVE gatewayId="5" primitiveId="9" primitiveName="file" />
-  <PRIMITIVE gatewayId="5" primitiveId="10" primitiveName="host" />
-  <PRIMITIVE gatewayId="5" primitiveId="11" primitiveName="unix" />
-  <PRIMITIVE gatewayId="5" primitiveId="12" primitiveName="readb" />
-  <PRIMITIVE gatewayId="5" primitiveId="13" primitiveName="writb" />
-  <PRIMITIVE gatewayId="5" primitiveId="14" primitiveName="getpid" />
-  <PRIMITIVE gatewayId="5" primitiveId="15" primitiveName="read4b" />
-  <PRIMITIVE gatewayId="5" primitiveId="16" primitiveName="write4b" />
-  <PRIMITIVE gatewayId="5" primitiveId="17" primitiveName="save" />
-  <PRIMITIVE gatewayId="5" primitiveId="18" primitiveName="%_load" />
-  <PRIMITIVE gatewayId="5" primitiveId="18" primitiveName="load" />
-  
+    <!-- =================== -->
+
+    <PRIMITIVE gatewayId="5" primitiveId="1" primitiveName="setenv" />
+    <PRIMITIVE gatewayId="5" primitiveId="2" primitiveName="read" />
+    <PRIMITIVE gatewayId="5" primitiveId="3" primitiveName="getenv" />
+    <PRIMITIVE gatewayId="5" primitiveId="4" primitiveName="getio" />
+    <!-- <PRIMITIVE gatewayId="5" primitiveId="5" primitiveName="" />  -->
+    <!-- <PRIMITIVE gatewayId="5" primitiveId="6" primitiveName="" />  -->
+    <PRIMITIVE gatewayId="5" primitiveId="7" primitiveName="write" />
+    <!-- <PRIMITIVE gatewayId="5" primitiveId="8" primitiveName="" />  -->
+    <PRIMITIVE gatewayId="5" primitiveId="9" primitiveName="file" />
+    <PRIMITIVE gatewayId="5" primitiveId="10" primitiveName="host" />
+    <PRIMITIVE gatewayId="5" primitiveId="11" primitiveName="unix" />
+    <PRIMITIVE gatewayId="5" primitiveId="12" primitiveName="readb" />
+    <PRIMITIVE gatewayId="5" primitiveId="13" primitiveName="writb" />
+    <PRIMITIVE gatewayId="5" primitiveId="14" primitiveName="getpid" />
+    <PRIMITIVE gatewayId="5" primitiveId="15" primitiveName="read4b" />
+    <PRIMITIVE gatewayId="5" primitiveId="16" primitiveName="write4b" />
+    <PRIMITIVE gatewayId="5" primitiveId="17" primitiveName="save" />
+    <PRIMITIVE gatewayId="5" primitiveId="18" primitiveName="load" />
+    <PRIMITIVE gatewayId="5" primitiveId="19" primitiveName="%_load" />
 </GATEWAY>