Skip to content
Snippets Groups Projects
Commit 025db5c5 authored by Marco Ratto's avatar Marco Ratto
Browse files

bug fixes for file exchange through the network under octave

parent 12555b43
Branches
Tags
No related merge requests found
......@@ -44,7 +44,44 @@ for indPC=1:length(Parallel),
if ~ispc, %isunix || (~matlab_ver_less_than('7.4') && ismac),
for jfil=1:size(NamFileInput,1),
% if ~isempty(dynareParallelDir(NamFileInput{jfil,2},[PRCDir,filesep,NamFileInput{jfil,1}],Parallel(indPC))),
if exist('OCTAVE_VERSION') % Patch for peculiar behaviour of ls under Linux.
% It is necessary to manage the jolly char '*'!
FindAst=strfind(NamFileInput{jfil,2},'comp_status_random_walk_metropolis_hastings_core*');
if isempty (FindAst)
[NonServeL NonServeR]= system(['scp ',Parallel(indPC).UserName,'@',Parallel(indPC).ComputerName,':',Parallel(indPC).RemoteDirectory,'/',PRCDir,'/',NamFileInput{jfil,1},NamFileInput{jfil,2},' ',NamFileInput{jfil,1}]);
else
filenameTemp=NamFileInput{jfil,2};
[NotUsed FlI]=system(['ssh ',Parallel(indPC).UserName,'@',Parallel(indPC).ComputerName,' ls ',Parallel(indPC).RemoteDirectory,'/',PRCDir,'/',filenameTemp, ' 2> OctaveStandardOutputMessage.txt']);
if isempty (FlI)
return
end
AstPos=strfind(filenameTemp,'.mat')-1;
FiMat=findstr(FlI, '.mat');
NumFileToCopy=length(FiMat);
for i=1: NumFileToCopy
Ni=num2str(i);
filenameTemp(1,AstPos)=Ni;
[NonServeL NonServeR]= system(['scp ',Parallel(indPC).UserName,'@',Parallel(indPC).ComputerName,':',Parallel(indPC).RemoteDirectory,'/',PRCDir,'/',NamFileInput{jfil,1},filenameTemp,' ',NamFileInput{jfil,1}]);
end
end
else
[NonServeL NonServeR]= system(['scp ',Parallel(indPC).UserName,'@',Parallel(indPC).ComputerName,':',Parallel(indPC).RemoteDirectory,'/',PRCDir,'/',NamFileInput{jfil,1},NamFileInput{jfil,2},' ',NamFileInput{jfil,1}]);
end
% end
end
else
......
......@@ -44,7 +44,7 @@ for indPC=1:length(Parallel),
if ~ispc, %isunix || (~matlab_ver_less_than('7.4') && ismac),
for jfil=1:size(NamFileInput,1),
if ~isempty(NamFileInput{jfil,1})
system(['ssh ',Parallel(indPC).UserName,'@',Parallel(indPC).ComputerName,' mkdir -p ',Parallel(indPC).RemoteDirectory,'/',PRCDir,'/',NamFileInput{jfil,1}])
[NonServeL NonServeR]=system(['ssh ',Parallel(indPC).UserName,'@',Parallel(indPC).ComputerName,' mkdir -p ',Parallel(indPC).RemoteDirectory,'/',PRCDir,'/',NamFileInput{jfil,1}]);
end
[NonServeL NonServeR]=system(['scp ',NamFileInput{jfil,1},NamFileInput{jfil,2},' ',Parallel(indPC).UserName,'@',Parallel(indPC).ComputerName,':',Parallel(indPC).RemoteDirectory,'/',PRCDir,'/',NamFileInput{jfil,1}]);
end
......@@ -52,10 +52,56 @@ for indPC=1:length(Parallel),
for jfil=1:size(NamFileInput,1)
if ~isempty(NamFileInput{jfil,1})
if isempty(dynareParallelDir(NamFileInput{jfil,1},PRCDir,Parallel(indPC)))
if exist('OCTAVE_VERSION') % Patch for peculiar behaviour of mkdir under Windows.
% It is Necessary because Octave is not able to
% create two nested directory at the same time.
% Remove (if present) the '/' chars. Can be easily transformed
% in a function.
NamFileInputTemp=NamFileInput{jfil,1};
while(1)
Bs=strfind(NamFileInputTemp,'/');
if isempty(Bs),
break;
else
NamFileInputTemp(1,Bs)='\';
end
end
[NonServeL NonServeR]=system(['mkdir \\',Parallel(indPC).ComputerName,'\',Parallel(indPC).RemoteDrive,'$\',Parallel(indPC).RemoteDirectory,'\',PRCDir,'\',NamFileInputTemp]);
else
mkdir(['\\',Parallel(indPC).ComputerName,'\',Parallel(indPC).RemoteDrive,'$\',Parallel(indPC).RemoteDirectory,'\',PRCDir,'\',NamFileInput{jfil,1}]);
end
end
copyfile([NamFileInput{jfil,1},NamFileInput{jfil,2}],['\\',Parallel(indPC).ComputerName,'\',Parallel(indPC).RemoteDrive,'$\',Parallel(indPC).RemoteDirectory,'\',PRCDir,'\',NamFileInput{jfil,1}])
end
if exist('OCTAVE_VERSION') % Patch for peculiar behaviour copyfile ls under Windows.
% It is Necessary because Octave is not able to
% use the jolly char '*' with copyfile.
% Remove (if present) the '/' chars. Can be easily transformed
% in a function.
NamFileInputTemp=NamFileInput{jfil,1};
while(1)
Bs=strfind(NamFileInputTemp,'/');
if isempty(Bs),
break;
else
NamFileInputTemp(1,Bs)='\';
end
end
[NonServeS NonServeD]=system(['copy ',NamFileInputTemp, NamFileInput{jfil,2},' \\',Parallel(indPC).ComputerName,'\',Parallel(indPC).RemoteDrive,'$\',Parallel(indPC).RemoteDirectory,'\',PRCDir,'\',NamFileInputTemp]);
else
copyfile([NamFileInput{jfil,1},NamFileInput{jfil,2}],['\\',Parallel(indPC).ComputerName,'\',Parallel(indPC).RemoteDrive,'$\',Parallel(indPC).RemoteDirectory,'\',PRCDir,'\',NamFileInput{jfil,1}]);
end
end
end
end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment