function directory = mttLocateDirectory(working_directory,local_directory)
if isempty(local_directory)
directory = working_directory ;
else
backslash = findstr(working_directory,'\') ;
working_directory(backslash) = '/' ;
[working_drive,working_path] = mttCutText(working_directory,':') ;
if isempty(working_path)
working_path = working_directory ;
working_drive = [] ;
end
[local_drive,local_path] = mttCutText(local_directory,':') ;
if isempty(local_path)
local_path = local_directory ;
local_drive = [] ;
end
if isempty(local_drive)
if local_path(1)=='/'
if isempty(working_drive)
directory = local_path ;
else
directory = [working_drive,':',local_path] ;
end
else
directory = [working_directory,'/',local_directory] ;
end
else
mttAssert(all(isletter(local_drive)),...
['"',local_drive,'" is an invalid drive specifier']) ;
directory = local_directory ;
end
mttAssert(exist(directory,'dir')==7,...
['Directory "',directory,'" not found']) ;
locating = 1 ;
while locating
[left,right] = mttCutText(directory,'//') ;
if isempty(right)
locating = 0 ;
else
directory = [left,'/',right] ;
end
end
locating = 1 ;
while locating
backtrack = findstr(directory,'/..') ;
if isempty(backtrack)
locating = 0 ;
else
[left,right] = mttCutText(directory,'/..') ;
if isempty(right)
[cancelled,left] = mttDetachText(left,'/') ;
directory = left ;
else
[cancelled,left] = mttDetachText(left,'/') ;
directory = [left,right] ;
end
end
end
end