bug 7907 - check 'files' input argument 47/1747/13
Allan CORNET [Tue, 31 Aug 2010 15:20:09 +0000 (17:20 +0200)]
ilib_for_link, ilib_build will not accept files with ".o" or ".obj" extensions
  for source files in Scilab 5.4.0.

Change-Id: I0048fb1b81fc88f13447c1334ad50b2e9fdec3fa

13 files changed:
scilab/CHANGES_5.3.X
scilab/modules/dynamic_link/help/en_US/ilib_build.xml
scilab/modules/dynamic_link/help/en_US/ilib_for_link.xml
scilab/modules/dynamic_link/macros/ilib_build.sci
scilab/modules/dynamic_link/macros/ilib_compile.sci
scilab/modules/dynamic_link/macros/ilib_for_link.sci
scilab/modules/dynamic_link/macros/ilib_gen_Make_unix.sci
scilab/modules/dynamic_link/macros/ilib_mex_build.sci
scilab/modules/dynamic_link/macros/windows/dlwGenerateMakefile.sci
scilab/modules/dynamic_link/tests/nonreg_tests/bug_7907.dia.ref [new file with mode: 0644]
scilab/modules/dynamic_link/tests/nonreg_tests/bug_7907.tst [new file with mode: 0644]
scilab/modules/dynamic_link/tests/unit_tests/ilib_for_link_f77.dia.ref
scilab/modules/dynamic_link/tests/unit_tests/ilib_for_link_f77.tst

index 27bf667..4c212a3 100644 (file)
@@ -30,6 +30,9 @@ Removed functions (previously declared as obsolete):
 * 'oldbesseli', 'oldbesselj', 'oldbesselk' and 'oldbessely' removed.
   Please use 'besseli', 'besselj', 'besselk' and 'bessely' instead.
 
+* ilib_for_link, ilib_build will not accept files with ".o" or ".obj" extensions
+  for source files in Scilab 5.4.0.
+
 New functions
 =============
 
@@ -998,6 +1001,9 @@ Bug Fixes:
 
 * bug 7897 fixed - configure failed under FreeBSD (bashim)
 
+* bug 7907 fixed -  ilib_build, ilib_for_link, ... did not check 'files' input
+                    argument.
+
 * bug 7908 fixed - The number of values modified by scicos_getvalues could not
                    by more than 20. This value has been updated to 30
                    variables.
index f8c3621..4f4134e 100644 (file)
@@ -60,8 +60,7 @@
         <term>files</term>
 
         <listitem>
-          <para>string matrix giving source (from Scilab 5.0) or object files
-          needed for shared library creation</para>
+          <para>string matrix giving source files needed for shared library creation. Since Scilab 5.3.1, object files are deprecated.</para>
         </listitem>
       </varlistentry>
 
index 3df615c..86bb3a5 100644 (file)
@@ -34,7 +34,7 @@
       <varlistentry>
         <term>files</term>
         <listitem>
-          <para>string matrix giving source (from Scilab 5.0) or object files needed for shared library creation</para>
+          <para>string matrix giving source files needed for shared library creation. Since Scilab 5.3.1, object files are deprecated.</para>
         </listitem>
       </varlistentry>
       <varlistentry>
index ef01734..2fbfa77 100644 (file)
@@ -20,7 +20,7 @@ function ilib_build(ilib_name, ..
                     cc)
 
   if ~haveacompiler() then
-    error(msprintf(gettext("%s: A Fortran or C compiler is required.\n"), 'ilib_build'));
+    error(msprintf(gettext("%s: A Fortran or C compiler is required.\n"), "ilib_build"));
     return;
   end
 
@@ -31,54 +31,58 @@ function ilib_build(ilib_name, ..
   end
 
   if type(ilib_name) <> 10 then
-    error(999, msprintf(_("%s: Wrong type for input argument #%d: A string expected.\n"), 'ilib_build', 1));
+    error(999, msprintf(_("%s: Wrong type for input argument #%d: A string expected.\n"), "ilib_build", 1));
   end
 
-  if size(ilib_name,'*') <> 1 then
-    error(999, msprintf(_("%s: Wrong size for input argument #%d: A string expected.\n"), 'ilib_build', 1));
+  if size(ilib_name,"*") <> 1 then
+    error(999, msprintf(_("%s: Wrong size for input argument #%d: A string expected.\n"), "ilib_build", 1));
   end
 
   if type(table) <> 10 then
-    error(999,msprintf(_("%s: Wrong type for input argument #%d: A matrix of strings expected.\n"), 'ilib_build', 2));
+    error(999,msprintf(_("%s: Wrong type for input argument #%d: A matrix of strings expected.\n"), "ilib_build", 2));
   end
 
-  if size(table,'*') > 999 * 2 then
-    error(999,msprintf(_("%s: Wrong size for input argument #%d: A matrix of strings < 999 expected.\n"), 'ilib_build', 2));
+  if size(table,"*") > 999 * 2 then
+    error(999,msprintf(_("%s: Wrong size for input argument #%d: A matrix of strings < 999 expected.\n"), "ilib_build", 2));
   end
 
-  if getos() <> 'Windows' & strncpy(ilib_name, 3) <> "lib" then
+  if getos() <> "Windows" & strncpy(ilib_name, 3) <> "lib" then
     // We add a leading lib under Linux/Unix because it is the way
     ilib_name = "lib" + ilib_name;
   end
 
+  if ~isempty(files) & (or(fileext(files)==".o") | or(fileext(files)==".obj")) then
+    warnobsolete(msprintf(_("A managed file extension for input argument #%d"), 3), "5.4.0");
+  end
+
   if rhs > 4 then
-    if (makename <> [] & makename <> '') then
-      warning(msprintf(_("%s: Wrong value for input argument #%d: '''' or ''[]'' expected.\n"), 'ilib_build', 5));
+    if (makename <> [] & makename <> "") then
+      warning(msprintf(_("%s: Wrong value for input argument #%d: """" or ""[]"" expected.\n"), "ilib_build", 5));
     end
   end
 
-  if rhs <= 5 then ldflags = ''; end
-  if rhs <= 6 then cflags  = ''; end
-  if rhs <= 7 then fflags  = ''; end
+  if rhs <= 5 then ldflags = ""; end
+  if rhs <= 6 then cflags  = ""; end
+  if rhs <= 7 then fflags  = ""; end
   if rhs <= 8 then ismex  = %f; end
-  if rhs <= 9 then cc  = ''; end
+  if rhs <= 9 then cc  = ""; end
 
-  if getos() == 'Windows' then
-    if ~isdef('makename') | (makename == '') | (makename == []) then
-      // Load dynamic_link Internal lib if it's not already loaded
+  if getos() == "Windows" then
+    if ~isdef("makename") | (makename == "") | (makename == []) then
+      // Load dynamic_link Internal lib if it"s not already loaded
       if ~exists("dynamic_linkwindowslib") then
         load("SCI/modules/dynamic_link/macros/windows/lib");
       end
       makename = dlwGetDefltMakefileName();
     end
   else
-    makename = 'Makefile';
+    makename = "Makefile";
   end
 
   // check if library is not already loaded
   if or(link() == ilib_name) then
-    error(999, msprintf(_('%s: ''%s'' already loaded in scilab.'),'ilib_build',ilib_name) + ..
-    ascii(10) + _('You need to unload this library before.'));
+    error(999, msprintf(_("%s: ""%s"" already loaded in scilab."),"ilib_build",ilib_name) + ..
+    ascii(10) + _("You need to unload this library before."));
   end
 
   // generate the gateway file
@@ -100,16 +104,16 @@ function ilib_build(ilib_name, ..
 
   // generate a Makefile
   if ( ilib_verbose() <> 0 ) then
-      if getos() == 'Windows'
+      if getos() == "Windows"
         mprintf(_("   Generate a Makefile: %s\n"), makename);
       else
         mprintf(_("   Generate a Makefile\n"));
       end
   end
 
-  if getos() <> 'Windows' then // Needs to copy the libfoo.c which contains important stuff
+  if getos() <> "Windows" then // Needs to copy the libfoo.c which contains important stuff
     files = files(:)';
-    files = [files, ilib_name + '.c'];
+    files = [files, ilib_name + ".c"];
   end
 
   ilib_gen_Make(ilib_name, table, files, libs, makename, %t, ldflags, cflags, fflags, cc);
@@ -124,7 +128,7 @@ function ilib_build(ilib_name, ..
   if ( ilib_verbose() <> 0 ) then
     mprintf(_("   Generate a cleaner file\n"));
   end
-  ilib_gen_cleaner(makename, 'loader.sce', [libn; file_gw_name]);
+  ilib_gen_cleaner(makename, "loader.sce", [libn; file_gw_name]);
 
 endfunction
 //=============================================================================
index 0bbdf7d..d47faaa 100644 (file)
@@ -34,9 +34,16 @@ function libn = ilib_compile(lib_name, ..
 
   [lhs,rhs]=argn(0);
 
-  if rhs < 3 then files = []; end
+  if rhs < 3 then
+    files = [];
+  else
+    if ~isempty(files) & (or(fileext(files)==".o") | or(fileext(files)==".obj")) then
+      warnobsolete(msprintf(_("A managed file extension for input argument #%d"), 3), "5.4.0");
+    end
+  end
 
-  if typeof(lib_name)<>'string' then
+
+  if typeof(lib_name)<>"string" then
     error(msprintf(gettext("%s: Wrong type for input argument #%d: A string expected.\n"),"ilib_compile",1));
     return ;
   end
@@ -44,8 +51,8 @@ function libn = ilib_compile(lib_name, ..
   oldpath = pwd();
   files = files(:)';
 
-  managed_ext = ['.obj','.o'];
-  for i=1:size(files,'*') // compatibility scilab 4.x
+  managed_ext = [".obj",".o"];
+  for i=1:size(files,"*") // compatibility scilab 4.x
     [path_f, file_f, ext_f] = fileparts(files(i));
     if or(managed_ext == ext_f) then
       files1(i) = path_f + file_f;
@@ -61,14 +68,14 @@ function libn = ilib_compile(lib_name, ..
     chdir(path);
   end
 
-  if getos() == 'Windows' then
+  if getos() == "Windows" then
     //** ----------- Windows section  -----------------
-    msgs_make = '';
-    nf = size(files,'*');
+    msgs_make = "";
+    nf = size(files,"*");
 
     for i=1:nf
       if ( ilib_verbose() <> 0 ) then
-        mprintf(_("   Compilation of ") + string(files1(i)) +'\n');
+        mprintf(_("   Compilation of ") + string(files1(i)) +"\n");
       end
     end
 
@@ -77,10 +84,10 @@ function libn = ilib_compile(lib_name, ..
       mprintf(_("   Building shared library (be patient)\n"));
     end
 
-    [msg, stat] = unix_g(make_command + makename + ' all 2>&0');
+    [msg, stat] = unix_g(make_command + makename + " all 2>&0");
     if stat <> 0 then
       // more feedback when compilation fails
-      [msg, stat, stderr] = unix_g(make_command + makename + ' all 1>&2'); 
+      [msg, stat, stderr] = unix_g(make_command + makename + " all 1>&2"); 
       disp(stderr);
       error(msprintf(gettext("%s: Error while executing %s.\n"), "ilib_compile", makename));
     else
@@ -101,12 +108,12 @@ function libn = ilib_compile(lib_name, ..
       defaultModulesFHeader=[ "core" ];
       ScilabTreeFound=%t
 
-      for x = defaultModulesCHeader(:)'
+      for x = defaultModulesCHeader(:)';
           cflags=" -I"+SCI+"/modules/"+x+"/includes/ "+cflags;
       end
       cflags=" -I"+SCI+"/libs/MALLOC/includes/ " + cflags;
 
-      for x = defaultModulesFHeader(:)'
+      for x = defaultModulesFHeader(:)';
           fflags=" -I"+SCI+"/modules/"+x+"/includes/ " + fflags;
           end
     end
@@ -146,7 +153,7 @@ function libn = ilib_compile(lib_name, ..
       mprintf(gettext("Output: %s\n"),msg);
       mprintf(gettext("stderr: %s\n"),stderr);
     end
-    
+
     if ierr <> 0 then
       mprintf(gettext("%s: An error occurred during the compilation:\n"),"ilib_compile");
       lines(0);
@@ -158,7 +165,7 @@ function libn = ilib_compile(lib_name, ..
       chdir(oldPath); // Go back to the working dir
       return ;
     end
-    
+
     if stderr <> "" then
       if ( ilib_verbose() <> 0 ) then
         mprintf(gettext("%s: Warning: No error code returned by the compilation but the error output is not empty:\n"),"ilib_compile");
@@ -181,9 +188,9 @@ endfunction
 function [make_command,lib_name_make,lib_name,path,makename,files] = ..
              ilib_compile_get_names(lib_name, makename, files)
 
-  if getos() <> 'Windows' then
-    managed_ext = '.o';
-    for i=1:size(files,'*') // compatibility scilab 4.x
+  if getos() <> "Windows" then
+    managed_ext = ".o";
+    for i=1:size(files,"*") // compatibility scilab 4.x
       [path_f, file_f, ext_f] = fileparts(files(i));
       if or(managed_ext == ext_f) then
         files(i) = path_f + file_f;
@@ -192,25 +199,25 @@ function [make_command,lib_name_make,lib_name,path,makename,files] = ..
       end
     end
 
-    k = strindex(makename,['/','\']);
+    k = strindex(makename,["/","\"]);
 
     if k~=[] then
       path = part(makename,1:k($));
       makename = part(makename,k($)+1:length(makename));
     else
-      path = '';
+      path = "";
     end
 
     lib_name = lib_name + getdynlibext();
     lib_name_make = lib_name;
 
-    make_command = 'make ';
+    make_command = "make ";
     if files <> [] then
-      files = files + '.o';
+      files = files + ".o";
     end
 
   else // Windows
-    // Load dynamic_link Internal lib if it's not already loaded
+    // Load dynamic_link Internal lib if it"s not already loaded
     if ~ exists("dynamic_linkwindowslib") then
       load("SCI/modules/dynamic_link/macros/windows/lib");
     end
index 85cce5e..0cdbe94 100644 (file)
@@ -28,8 +28,8 @@ function libn = ilib_for_link(names, ..
   end
 
   if rhs > 4 then
-    if (makename <> [] & makename <> '') then
-      warning(msprintf(_("%s: Wrong value for input argument #%d: '''' or ''[]'' expected.\n"), 'ilib_for_link', 5));
+    if (makename <> [] & makename <> "") then
+      warning(msprintf(_("%s: Wrong value for input argument #%d: """" or ""[]"" expected.\n"), "ilib_for_link", 5));
     end
   end
   if rhs <= 5 then loadername = "loader.sce";end
@@ -39,16 +39,20 @@ function libn = ilib_for_link(names, ..
   if rhs <= 9 then fflags  = ""; end
   if rhs <= 10 then cc  = ""; end
 
-  if getos() == 'Windows' then
-    if ~isdef('makename') | (makename == []) | (makename == '') then
-      // Load dynamic_link Internal lib if it's not already loaded
+  if ~isempty(files) & (or(fileext(files)==".o") | or(fileext(files)==".obj")) then
+    warnobsolete(msprintf(_("A managed file extension for input argument #%d"), 2), "5.4.0");
+  end
+
+  if getos() == "Windows" then
+    if ~isdef("makename") | (makename == []) | (makename == "") then
+      // Load dynamic_link Internal lib if it"s not already loaded
       if ~ exists("dynamic_linkwindowslib") then
         load("SCI/modules/dynamic_link/macros/windows/lib");
       end
       makename = dlwGetDefltMakefileName();
     end
   else
-    makename = 'Makefile';
+    makename = "Makefile";
   end
 
   // generate a loader file
@@ -59,7 +63,7 @@ function libn = ilib_for_link(names, ..
   tables = [];
 
   // we manage .f90 as .f on windows
-  if getos() == 'Windows' then
+  if getos() == "Windows" then
    if findmsifortcompiler() <> "unknown" then
      if flag == "f90" then
        flag = "f";
@@ -74,9 +78,9 @@ function libn = ilib_for_link(names, ..
   ilib_gen_loader(names, tables, libs, libname, flag, loadername);
 
   // bug 4515 - unlink previous function with same name
-  n = size(names,'*');
+  n = size(names,"*");
   for i = 1:n
-    execstr("[bOK, ilib] = c_link(''" + names(i) + "'');if bOK then ulink(ilib), end");
+    execstr("[bOK, ilib] = c_link(""" + names(i) + """);if bOK then ulink(ilib), end");
   end
 
   // generate a Makefile
@@ -104,7 +108,7 @@ function libn = ilib_for_link(names, ..
     libname = names(1);
   end
 
-  libn = ilib_compile('lib' + libname, makename, files);
+  libn = ilib_compile("lib" + libname, makename, files);
 
   if ( ilib_verbose() <> 0 ) then
     mprintf(_("   Generate a cleaner file\n"));
@@ -126,7 +130,7 @@ function generateMakefile(names, ..
                             flag)
 
 
-  if getos() <> 'Windows' then
+  if getos() <> "Windows" then
     Makename = makename;
     ilib_gen_Make_unix(names, ..
                      files, ..
@@ -141,8 +145,8 @@ function generateMakefile(names, ..
       load("SCI/modules/dynamic_link/macros/windows/lib");
     end
 
-    if strncpy(names,3) <> 'lib' then
-      names = 'lib' + names;
+    if strncpy(names,3) <> "lib" then
+      names = "lib" + names;
     end
 
     names = names(1);
index 3db27fe..b3d8d19 100644 (file)
@@ -147,7 +147,11 @@ function ilib_gen_Make_unix(names,   ..
                       mprintf(gettext("   %s: Did not copy %s: Source and target directories are the same (%s).\n"),"ilib_gen_Make",x,pathFrom);
                     end
                 end
-
+                
+                if ~isfile(file_name + file_extension) then
+                  error(999, msprintf(_("%s: Wrong value for input argument #%d: existing file(s) expected.\n"), "ilib_gen_Make_unix", 2));
+                end
+                
                 filelist = filelist + " " + file_name + file_extension;
 
             else
@@ -159,6 +163,10 @@ function ilib_gen_Make_unix(names,   ..
                 // Not that we don't want to copy working files
                 ignoredFileExtension=[".lo",".la",".lai"]
                 for f=filesMatching(:)'
+                
+                  if ~isfile(f) then
+                    error(999, msprintf(_("%s: Wrong value for input argument #%d: existing file(s) expected.\n"), "ilib_gen_Make_unix", 2));
+                  end
 
                   if strindex(f,ignoredFileExtension) == [] then
                       if ( ilib_verbose() <> 0 ) then
@@ -274,4 +282,4 @@ function generateConfigure(workingPath, ..
     end
 
 endfunction
-//=============================================================================
\ No newline at end of file
+//=============================================================================
index 31cfebe..055ed05 100644 (file)
@@ -12,7 +12,7 @@
 function ilib_mex_build(ilib_name, table, files, libs, makename, ldflags, cflags, fflags, cc)
 
   if ~haveacompiler() then
-    error(msprintf(gettext("%s: A Fortran or C compiler is required.\n"), 'ilib_mex_build'));
+    error(msprintf(gettext("%s: A Fortran or C compiler is required.\n"), "ilib_mex_build"));
     return;
   end
 
@@ -22,21 +22,25 @@ function ilib_mex_build(ilib_name, table, files, libs, makename, ldflags, cflags
     return
   end
 
-  if rhs > 4 & makename <> [] & makename <> '' then
-    warning(msprintf(_("%s: Wrong value for input argument #%d: '''' or ''[]'' expected.\n"),'ilib_mex_build', 5));
+  if rhs > 4 & makename <> [] & makename <> "" then
+    warning(msprintf(_("%s: Wrong value for input argument #%d: """" or ""[]"" expected.\n"),"ilib_mex_build", 5));
+  end
+
+  if ~isempty(files) & (or(fileext(files)==".o") | or(fileext(files)==".obj")) then
+    warnobsolete(msprintf(_("A managed file extension for input argument #%d"), 3), "5.4.0");
   end
   
-  if rhs <= 5 then ldflags = ''; end
-  if rhs <= 6 then cflags  = ''; end
-  if rhs <= 7 then fflags  = ''; end
-  if rhs <= 8 then cc  = ''; end
+  if rhs <= 5 then ldflags = ""; end
+  if rhs <= 6 then cflags  = ""; end
+  if rhs <= 7 then fflags  = ""; end
+  if rhs <= 8 then cc  = ""; end
 
-  if ~isdef('makename') then
-    makename = '';
+  if ~isdef("makename") then
+    makename = "";
   end
 
 
-  if getos() <> 'Windows' then
+  if getos() <> "Windows" then
     // These flags are important... The rename of the fly the name of the
     // function in the C / C++ / Fortran code
     cflags=" -DmexFunction=mex_\$* " + cflags
index 3005e22..e02846c 100644 (file)
@@ -176,6 +176,9 @@ function ilib_gen_Make_win32(name, ..
     end
   end
 
+  if ~and(isfile(FILES_SRC_MATRIX)) then
+     error(999, msprintf(_("%s: Wrong value for input argument #%d: existing file(s) expected.\n"), "ilib_gen_Make", 3));
+  end  
 
   FILES_SRC = strcat(FILES_SRC_MATRIX,' ');
 
diff --git a/scilab/modules/dynamic_link/tests/nonreg_tests/bug_7907.dia.ref b/scilab/modules/dynamic_link/tests/nonreg_tests/bug_7907.dia.ref
new file mode 100644 (file)
index 0000000..b7fee27
--- /dev/null
@@ -0,0 +1,49 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- JVM NOT MANDATORY -->
+// <-- ENGLISH IMPOSED -->
+//
+// <-- Non-regression test for bug 7907 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7907
+// <-- Short Description -->
+// ilib_build, ilib_for_link, ... did not check 'files' input argument.
+// 
+//
+ilib_verbose(0);
+cd(TMPDIR);
+mputl("void sci_fun1(){}", TMPDIR + "/fun1.c");
+files = "fun1.o";
+ilib_build("build_c", ["fun1", "sci_fun1"],files,[]);
+WARNING: Function ilib_build is obsolete.
+WARNING: Please use a managed file extension for input argument #3 instead.
+WARNING: This function will be permanently removed in Scilab 5.3.1
+
+WARNING: Function ilib_compile is obsolete.
+WARNING: Please use a managed file extension for input argument #3 instead.
+WARNING: This function will be permanently removed in Scilab 5.3.1
+
+mdelete(TMPDIR + "/fun1.c");
+if getos() <> "Windows" then
+  fnameref = "ilib_gen_Make_unix";
+  idargref = 2;
+else
+  fnameref = "ilib_gen_Make";
+  idargref = 3;
+end
+files = ['fun1.c','fun2.c','sci_fun1.c'];
+if execstr("ilib_build(""build_c"", [""fun1"", ""sci_fun1""],files,[]);", "errcatch") <> 999 then bugmes();quit;end
+if lasterror() <> msprintf(_("%s: Wrong value for input argument #%d: existing file(s) expected.\n"), fnameref, idargref) then bugmes();quit;end
+if execstr("ilib_for_link(""ext1c"", ""fun1.c"", [], ""c"");", "errcatch") <> 999 then bugmes();quit;end
+if lasterror() <> msprintf(_("%s: Wrong value for input argument #%d: existing file(s) expected.\n"), fnameref, idargref) then bugmes();quit;end
+if execstr("ilib_for_link(""ext1c"", ""fun1.c"", [], ""c"");", "errcatch") <> 999 then bugmes();quit;end
+if lasterror() <> msprintf(_("%s: Wrong value for input argument #%d: existing file(s) expected.\n"), fnameref, idargref) then bugmes();quit;end
+if execstr("ilib_mex_build(""libmex"", [""mexf16"", ""mexfunction16"", ""cmex""],[""fun1.c""],[],[],"""","""","""");", "errcatch") <> 999 then bugmes();quit;end
+if lasterror() <> msprintf(_("%s: Wrong value for input argument #%d: existing file(s) expected.\n"), fnameref, idargref) then bugmes();quit;end
+// =============================================================================
diff --git a/scilab/modules/dynamic_link/tests/nonreg_tests/bug_7907.tst b/scilab/modules/dynamic_link/tests/nonreg_tests/bug_7907.tst
new file mode 100644 (file)
index 0000000..4fa8faf
--- /dev/null
@@ -0,0 +1,55 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- JVM NOT MANDATORY -->
+// <-- ENGLISH IMPOSED -->
+//
+// <-- Non-regression test for bug 7907 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7907
+// <-- Short Description -->
+// ilib_build, ilib_for_link, ... did not check 'files' input argument.
+// 
+//
+
+if getos() <> "Windows" then
+  fnameref = "ilib_gen_Make_unix";
+  idargref = 2;
+else
+  fnameref = "ilib_gen_Make";
+  idargref = 3;
+end
+
+ilib_verbose(0);
+cd(TMPDIR);
+
+// check with old extension (file fun1.c exists)
+mputl("void sci_fun1(){}", TMPDIR + "/fun1.c");
+files = "fun1.o";
+if execstr("ilib_build(""build_c"", [""fun1"", ""sci_fun1""],files,[]);", "errcatch") <> 0 then pause,end
+mdelete(TMPDIR + "/fun1.c");
+
+// check with old extension (file fun2.c does not exist)
+files = "fun2.o";
+if execstr("ilib_build(""build_c"", [""fun2"", ""sci_fun2""],files,[]);", "errcatch") <> 999 then pause,end
+if lasterror() <> msprintf(_("%s: Wrong value for input argument #%d: existing file(s) expected.\n"), fnameref, idargref) then pause, end
+
+files = ['fun1.c','fun2.c','sci_fun1.c'];
+if execstr("ilib_build(""build_c"", [""fun1"", ""sci_fun1""],files,[]);", "errcatch") <> 999 then pause,end
+if lasterror() <> msprintf(_("%s: Wrong value for input argument #%d: existing file(s) expected.\n"), fnameref, idargref) then pause, end
+
+if execstr("ilib_for_link(""ext1c"", ""fun1.c"", [], ""c"");", "errcatch") <> 999 then pause, end
+if lasterror() <> msprintf(_("%s: Wrong value for input argument #%d: existing file(s) expected.\n"), fnameref, idargref) then pause, end
+
+if execstr("ilib_for_link(""ext1c"", ""fun1.c"", [], ""c"");", "errcatch") <> 999 then pause, end
+if lasterror() <> msprintf(_("%s: Wrong value for input argument #%d: existing file(s) expected.\n"), fnameref, idargref) then pause, end
+
+if execstr("ilib_mex_build(""libmex"", [""mexf16"", ""mexfunction16"", ""cmex""],[""fun1.c""],[],[],"""","""","""");", "errcatch") <> 999 then pause, end
+if lasterror() <> msprintf(_("%s: Wrong value for input argument #%d: existing file(s) expected.\n"), fnameref, idargref) then pause, end
+
+// =============================================================================
index 2c7fdb3..71983bc 100644 (file)
@@ -5,7 +5,6 @@
 //
 //  This file is distributed under the same license as the Scilab package.
 // ============================================================================
-// <-- ENGLISH IMPOSED -->
 // <-- JVM NOT MANDATORY -->
 //
 // Test fortran 77 dynamic link.
@@ -20,8 +19,7 @@ sourcecode=['      subroutine incrdoublef77(x,y)'
     '      y=x+1'
     '      end'];
 mputl(sourcecode,'incrdoublef77.f');
-libpath=ilib_for_link('incrdoublef77','incrdoublef77.f',[],'f','Makefile');
-WARNING: ilib_for_link: Wrong value for input argument #5: '' or '[]' expected.
+libpath=ilib_for_link('incrdoublef77','incrdoublef77.f',[],'f',[]);
 exec loader.sce;
 n = 1;
 m = call("incrdoublef77",n,1,"d","out",[1,1],2,"d");
index 0f2a71c..ad282f0 100644 (file)
@@ -5,10 +5,7 @@
 //
 //  This file is distributed under the same license as the Scilab package.
 // ============================================================================
-
-// <-- ENGLISH IMPOSED -->
 // <-- JVM NOT MANDATORY -->
-
 //
 // Test fortran 77 dynamic link.
 //
@@ -24,7 +21,7 @@ sourcecode=['      subroutine incrdoublef77(x,y)'
     '      y=x+1'
     '      end'];
 mputl(sourcecode,'incrdoublef77.f');
-libpath=ilib_for_link('incrdoublef77','incrdoublef77.f',[],'f','Makefile');
+libpath=ilib_for_link('incrdoublef77','incrdoublef77.f',[],'f',[]);
 exec loader.sce;
 n = 1;
 m = call("incrdoublef77",n,1,"d","out",[1,1],2,"d");