time | Calls | line |
---|
| | 1 | function cdirs = parsedirs(str,varargin)
|
| | 2 | %PARSEDIRS Convert string of directories into a cell array
|
| | 3 | % C = PARSEDIRS(S) converts S, a string of directories separated by path
|
| | 4 | % separators, to C, a cell array of directories.
|
| | 5 | %
|
| | 6 | % The function will clean up each directory name by converting file
|
| | 7 | % separators to the appropriate operating system file separator, and by
|
| | 8 | % ending each cell with a path separator. It will also remove repeated
|
| | 9 | % file and path separators, and insignificant whitespace.
|
| | 10 | %
|
| | 11 | % Example:
|
| | 12 | % cp = parsedirs(path);
|
| | 13 |
|
| | 14 | % Copyright 1984-2007 The MathWorks, Inc.
|
| | 15 |
|
< 0.001 | 2 | 16 | fs = filesep;
|
< 0.001 | 2 | 17 | ps = pathsep;
|
| | 18 |
|
0.003 | 2 | 19 | cdirs = regexp(str, sprintf('[^\\s%s;][^%s;]*', ps, ps), 'match')';
|
| | 20 |
|
< 0.001 | 2 | 21 | if ps == ';'
|
| | 22 | % Only iron fileseps on PC:
|
| | 23 | cdirs = strrep(cdirs,'/','\');
|
| | 24 |
|
| | 25 | % Remove repeated "\"s unless they are the start of string
|
| | 26 | % Also ensure a "\" exists after a colon
|
| | 27 | cdirs = regexprep(cdirs, '(:)\s*$|(.)\\{2,}', '$1\');
|
< 0.001 | 2 | 28 | else
|
| | 29 | % Remove repeated "/"s
|
0.003 | 2 | 30 | cdirs = regexprep(cdirs, '/{2,}', '/');
|
| | 31 |
|
| | 32 | % Do any tilde expansion
|
< 0.001 | 2 | 33 | ix = find(strncmp(cdirs,'~',1));
|
< 0.001 | 2 | 34 | if ~isempty(ix)
|
| | 35 | cdirs(ix) = unix_tilde_expansion(cdirs(ix));
|
| | 36 | end
|
< 0.001 | 2 | 37 | end
|
| | 38 |
|
| | 39 | % Remove trailing fileseps, but allow a directory to be "X:\", "\" or "/"
|
| | 40 | % Add pathseps to the end of all paths
|
0.007 | 2 | 41 | cdirs = regexprep(cdirs,sprintf('(.*[^:])\\%s\\s*$|(.+)\\s*$',fs),sprintf('$1%s', ps));
|
| | 42 |
|
| | 43 | % Remove empty paths
|
< 0.001 | 2 | 44 | cdirs(cellfun('isempty', cdirs)) = [];
|
Other subfunctions in this file are not included in this listing.