merge with master (getcwd)
Allan CORNET [Thu, 6 Aug 2009 09:51:36 +0000 (11:51 +0200)]
1  2 
scilab/CHANGES_5.2.X
scilab/modules/scicos/macros/scicos_auto/scicos.sci
scilab/modules/scicos/macros/scicos_auto/scicos_simulate.sci
scilab/modules/scicos/macros/scicos_scicos/CodeGeneration_.sci
scilab/modules/scicos/macros/scicos_scicos/buildnewblock.sci
scilab/modules/scicos/macros/scicos_scicos/do_browser.sci
scilab/modules/scicos/macros/scicos_scicos/get_dynamic_lib_dir.sci
scilab/modules/scicos/macros/scicos_scicos/scicos_block_link.sci

Simple merge
@@@ -1867,215 -1378,129 +1867,210 @@@ function [ok,XX,gui_path,flgcdgen,szclk
    //***********************************
    // Get the name of the file
    //***********************************
 -  foo=3;
    okk=%f;
    rdnom='foo';
-   rpat=getcwd();
+   rpat=pwd();
 -  libs='';
 -  label1=[hname;pwd()+'/'+hname;''];
 +  if %scicos_libs<>[] then
 +    libs=sci2exp(%scicos_libs(:)',0);
 +  else
 +    libs=''
 +  end
-   //## disable the 'ugly' / in windaube world
-   if MSDOS then
-     label1=[hname;getcwd()+'\'+hname;libs];
-   else
-     label1=[hname;getcwd()+'/'+hname;libs];
-   end
++  label1=[hname;pwd()+filesep()+hname;libs];
  
 -  while %t do
 +  while %t do //loop while the user answer are not ok
      ok=%t  // to avoid infinite loop
 -    [okk,..
 -     rdnom,..
 -     rpat,..
 -     libs,..
 -     label1]=getvalue('Set code generator parameters :',..
 -                      ['New block''s name :';
 -                       'Created files Path :';
 -                       'Other object files to link with (if any)'],..
 -                       list('str',1,'str',1,'str',1),label1);
 -    if okk==%f then
 -      ok=%f
 -      return
 -    end
 -    rpat=stripblanks(rpat);
  
 -    //** 1/07/06 Alan trying to solve multiple libraries during week-end
 -    if strindex(libs,'''')<>[] | strindex(libs,'""')<>[] then
 -      ierr=execstr('libs=evstr(libs)','errcatch')
 -      if ierr<>0  then
 -        message(['Can''t solve other files to link'])
 -        ok=%f;
 -        return
 +    if atomicflag then
 +      rdnom=all_scs_m.props.title(1)+'_'+strcat(string(super_path),'_')+'_'+string(numk)
 +      rpat=TMPDIR;
 +    else
 +
 +      [okk,..
 +       rdnom,..
 +       rpat,..
 +       libs,..
 +       label1]=getvalue(_('Set code generator parameters :'),..
 +                        [_('New block''s name :');
 +                         _('Created files Path :');
 +                         _('Other object files to link with (if any)')],..
 +                         list('str',1,'str',1,'str',1),label1);
 +      if okk==%f then ok=-1; return; end
 +      
 +      rpat=stripblanks(rpat);
 +
 +      //** 1/07/06 Alan trying to solve multiple libraries
 +      if strindex(libs,'''')<>[] | strindex(libs,'""')<>[] then
 +        ierr=execstr('libs=evstr(libs)','errcatch')
 +        if ierr<>0  then
 +          messagebox(_('Can''t solve other files to link'),'modal','error')
 +          ok=-1;
 +          return
 +        end
        end
 -    end
 +    end  //if atomicflag then
  
 -    //** Alan, I put a warning here in order to inform the user
 -    //** that the name of the superblock will change
 -    //** because the space char in name isn't allowed.
 -    if grep(rdnom," ")<>[] then
 -      message(['Superblock name cannot contains space characters.';
 -               'space chars will be automatically substituted by ""_"" '])
 +    if stripblanks(rdnom)==emptystr() then
 +      ok=%f;
 +      messagebox(_('sorry C file name is not defined'),'modal','error');
 +      if atomicflag then return, end
      end
 -    rdnom = strsubst(rdnom,' ','_');
  
 -    //** Put a warning here in order to inform the user
 -    //** that the name of the superblock will change
 -    //** because the "-" char could generate GCC problems
 -    //** (the C functions contains the name of the superblock).
 -    if grep(rdnom,"-")<>[] then
 -      message(['For full C compiler compatibility ';
 -               'Superblock name cannot contains ""-"" characters';
 -               '""-"" chars will be automatically substituted by ""_"" '])
 -    end
 -    rdnom = strsubst(rdnom,'-','_');
 -
 -    dirinfo=fileinfo(rpat)
 -
 -    if dirinfo==[] then
 -      [pathrp,fnamerp,extensionrp]=fileparts(rpat)
 -      ok=mkdir(pathrp,fnamerp+extensionrp)
 -      if ~ok then 
 -        messagebox('Directory '+rpat+' cannot be created',"modal","info");
 +    if ok then
 +      //@@replace special character which may cause problem to the compiler
 +      if strindex(rdnom,[' ','-','.'])<>[] then
 +      new = strsubst(strsubst(strsubst(rdnom,' ','_'),'-','_'),'.','_');
 +        mess=msprintf(_(' Superblock name cannot contains space, ""."" and \n'+..
 +                      '""-"" characters. \n'+..
 +                      'The superblock will be renamed : %s'),new);
 +        okk=messagebox(mess,_('Scicos message'),'question',[_('Ok');_('Go Back')],'modal')
 +        if okk==1 then
 +          rdnom = new
 +          label1=[rdnom;label1(2);label1(3)];
 +        else
 +           ok=%f;
 +           if atomicflag then return, end
 +        end
 +      end 
 +    end
 +    
 +    if ok then
 +      //@@ 13/12/08,
 +      //@@ Check if rdnom already exists in the linked routine table
 +      if c_link(rdnom) & ~atomicflag then
 +        mess=msprintf(_('Warning. An entry point with name ""%s"" is already linked.\n'+..
 +                      'The new generated block may have another name or the \n'+..
 +                      'old entry point will be unlinked\n'),rdnom);
 +        okk=messagebox(mess,_('Scicos message'),'question',[_('Change block name');_('Force unlink')],'modal')
 +        if okk==1 then //"Change block name" selected
 +          ok=%f
 +        end
        end
 -    elseif filetype(dirinfo(2))<>'Directory' then
 -      ok=%f;
 -      messagebox(rpat+' is not a directory',"modal","error");
      end
 -
 -    if stripblanks(rdnom)==emptystr() then 
 -      ok=%f;
 -      messagebox('sorry C file name not defined',"modal","error");
 +    
 +    if ok then
 +      //@@ create destination directory
 +      [status,mess]=mkdir(rpat)
 +      
 +      if and(status<>[1 2]) then
 +      messagebox(mess,'error','modal');
 +      ok=%f
 +      if atomicflag then return, end
 +      end
      end
 -    if ok then break,end
 -  end
 +    
 +    if ok then    
 +      //@@ 13/12/08,
 +      //@@ add a test for %scicos_libs
 +      if MSDOS then
 +      target_lib = rpat+'\lib'+rdnom+'.dll'
 +      else
 +      target_lib =  rpat+'/lib'+rdnom+'.so'
 +      end
 +      ind = find(libs==target_lib)
 +      if ind<>[] then
 +      mess=msprintf(_(' Warning. You want to link an external library\n'+..
 +                      'which is the same than the target library.\n'+..
 +                      'That library can be here removed from the\n'+..
 +                      'list of external libraries (only for expert user).'))
 +      okk=message(mess,_('Scicos Message'),'question',[_('Change block name');_('Ok')],'modal')
 +      if okk==2 then
 +        new_libs=[]
 +        for i=1:size(libs,'*')
 +          if find(i==ind)==[] then
 +            new_libs=[new_libs,libs(i)]
 +          end
 +        end
 +        libs=new_libs
 +      else
 +        ok=%f;
 +        if atomicflag then return, end
 +      end
 +      end
 +    end
 +    if ok then break;end
 +  end //end of while loop
  
 -  //////////////////////////////////////////////////
 -  maxnrpar=max(rpptr(2:$)-rpptr(1:$-1))
 -  maxnipar=max(ipptr(2:$)-ipptr(1:$-1))
 -  maxnx=max(xptr(2:$)-xptr(1:$-1))
 -  maxnz=max(zptr(2:$)-zptr(1:$-1))
 -  maxnin=max(inpptr(2:$)-inpptr(1:$-1))
 -  maxnout=max(outptr(2:$)-outptr(1:$-1))
 -  maxdim=[];
 -  for i=1:lstsize(cpr.state.outtb)
 -    maxdim=max(size(cpr.state.outtb(i)))
 -  end
 -  maxtotal=max([maxnrpar;maxnipar;maxnx;maxnz;maxnin;maxnout;maxdim]);
  
 -  //************************************************************************
 -  //generate the call to the blocks and blocs simulation function prototypes
 -  //************************************************************************
 -  wfunclist=list();
 -  nbcap=0;nbact=0;capt=[];actt=[];Protostalone=[];Protos=[];
 +  //###################################################
 +  //generate blocs simulation function prototypes
 +  //and extract infos from ports for sensors/actuators
 +  //###################################################
 +
 +  nbcap=0;
 +  nbact=0;
 +  capt=[];
 +  actt=[];
 +  Protostalone=[];
 +  Protos=[];
    dfuns=[]
 +
 +  //## loop on number of blk
    for i=1:length(funs)
 -    if or(i==act) then //block is an actuator
 -      nbact=nbact+1;
 -      [Code,actti,protoi]=call_actuator(i)
 -      wfunclist($+1)=[Code;'if(flag < 0 ) return(5 - flag);']
 -      if nbact==1 then Protostalone=[Protostalone;'';protoi],end
 -      actt=[actt;actti]
 -    elseif or(i==cap) then //block is a sensor
 -      nbcap=nbcap+1;
 -      [Code,capti,protoi]=call_sensor(i)
 -      wfunclist($+1)=[Code;'if(flag < 0 ) return(5 - flag);']
 -      if nbcap==1 then Protostalone=[Protostalone;'';protoi] ,end
 -      capt=[capt;capti]
 -    elseif funs(i)=='bidon'
 -      wfunclist($+1)=' '
 -    elseif funs(i)=='bidon2'
 -      wfunclist($+1)=' '
 -    else
 -      ki=find(funs(i)==dfuns)
 -      dfuns=[dfuns;funs(i)]
 -      //[Code,protoi]=call_block(i)
 -      [Code]=call_block4(i)
 -      if Code<>[] then
 -        wfunclist($+1)=[Code;'if(flag < 0 ) return(5 - flag);']
 +    //## block is a sensor
 +    if or(i==cap) then
 +      nbcap = nbcap+1;
 +      //## number of output ports
 +      nout=outptr(i+1)-outptr(i);
 +      if nout==0 then
 +         //yk    = 0;
 +         //nyk_1 = 0;
 +         //nyk_2 = 0;
 +         //yk_t  = 1;
 +         disp('nout=0 pour un capteur');pause
 +      else
 +         yk    = outlnk(outptr(i));
 +         nyk_1 = size(outtb(yk),1);
 +         nyk_2 = size(outtb(yk),2);
 +         yk_t  = mat2scs_c_nb(outtb(yk));
 +      end
 +      capt=[capt;
 +            i yk nyk_1 nyk_2 yk_t bllst(i).ipar]
 +
 +      //## only one proto for sensor
 +      if nbcap==1 then
 +        Protostalone=[Protostalone;
 +                      '';
 +                      'void '+rdnom+'_sensor(int *, int *, int *, double *, void *, \';
 +                      get_blank(rdnom)+'             int *, int *, int *, int, void *);']
 +      end
 +
 +    //## block is an actuator
 +    elseif or(i==act) then
 +      nbact = nbact+1;
 +      //## number of input ports
 +      nin=inpptr(i+1)-inpptr(i);
 +      if nin==0 then
 +        //uk    = 0;
 +        //nuk_1 = 0;
 +        //nuk_2 = 0;
 +        //uk_t  = 1;
 +        disp('nin=0 pour un actionneur');pause
        else
 -        wfunclist($+1)=' ';
 +        uk    = inplnk(inpptr(i));
 +        nuk_1 = size(outtb(uk),1);
 +        nuk_2 = size(outtb(uk),2);
 +        uk_t  = mat2scs_c_nb(outtb(uk));
 +      end
 +      actt=[actt;
 +            i uk nuk_1 nuk_2 uk_t bllst(i).ipar]
 +
 +      //## only one proto for actuator
 +      if nbact==1 then
 +        Protostalone=[Protostalone;
 +                      ''
 +                      'void '+rdnom+'_actuator(int *, int *, int *, double *, void *, \';
 +                      get_blank(rdnom)+'               int *, int *, int *, int, void *);']
        end
 -      if ki==[] then
 -        Protos=[Protos;'';BlockProto(i)];
 -        Protostalone=[Protostalone;'';BlockProto(i)];
 +
 +    //## all other types of blocks excepts evt sensors and evt actuators
 +    else
 +      if funs(i)<>'bidon' & funs(i)<>'bidon2' then
 +        ki=find(funs(i)==dfuns)
 +        dfuns=[dfuns;funs(i)]
 +        if ki==[] then
 +          Protos=[Protos;'';BlockProto(i)];
 +          Protostalone=[Protostalone;'';BlockProto(i)];
 +        end
        end
      end
    end
@@@ -50,101 -48,752 +50,101 @@@ function ok = buildnewblock(blknam,file
  //
  // Output :  ok : a flag to say if build is ok
  //
 -
 -  //** check rhs paramaters
 +//* 29/06/2009: Serge Steer, use of standard ilib_for_link and
 +//  tbx_build_gateway instead of specific codes
 +  
 +//** check rhs paramaters
    [lhs,rhs] = argn(0);
  
 +  //The tests below are unuseful (buildnewblock is always called with 8 args
    if rhs <= 1 then files    = blknam, end
    if rhs <= 2 then filestan = '', end
 -  if rhs <= 3 then libs     = '', end
 -  if rhs <= 4 then rpat     = TMPDIR, end
 -  if rhs <= 5 then ldflags  = '', end
 -  if rhs <= 6 then cflags   = '', end
 -
 -  
 -  if MSDOS then
 -    //**------------ Windows ----------------------------------------------
 -    //** on Windows we keep the old way : "hard coded" makefile (.mak)
 -
 -    //** Try to open a file 
 -    [fd,ierr] = mopen(rpat+'/'+blknam+'f.f','r') 
 -  
 -    if ierr==0 then
 -      mclose(fd); 
 -      files = [files,blknam+'f']
 -    end
 -
 -    //** adjust path and name of object files
 -    //** to include in the building process
 -    if (libs ~= emptystr()) then
 -      libs = pathconvert(libs,%f,%t)
 -    end
 -
 -    //** def make file name
 -    Makename = rpat+'/'+blknam+'_Makefile';
 -
 -    //** otherlibs treatment
 -    [ok, libs, for_link] = link_olibs(libs,rpat)
 -    if ~ok then
 -      ok = %f;
 -      message(["Sorry compiling problem";lasterror()]);
 -      return;
 -    end
 -
 -    //** generate txt of makefile and get right name
 -    //** of the Makefile file
 -    [Makename2, txt] = gen_make(blknam,files,filestan,libs,Makename,ldflags,cflags);
 -
 -    //** write text of the Makefile in the file called Makename
 -    ierr = execstr("mputl(txt,Makename2)",'errcatch')
 -    if ierr<>0 then
 -      message(["Can''t write "+Makename2;lasterror()])
 -      ok = %f
 -      return
 -    end
 -
 -    //** unlink if necessary
 -    [a,b] = c_link(blknam);
 -    while a
 -      ulink(b);
 -      [a,b]=c_link(blknam);
 -    end
 -
 -    //** save path in case of error in ilib_compile
 -    oldpath=pwd();
 -
 -    //** compile Makefile
 -    ierr=execstr('libn=ilib_compile(''lib''+blknam,Makename)','errcatch')
 -    if ierr<>0 then
 -      ok = %f;
 -      chdir(oldpath);
 -      message(["sorry compiling problem";lasterror()]);
 -      return;
 -    end
 -
 -    //** link scicos generated code in scilab
 -    libn = pathconvert(libn,%f,%t)
 -    ierr = execstr('libnumber=link(libn)','errcatch')
 -    ierr = execstr('link(libnumber,blknam,''c'')','errcatch')
 -    if ierr<>0 then
 -      ok = %f;
 -      message(["sorry link problem";lasterror()]);
 -      return;
 -    end
 -
 -    //** generate text of the loader file
 -    [txt] = gen_loader(blknam,for_link)
 +  if rhs <= 3 then filesint = '', end 
 +  if rhs <= 4 then libs     = '', end
 +  if rhs <= 5 then rpat     = TMPDIR, end
 +  if rhs <= 6 then ldflags  = '', end
 +  if rhs <= 7 then cflags   = '', end
  
 -    //** write text of the loader in file
 -    ierr = execstr('mputl(txt,rpat+''/''+blknam+''_loader.sce'')','errcatch')
 -    if ierr<>0 then
 -      message(["Can''t write "+blknam+"_loader.sce";lasterror()])
 -      ok = %f ;
 -      return
 -    end
 -  
 -  else
 -    //**------------ Linux / Unix  -------------------------------------------
 -    //** on Linux Scilab 5 uses an "autotools" based mechanism
 -
 -    //** the input parameters are : "blknam", "files", "filestan", "libs", "rpat", "ldflags", cflags
 -    //** "blknam" : a prefix (the name 
 -    //** "files" : files to be compiled
 -    //** "filestan" : files to be compiled and included in the standalone code
 -    //** "libs" : a vector of string of object files "exteral lib(s)" to include in the building process
 -    //** "rpat" : a target directory
 -    //** "ldflags"  : linker flags
 -    //** "cflags"  : C compiler flags
 -
 -    //** save path in case of error
 -    oldpath = pwd(); //** current working path 
 -
 -    //** For this revision (22/03/2008) Scicos Super Block and Modelica are handled in a slight different 
 -    //** ways, so the code is splitted in two branches. 
 -    //** We plan to remove these differences - in a second phase - modifing the upper levels routines. 
 -     
 -    //** the switch is done looking inside at "filestan" : it is empty for Modelica ;) 
 -    //** BEWARE: "ilib_for_link" does NOT provide support for "standalone" applications !
 -
 -    if filestan=="" then
 -      //** --------------------------- MODELICA ---------------------------------------
 -      //** Special note for Modelica : this code override some settings 
 -      //**
 -      // 
 -       //** change dir to the TEMPDIR  
 -       chdir(TMPDIR);
 -
 -       entry_names = blknam ;
 -       file_names = files + ".c"  ; //** the new ilib_for_link accept .c extension 
 -       libs = libs ;
 -       flag = "c" ; //** "C" entry point / "C" source code  
 -       makename = "Makelib" ;
 -       loadername = "loader.sce" ;
 -       libname = "";
 -       ldflags = ldflags ;
 -       //** BEWARE: default directory for source and binary versions are different ! 
 -       //** if this dir exist means that someone has installed a Scilab binary version 
 -       if isdir(SCI+"/../../include/scilab/scicos_blocks/") then
 -          //** Binary version
 -        cflags = "-I"+SCI+"/../../include/scilab/scicos_blocks/"; //** look for standard Scicos include 
 -       else     
 -          //** it is a source version 
 -          cflags = "-I"+SCI+"/modules/scicos_blocks/includes/"; //** look for standard Scicos include
 -       end
 -
 -       fflags = ""; //** no additional Fortran flags 
 -       cc = "";     //** default "C" compiler 
 -  
 -       disp("Compile and link Modelica generated C code"); 
 -
 -       libn = ilib_for_link(entry_names, file_names, libs, flag, makename, loadername, libname, ldflags, cflags, fflags, cc); 
  
 -       exec("loader.sce"); //** load the shared library 
 +  //## define a variable to know if with use
 +  //## a scilab interfacing function for the standalone
 +  with_int = %f;
  
 -    else
 -     //** -------------- Scicos Super Block Compilation ---------------------------------------
 -     //** 
 -       //** change dir to the TEMPDIR  
 -       chdir(TMPDIR);
 - 
 -       //** Copy all the source generated file in the TMPDIR because 
 -       //** TMPDIR is the "ilib_for_link" default 
 -       cmd_line = "cp "+rpat+"/*"+" "+"." ;
 -       unix(cmd_line); 
 -
 -       //** prepare the parameters 
 -       //** BEWARE : some settings are "hard coded" 
 -
 -       entry_names = [files(1), files(1)+"_actuator", files(1)+"_sensor"]; 
 -       
 -       file_names = files + ".c"  ;
 -       libs = libs ;
 -       flag = "c" ; //** "C" entry point / "C" source code  
 -       makename = "Makelib" ;
 -       loadername = "loader.sce" ;
 -       libname = "";
 -       ldflags = ldflags ;
 -       //** BEWARE: default directory for source and binary versions are different ! 
 -       //** if this dir exist means that someone has installed a binary version 
 -       if isdir(SCI+"/../../include/scilab/scicos_blocks/") then
 -          //** Binary version
 -          //** NB you must add "/../../" because the default path is "<scilab>/share/scilab/" so you need
 -          //**    to remount two positions :) 
 -            //** disp(".bin");
 -          cflags = "-I"+SCI+"/../../include/scilab/scicos_blocks/"+"  "+..
 -                   "-I"+SCI+"/../../include/scilab/dynamic_link/"+"  "+..
 -                   "-I"+SCI+"/../../include/scilab/scicos/"; 
 -       else     
 -          //** it is a source version 
 -          //** disp(".source");
 -          cflags = "-I"+SCI+"/modules/scicos_blocks/includes/"+"  "+..
 -                   "-I"+SCI+"/modules/dynamic_link/includes/"+"  "+..
 -                   "-I"+SCI+"/modules/scicos/includes/"; 
 -       end
 -
 -       fflags = ""; //** no additional Fortran flags 
 -       cc = "";     //** default "C" compiler 
 -    
 -      message(["BEWARE: if you want to reload this simulation,", ...
 -               "you need to MANUALLY reload - for each Compiled Super Block - ",...
 -               "the shared library using ''exec loader.sce'' AND",...
 -               "the interfacing function ''*.sci''              ",...
 -               "in the corresponding directory ", ...
 -               "   _BEFORE_ ",...
 -               "running ''scicos();'' "]);  
 -
 -      disp("Compile and link Scicos generated C code"); 
 +  //** adjust path and name of object files
 +  //   to include in the building process
 +  if (libs ~= emptystr())&libs ~= [] then
 +    libs=pathconvert(libs,%f,%t)
  
 -       libn = ilib_for_link(entry_names, file_names, libs, flag, makename, loadername, libname, ldflags, cflags, fflags, cc); 
 -     
 -      //** This is just a patch because "ilib_for_link" has some issues outside "TMPDIR"
 -      //** copy the shared library and the loader where the Scicos code generated is 
 -      //** 
 -      //** change dir to the permanent directory   
 -      chdir(rpat);
 -
 -      cmd_line = "cp "+TMPDIR+"/"+"lib"+files(1)+".*"+" "+"." ;
 -      unix(cmd_line); 
 +  end
 +  //** otherlibs treatment 
 +  [ok,libs,for_link]=link_olibs(libs,rpat)
 +  if ~ok then return,end
    
 -      cmd_line = "cp "+TMPDIR+"/"+"loader.sce"+" "+"." ;
 -      unix(cmd_line);
 -      
 -      exec("loader.sce"); //** load the shared library 
 -
 -      //**--------------------------------------------------------------------- 
   
 -  end 
 -
 -
 -  chdir(oldpath); //** restore the old current working directory 
 -  
 -  end 
 -
 -endfunction
 -//**------------------------------------------------------------------------------------------------
 -
 -//** convpathforwin : convert path that only include
 -//                    a single '\' in a '\\'
 -//
 -// Input : path : the path name to be converted
 -//                a single string.
 -//
 -// Output : txt : the path converted
 -//                a single string.
 -//
 -// Author : Alan Layec, 30 Juin 2007
 -//
 -function txt = convpathforwin(path)
 -  txt=''
 -  for j=1:length(path)
 -    if part(path,j)=='\' then
 -      if j==1 then
 -        if part(path,j+1)<>'\' then
 -          txt=txt+'\';
 -        end
 -      elseif j==length(path) then
 -        if part(path,j-1)<>'\' then
 -          txt=txt+'\';
 -        end
 -      else
 -        if part(path,j-1)<>'\' & part(path,j+1)<>'\' then
 -          txt=txt+'\';
 -        end
 -      end
 -    end
 -    txt=txt+part(path,j);
 -  end
 -endfunction
 -//**------------------------------------------------------------------------------------------
 -
 -//** exportlibforlcc : export a lcc.lib file from
 -//                     an existing dll
 -//
 -// Input : libs  : a single string containing path+name
 -//                 of the (dll) library
 -//                 for export a lcc.lib file
 -//
 -//         rpat  : a target directory for temporary generated files
 -//
 -// Output : ok : a boolean variable to say if job has succed
 -//
 -// Rmk : the lcc.lib file is generated close to the dll file,
 -//       in the same directory (<> rpat if it is not informed)
 -//
 -// Author : Alan Layec, 1 Jul 2007
 -//
 -function [ok] = exportlibforlcc(libs,rpat)
 -
 -  //** get lhs,rhs nb paramaters
 -  [lhs,rhs]=argn(0);
 -
 -  //** extract path, name and extension of libs
 -  [path,fname,extension]=fileparts(libs);
 -
 -  //** convert path of libs if needed
 -  Elibs=convpathforwin(libs)
 -
 -  //** check rhs paramaters
 -  if rhs <= 1 then
 -    rpat = path
 -    [Erpat,fname,extension]=fileparts(Elibs);
 -  else
 -    //** convert path of rpat if needed
 -    Erpat=convpathforwin(rpat)
 -  end
 -
 -  //** run pedumd to extract info from dll file
 -  //** .lcc file is generated in rpat directory
 -  ierr=execstr('unix(''pedump /exp """"''+..
 -               Elibs+''.dll"""" >""""''+..
 -               Erpat+''\''+fname+''.lcc""""'')','errcatch');
 -
 +  //** Building the dynamic library for the generated block simulation function
 +  //** save path 
-   oldpath = getcwd();
++  oldpath = pwd();
 +  chdir(rpat)
 +  cflags = strcat("-I"+scicos_include_paths(),' ')+' '+cflags
 +  mprintf(_('Creating dynamic lib for the block simulation function.\n'))
 +  instr = 'ilib_for_link(blknam,files,libs,''c'',''Makefile'',''loader.sce'',blknam,ldflags,cflags)'
 +  ierr = execstr(instr,'errcatch');
 +  chdir(oldpath);
    if ierr<>0 then
 -    ok=%f
 -    //add a message here please
 -    return
 -  end
 -
 -  //** generate an .exp file for buildlib of lcc
 -  //** .exp file is generated in rpat directory
 -  fw=mopen(rpat+'\'+fname+'.exp',"w");
 -  fr=mopen(rpat+'\'+fname+'.lcc',"r");
 -  if (meof(fr) == 0) then
 -    line=mfscanf(1,fr,"%s");
 -    mfprintf(fw,"%s\n",line);
 -   //printf('.');
 +    messagebox([_('Sorry problem encountered\n'+..
 +             '   when trying to build the block simulation function\n'+..
 +             '   dynamic library\n\n');
 +           lasterror()],"modal","error")
 +    return;
    end
 -  while ( meof(fr) == 0)
 -    line=mfscanf(1,fr,"%s");
 -    if (line ~= []) then
 -      mfprintf(fw,"_%s\n",line);
 -    end
 -  end
 -  mclose(fw);
 -  mclose(fr);
 -
 -  //** run buildlib and then generate lcc.lib file
 -  //** .exp is read from rpat
 -  //** lcc.lib is generated in path (of the dll file)
 -  command='buildLib ""'+Erpat+'\'+fname+'.exp""'+...
 -          ' ""'+Elibs+'lcc.lib""'+' ""'+Elibs+'.dll""';
 -  ierr=execstr('unix(command)','errcatch')
 -  if ierr<>0 then
 -    ok=%f
 -    //add a message here please
 -    return
 -  end
 -
 -endfunction
 -//**-----------------------------------------------------------------------------------
 -
 -//** gen_loader : generates the Scilab script for defining the
 -//                newly created block into Scilab.
 -//
 -// input : blknam    : the name of the block to compile
 -//
 -// output : SCode : the text of the loader file
 -//
 -// Authors : Rachid Djenidi
 -//           Alan Layec, 28 Juin 2007
 -//                 "cosmetic comments" (looks like
 -//                                      Simone's comments)
 -//                 change calling sequence of gen_loader
 -//                 rewritte
 -//
 -function SCode=gen_loader(blknam,for_link)
 -
 -  //** check rhs paramaters
 -  [lhs,rhs]=argn(0);
 -
 -  if rhs <= 1 then for_link=[], end
 -
 -  SCode=['//** Exec file used to load the ""compiled"" block into Scilab'
 -         'blknam='+sci2exp(blknam)+';';
 -         '//** Get the absolute path of this loader file'
 -         'DIR=get_absolute_file_path(blknam+''_loader.sce'');'
 -         '//** Define Makefile name'
 -         'Makename = DIR+blknam+''_Makefile'';'
 -         '//** Unlink if necessary'
 -         '[a,b]=c_link(blknam);'
 -         'while a'
 -         '  ulink(b);'
 -         '  [a,b]=c_link(blknam);'
 -         'end';
 -         '//** Run Makefile'
 -         'libn=ilib_compile('+sci2exp('lib'+blknam)+',Makename);'
 -         '//** Adjust path name of object files'
 -         'if MSDOS then'
 -         '  fileso=strsubst(libn,''/'',''\'');'
 -         'else'
 -         '  fileso=strsubst(libn,''\'',''/'');'
 -         'end';]
 -
 -  if for_link<>[] then
 -    SCode=[SCode
 -           '//** Link otherlibs'
 -           for_link]
 +  //** rename the loader file
 +  txt=strsubst(mgetl(rpat+'/loader.sce'),'loader.sce','block_loader.sce')
 +  mputl(txt,rpat+'/block_loader.sce')
 +  
 +  //** unlink if necessary (it is now  done in the loader)
 +  if %f then
 +  [a,b]=c_link(blknam);
 +  while a
 +    ulink(b);
 +    [a,b]=c_link(blknam);
    end
 -
 -  SCode=[SCode
 -         ''
 -         '//** Link block routine in scilab'
 -         'link(fileso,blknam,''c'');'
 -         '//** Load the gui function';
 -         'if fileinfo(DIR+blknam+''_c.sci'')<>[] then'
 -         '  exec(DIR+blknam+''_c.sci'');'
 -         'end']
 -
 -  SCode=[SCode;
 -         'clear blknam'
 -         'clear Makename'
 -         'clear DIR'
 -         'clear fileso'
 -         'clear libn'
 -         '']
 -
 -endfunction
 -//**-------------------------------------------------------------------------------------
 -
 -//** gen_make_lccwin32 : generate text of the Makefile
 -//              for scicos code generator for
 -//              lccwin32 compiler
 -//
 -// Input : blknam     : name of the library
 -//         files    : files to be compiled
 -//         filestan : files to be compiled and included in
 -//                    the standalone code
 -//         libs     :  a vector of object files
 -//                    to include in the building process
 -//
 -// Output : T : the text of the makefile
 -//
 -// Alan Layec, 29 Juin 2007
 -// Alan , 29 Juin 2007, common for generation of Scicos
 -//                      blocks and THE modelica Scicos block
 -//
 -function T=gen_make_lccwin32(blknam,files,filestan,libs,ldflags,cflags)
 -
 -  WSCI=strsubst(SCI,'/','\')
 -
 -  T=["# generated by builder.sce: Please do not edit this file"
 -     "# ------------------------------------------------------"
 -     "SCIDIR            = "+SCI
 -     "SCIDIR1           = "+WSCI
 -     "DUMPEXTS          = """+WSCI+"\bin\dumpexts"""
 -     "SCIIMPLIB         = """+SCIHOME+"\lcclib\LibScilab.lib"""
 -     "SCILIBS           = """+SCIHOME+"\lcclib\LibScilab.lib"""
 -     "SCICOSCLIB        = """+SCIHOME+"\lcclib\scicos.lib"""
 -     "SCICOSFLIB        = """+SCIHOME+"\lcclib\scicos_f.lib"""
 -     "SCICOS_BLOCKSCLIB = """+SCIHOME+"\lcclib\scicos_blocks.lib"""
 -     "SCICOS_BLOCKSFLIB = """+SCIHOME+"\lcclib\scicos_blocks_f.lib"""
 -     "LIBRARY      = lib"+blknam
 -     "CC           = lcc"
 -     "LINKER       = lcclnk"
 -     "OTHERLIBS    = "+libs
 -     "LINKER_FLAGS = -dll -nounderscores"
 -     "INCLUDES     = -I"""+WSCI+"\libs\f2c""" 
 -     "CC_COMMON    = -DWIN32 -DSTRICT -DFORDLL -D__STDC__ $(INCLUDES)"
 -     "CC_OPTIONS   = $(CC_COMMON)"
 -     "CFLAGS       = $(CC_OPTIONS) -I"""+WSCI+"\modules\core\includes"" " + .. 
 -                     "-I"""+WSCI+"\modules\scicos\includes"" " + ..
 -                     "-I"""+WSCI+"\modules\scicos_blocks\includes"" " + ..
 -                     "-I"""+WSCI+"\modules\dynamic_link\includes"" " + cflags
 -     "FFLAGS       = $(FC_OPTIONS) -I"""+WSCI+"\modules\core\includes"" " + ..
 -                     "-I"""+WSCI+"\modules\scicos\includes"" " + ..
 -                     "-I"""+WSCI+"\modules\dynamic_link\includes"" " + ..
 -                     "-I"""+WSCI+"\modules\scicos_blocks\includes"" "
 -     ""
 -     "OBJS         = "+strcat(files+'.obj',' ')]
 -
 -  if filestan<>'' then
 -    T=[T;
 -       "OBJSSTAN     = "+strcat(filestan+'.obj',' ')]
    end
 -
 -  T=[T;
 -     ""
 -     "all :: $(LIBRARY).dll"
 -     ""
 -     "$(LIBRARY).dll: $(OBJS)"
 -     ascii(9)+"@echo Creation of dll $(LIBRARY).dll and import lib from ..."
 -     ascii(9)+"@echo $(OBJS)"
 -     ascii(9)+"@$(DUMPEXTS) -o ""$(LIBRARY).def"" ""$*"" $(OBJS)"
 -     ascii(9)+"@$(LINKER) $(LINKER_FLAGS) $(OBJS) $(SCIIMPLIB) $(OTHERLIBS) "+ ..
 -              " $(SCICOSCLIB) $(SCICOSFLIB) $(SCICOS_BLOCKSCLIB) $(SCICOS_BLOCKSFLIB) " + ..
 -              " $(SCILAB_LIBS) $*.def -o "+ ..
 -              " $(LIBRARY).dll"
 -     ".c.obj:"
 -     ascii(9)+"@echo ------------- Compile file $< --------------"
 -     ascii(9)+"$(CC) $(CFLAGS) $< "
 -     ".f.obj:"
 -     ascii(9)+"@echo ----------- Compile file $*.f (using f2c) -------------"
 -     ascii(9)+"@"""+WSCI+"\bin\f2c.exe"" $(FFLAGS) $*.f "
 -     ascii(9)+"@$(CC) $(CFLAGS) $*.c "
 -     ascii(9)+"@del $*.c "
 -     "clean::"
 -     ascii(9)+"@del *.CKP"
 -     ascii(9)+"@del *.ln"
 -     ascii(9)+"@del *.BAK"
 -     ascii(9)+"@del *.bak"
 -     ascii(9)+"@del *.def"
 -     ascii(9)+"@del *.dll"
 -     ascii(9)+"@del *.exp"
 -     ascii(9)+"@del *.lib"
 -     ascii(9)+"@del errs"
 -     ascii(9)+"@del *~"
 -     ascii(9)+"@del *.obj"
 -     ascii(9)+"@del .emacs_*"
 -     ascii(9)+"@del tags"
 -     ascii(9)+"@del TAGS"
 -     ascii(9)+"@del make.log "
 -     ""
 -     "distclean:: clean "
 -     ""]
 -
 -  if filestan<>'' then
 -    T=[T;
 -       "standalone: $(OBJSSTAN) "
 -        ascii(9)+"$(LINKER) $(LINKER_FLAGS) $(OBJSSTAN)"+...
 -                 "$(OTHERLIBS) $(SCILIBS) "+ .. 
 -                 "$(SCICOSCLIB) $(SCICOSFLIB) $(SCICOS_BLOCKSCLIB) $(SCICOS_BLOCKSFLIB) " + ..
 -                 "/out:standalone.exe "];
 +  //** Loading the dynamic library for the generated block simulation function
 +  try
 +  mprintf(_('Loading dynamic lib for block simulation function.\n'));
 +  if execstr('exec(rpat+''/block_loader.sce'',-1)','errcatch')<>0 then
 +    ok=%f;
 +    messagebox([_('sorry problem encountered\n'+..
 +             '   when trying to load the block simulation function\n'+..
 +             '   dynamic library\n\n');
 +           lasterror()],"modal","error");
 +    return;
    end
 -endfunction
 -//**----------------------------------------------------------------------------------------------------
 -
 -//** gen_make : generate text of the Makefile
 -//              for scicos code generator
 -//              That's a wrapper for
 -//                 gen_make_lccwin32
 -//                 gen_make_msvc
 -//                 gen_make_unix
 -//
 -// Input : blknam   : name of the Scicos block to compile
 -//         files    : files to be compiled
 -//         filestan : files to be compiled and included in
 -//                    the standalone code
 -//         libs     :  a vector of object files
 -//                    to include in the building process
 -//         Makename : the name of Makefile file
 -//         ldflags  : linker flags
 -//         cflags   : C compiler flags
 -//
 -// Output : Makename : the name of Makefile file (modified
 -//                     for the case of win32)
 -//
 -//          txt      : the text of the Makefile
 -//
 -// Alan Layec, 28 Juin 2007
 -//
 -function [Makename,txt]=gen_make(blknam,files,filestan,libs,Makename,ldflags,cflags)
 -
 -  //** check rhs paramaters
 -  [lhs,rhs]=argn(0);
  
 -  if rhs <= 1 then files    = blknam, end
 -  if rhs <= 2 then filestan = '', end
 -  if rhs <= 3 then libs     = '', end
 -  if rhs <= 4 then Makename = blknam+'_Makefile', end
 -  if rhs <= 5 then ldflags  = '', end
 -  if rhs <= 6 then cflags   = '', end
 -
 -  //** generate Makefile for LCC compilator
 - 
 -   if MSDOS then
 -     if findmsvccompiler() <> 'unknown' then 
 -       txt=gen_make_msvc(blknam,files,filestan,libs,ldflags,cflags);
 -       Makename = strsubst(Makename,'/','\')+'.mak';
 -     else
 -       if findlcccompiler() <> %F then 
 -         txt=gen_make_lccwin32(blknam,files,filestan,libs,ldflags,cflags);
 -         Makename = strsubst(Makename,'/','\')+'.lcc';
 -       end
 +  
 +  if filesint<>'' then
 +     //## generate interfacing function of the standalone simulator and it's
 +     //building an loading tools
 +     blknamint=filesint(3) //see filesint definition in CodeGeneration_.sci
 +     mprintf('Creating dynamic lib for standalone simulator gateway\n')
 +     files=unique([files filesint])
 +     instr='tbx_build_gateway(blknamint,[blknam,blknamint],files,rpat,[],ldflags,cflags)'
 +
 +     ierr = execstr(instr,'errcatch');
 +     if ierr<>0 then
 +       messagebox([_('sorry problem encountered\n'+..
 +                '   when trying to build the standalone simulator gateway\n'+..
 +                '   dynamic library\n\n');
 +              lasterror()],"modal","error");
 +       return;
       end
 -   else
 -      txt=gen_make_unix(blknam,files,filestan,libs,ldflags,cflags);
 -   end
 -    
 -endfunction
 -//**---------------------------------------------------------------------------------------------
 -
 -
 -//** gen_make_unix : generate text of the Makefile
 -//              for scicos code generator for cc/gcc
 -//              unix compiler
 -//
 -// Input : blknam     : name of the library
 -//         files    : files to be compiled
 -//         filestan : files to be compiled and included in
 -//                    the standalone code
 -//         libs     : a vector of object files
 -//                    to include in the building process
 -//
 -// Output : T : the text of the makefile
 -//
 -// Alan Layec, 28 Juin 2007
 -// Alan , 29 Juin 2007, common for generation of Scicos
 -//                      blocks and THE modelica Scicos block
 -//
 -function T=gen_make_unix(blknam,files,filestan,libs,ldflags,cflags)
 -
 -  T=["# generated by builder.sce: Please do not edit this file"
 -     "# ------------------------------------------------------"
 -     "SCIDIR       = "+SCI
 -     "SCILIBS      = $(SCIDIR)/libs/scicos.a $(SCIDIR)/libs/lapack.a "+..
 -       "$(SCIDIR)/libs/poly.a $(SCIDIR)/libs/calelm.a "+..
 -       "$(SCIDIR)/libs/blas.a $(SCIDIR)/libs/lapack.a $(SCIDIR)/libs/os_specific.a"
 -     "LIBRARY      =  lib"+blknam
 -     "OTHERLIBS    = "+libs
 -     ""
 -     "OBJS         = "+strcat(files+'.o',' ')]
 -
 -  if filestan<>'' then
 -    T=[T;
 -       "OBJSSTAN     = "+strcat(filestan+'.o',' ')]
 -  end
 -
 -  T=[T;
 -     "include $(SCIDIR)/Makefile.incl";
 -     "CFLAGS    = $(CC_OPTIONS) -I$(SCIDIR)/routines/ "+cflags
 -     "FFLAGS    = $(FC_OPTIONS) -I$(SCIDIR)/routines/"
 -     "include $(SCIDIR)/config/Makeso.incl"]
 +     //** rename the loader file
 +     txt=strsubst(mgetl(rpat+'/loader.sce'),'loader.sce','standalone_loader.sce')
 +     mputl(txt,rpat+'/standalone_loader.sce')
  
 -  if filestan<>'' then
 -    T=[T;
 -       "standalone: $(OBJSSTAN) "
 -        ascii(9)+"f77 $(FFLAGS) -o $@  $(OBJSSTAN) $(OTHERLIBS) $(SCILIBS)"]
 -  end
 -
 -endfunction
 -//**--------------------------------------------------------------------------------------------
 -
 -//** gen_make_msvc : generate text of the Makefile
 -//              for scicos code generator for
 -//              Ms VS compilers
 -//
 -// Input : blknam     : name of the library
 -//         files    : files to be compiled
 -//         filestan : files to be compiled and included in
 -//                    the standalone code
 -//         libs     :  a vector of object files
 -//                    to include in the building process
 -//
 -// Output : T : the text of the makefile
 -//
 -// Alan Layec, 28 Juin 2007
 -// Alan , 29 Juin 2007, common for generation of Scicos
 -//                      blocks and THE modelica Scicos block
 -//
 -// Allan CORNET, Juillet 2008, DIGITEO
 -// support build on x64 plateforms with VS
 -function T=gen_make_msvc(blknam,files,filestan,libs,ldflags,cflags)
 -
 -  WSCI=strsubst(SCI,'/','\');
 -  if win64() then
 -    LINKER_FLAGS_MACHINE =  "/NOLOGO /machine:x64";
 -    CC_COMMON = "-D__MSC__ -DWIN32 -c -DSTRICT -nologo $(INCLUDES)";
 -    CC_OPTIONS = "$(CC_COMMON) -Od -Gd -W3";
 -  else
 -    LINKER_FLAGS_MACHINE =  "/NOLOGO /machine:ix86";
 -    CC_COMMON = "-D__MSC__ -DWIN32 -c -DSTRICT -nologo $(INCLUDES)";
 -    CC_OPTIONS = "$(CC_COMMON) -Od  -GB -Gd -W3";
    end
 +  //## if succes then with_int becomes true
 +  with_int=%t;
    
 -
 -  T=["# generated by builder.sce: Please do not edit this file"
 -     "# ------------------------------------------------------"
 -     "SCIDIR       = "+SCI
 -     "SCIDIR1      = "+WSCI
 -     "DUMPEXTS     = """+WSCI+"/bin/dumpexts"""
 -     "SCIIMPLIB    = """+WSCI+"/bin/LibScilab.lib"""
 -     "SCILIBS      = """+WSCI+"/bin/LibScilab.lib"""
 -     "SCICOSCLIB      = """+WSCI+"/bin/scicos.lib"""
 -     "SCICOSFLIB      = """+WSCI+"/bin/scicos_f.lib"""
 -     "SCICOS_BLOCKSCLIB      = """+WSCI+"/bin/scicos_blocks.lib"""
 -     "SCICOS_BLOCKSFLIB      = """+WSCI+"/bin/scicos_blocks_f.lib"""
 -     "LIBRARY      = lib"+blknam
 -     "CC           = cl"
 -     "LINKER       = link"
 -     "OTHERLIBS    = "+libs
 -     "LINKER_FLAGS = "+LINKER_FLAGS_MACHINE
 -     "INCLUDES     = -I"""+WSCI+"/libs/f2c"""
 -     "CC_COMMON    = "+CC_COMMON
 -     "CC_OPTIONS   = "+CC_OPTIONS
 -     "CFLAGS       = $(CC_OPTIONS) -I"""+WSCI+"/modules/core/includes"" " + .. 
 -                     "-I"""+WSCI+"/modules/scicos/includes"" " + ..
 -                     "-I"""+WSCI+"/modules/scicos_blocks/includes"" " + ..
 -                     "-I"""+WSCI+"/modules/dynamic_link/includes"" " + cflags
 -                     
 -                     
 -     "FFLAGS       = $(FC_OPTIONS) -I"""+WSCI+"/modules/core/includes"" " + ..
 -                     "-I"""+WSCI+"/modules/scicos/includes"" " + ..
 -                     "-I"""+WSCI+"/modules/dynamic_link/includes"" " + ..
 -                     "-I"""+WSCI+"/modules/scicos_blocks/includes"" "
 -     ""
 -     "OBJS         = "+strcat(files+'.obj',' ')]
 -
 -  if filestan<>'' then
 -    T=[T;
 -       "OBJSSTAN     = "+strcat(filestan+'.obj',' ')]
    end
 -
 -  T=[T;
 -     ""
 -     "all :: $(LIBRARY).dll"
 -     ""
 -     "$(LIBRARY).dll: $(OBJS)"
 -     ascii(9)+"@echo Creation of dll $(LIBRARY).dll and import lib from ..."
 -     ascii(9)+"@echo $(OBJS)"
 -     ascii(9)+"@$(DUMPEXTS) -o ""$*.def"" ""$*.dll"" $**"
 -     ascii(9)+"@$(LINKER) $(LINKER_FLAGS) $(OBJS) $(SCIIMPLIB) " + .. 
 -              "$(SCICOSCLIB) $(SCICOSFLIB) $(SCICOS_BLOCKSCLIB) $(SCICOS_BLOCKSFLIB) $(OTHERLIBS) "+ ..
 -              "$(SCILAB_LIBS) /nologo /dll /out:""$*.dll"""+...
 -              " /implib:""$*.lib"" /def:""$*.def"""
 -     ".c.obj:"
 -     ascii(9)+"@echo ------------- Compile file $< --------------"
 -     ascii(9)+"$(CC) $(CFLAGS) $< "
 -     ".f.obj:"
 -     ascii(9)+"@echo ----------- Compile file $*.f (using f2c) -------------"
 -     ascii(9)+"@"""+WSCI+"/bin/f2c.exe"" $(FFLAGS) $*.f "
 -     ascii(9)+"@$(CC) $(CFLAGS) $*.c "
 -     ascii(9)+"@del $*.c "
 -     "clean::"
 -     ascii(9)+"@del *.CKP"
 -     ascii(9)+"@del *.ln"
 -     ascii(9)+"@del *.BAK"
 -     ascii(9)+"@del *.bak"
 -     ascii(9)+"@del *.def"
 -     ascii(9)+"@del *.dll"
 -     ascii(9)+"@del *.exp"
 -     ascii(9)+"@del *.lib"
 -     ascii(9)+"@del errs"
 -     ascii(9)+"@del *~"
 -     ascii(9)+"@del *.obj"
 -     ascii(9)+"@del .emacs_*"
 -     ascii(9)+"@del tags"
 -     ascii(9)+"@del TAGS "
 -     ascii(9)+"@del make.log "
 -     ""
 -     "distclean:: clean "
 -     ""]
 -
 -  if filestan<>'' then
 -    T=[T;
 -       "standalone: $(OBJSSTAN) "
 -        ascii(9)+"$(LINKER) $(LINKER_FLAGS)  $(OBJSSTAN)"+ ..
 -                 " $(OTHERLIBS) $(SCILIBS) " + ..
 -                 "$(SCICOSCLIB) $(SCICOSFLIB) $(SCICOS_BLOCKSCLIB) $(SCICOS_BLOCKSFLIB) " + ..
 -                 "/out:standalone.exe "];
 -  end
 -
  endfunction
  function do_browser(scs_m)
  
    tt = scs_TreeView(scs_m);
-   //-- cur_wd = getcwd();
 -  cur_wd = pwd();
 -  chdir(TMPDIR);
 -  mputl(tt,scs_m.props.title(1)+'.tcl');
 -  chdir(cur_wd)
 -  TCL_EvalFile(TMPDIR+'/'+scs_m.props.title(1)+'.tcl')
++  //-- cur_wd = pwd();
 +  //-- chdir(TMPDIR);
 +  //-- mputl(tt,scs_m.props.title(1)+'.tcl');
 +  //-- chdir(cur_wd)
 +  //-- TCL_EvalFile(TMPDIR+'/'+scs_m.props.title(1)+'.tcl')
 +  displaytree(tt);
  endfunction
  
  function tt = scs_TreeView(scs_m)
index a8a83ea,0000000..a817b02
mode 100644,000000..100644
--- /dev/null
@@@ -1,52 -1,0 +1,52 @@@
 +//  Scicos
 +//
 +//  Copyright (C) INRIA - METALAU Project <scicos@inria.fr>
 +//
 +// This program is free software; you can redistribute it and/or modify
 +// it under the terms of the GNU General Public License as published by
 +// the Free Software Foundation; either version 2 of the License, or
 +// (at your option) any later version.
 +//
 +// This program is distributed in the hope that it will be useful,
 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 +// GNU General Public License for more details.
 +//
 +// You should have received a copy of the GNU General Public License
 +// along with this program; if not, write to the Free Software
 +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 +//
 +// See the file ../license.txt
 +//
 +function [libss,ok,cancel]=get_dynamic_lib_dir(tt,funam,flag)
 +// Copyright INRIA
 +  cancel=%f
-   cur_wd=getcwd();
++  cur_wd = pwd();
 +  chdir(TMPDIR);
 +  mputl(tt,funam+'.'+flag);
 +  libss='';
 +  label='';
 +  ok=%f
 +  while ~ok then
 +   [ok,libss,label]=getvalue('Linking the '+funam+' function','External libraries (if any)',list('str',1),label);
 +   if ~ok then chdir(cur_wd);cancel=%t,return;end
 +   // for multiple libraries
 +   if strindex(libss,'''')<>[] | strindex(libss,'""')<>[] then
 +     ierr=execstr('libss=evstr(libss)','errcatch')
 +     if ierr<>0  then
 +        messagebox(['Can''t solve other files to link'],"modal")
 +      chdir(cur_wd);
 +        ok=%f;
 +      end
 +    else
 +      libss=tokens(libss,[' ',';'])
 +    end
 +    for i=1:size(libss,'*')
 +       lib_dll=libss(i) + getdynlibext();
 +       ifexst=fileinfo(lib_dll)
 +       if ifexst==[] then messagebox ('the library '+lib_dll+' doesn''t exists','modal');ok=%f;end
 +    end
 +  end
 +  chdir(cur_wd);
 +endfunction 
 +