12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- 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
-
|