Chris@0
|
1 function p = mygenpath(d,varargin)
|
Chris@0
|
2 %GENPATH Generate recursive toolbox path.
|
Chris@0
|
3 % P = GENPATH returns a new path string by adding
|
Chris@0
|
4 % all the subdirectories of MATLABROOT/toolbox, including empty
|
Chris@0
|
5 % subdirectories.
|
Chris@0
|
6 %
|
Chris@0
|
7 % P = GENPATH(D) returns a path string starting in D, plus, recursively, all
|
Chris@0
|
8 % the subdirectories of D, including empty subdirectories.
|
Chris@0
|
9 %
|
Chris@0
|
10 % NOTE: GENPATH will not exactly recreate the original MATLAB path.
|
Chris@0
|
11 %
|
Chris@0
|
12 % See also PATH, ADDPATH, RMPATH, SAVEPATH.
|
Chris@0
|
13
|
Chris@0
|
14 % Copyright 1984-2006 The MathWorks, Inc.
|
Chris@0
|
15 % $Revision: 1.13.4.4 $ $Date: 2006/10/14 12:24:02 $
|
Chris@0
|
16 %------------------------------------------------------------------------------
|
Chris@0
|
17
|
Chris@0
|
18 if nargin==0,
|
Chris@0
|
19 p = genpath(fullfile(matlabroot,'toolbox'));
|
Chris@0
|
20 if length(p) > 1, p(end) = []; end % Remove trailing pathsep
|
Chris@0
|
21 return
|
Chris@0
|
22 end
|
Chris@0
|
23 if nargin==1
|
Chris@0
|
24 pat = 'imporobablepatternthisis';
|
Chris@0
|
25 else
|
Chris@0
|
26 pat = varargin{1};
|
Chris@0
|
27 end
|
Chris@0
|
28 % initialise variables
|
Chris@0
|
29 methodsep = '@'; % qualifier for overloaded method directories
|
Chris@0
|
30 p = ''; % path to be returned
|
Chris@0
|
31
|
Chris@0
|
32 % Generate path based on given root directory
|
Chris@0
|
33 files = dir(d);
|
Chris@0
|
34 if isempty(files)
|
Chris@0
|
35 return
|
Chris@0
|
36 end
|
Chris@0
|
37
|
Chris@0
|
38 % Add d to the path even if it is empty.
|
Chris@0
|
39 p = [p d pathsep];
|
Chris@0
|
40
|
Chris@0
|
41 % set logical vector for subdirectory entries in d
|
Chris@0
|
42 isdir = logical(cat(1,files.isdir));
|
Chris@0
|
43 %
|
Chris@0
|
44 % Recursively descend through directories which are neither
|
Chris@0
|
45 % private nor "class" directories.
|
Chris@0
|
46 %
|
Chris@0
|
47 dirs = files(isdir); % select only directory entries from the current listing
|
Chris@0
|
48
|
Chris@0
|
49 for i=1:length(dirs)
|
Chris@0
|
50 dirname = dirs(i).name;
|
Chris@0
|
51 if ~strcmp( dirname,'.') && ...
|
Chris@0
|
52 ~strcmp( dirname,'..') && ...
|
Chris@0
|
53 ~strncmp( dirname,methodsep,1) && ...
|
Chris@0
|
54 ~strcmp( dirname,'private') && ...
|
Chris@0
|
55 isempty(regexp(dirname,'svn','ONCE')) && ...
|
Chris@0
|
56 isempty(regexp(dirname, pat,'ONCE'))
|
Chris@0
|
57 p = [p genpath(fullfile(d,dirname))]; % recursive calling of this function.
|
Chris@0
|
58 end
|
Chris@0
|
59 end
|
Chris@0
|
60
|
Chris@0
|
61 %------------------------------------------------------------------------------
|