Public Methods |
|
? | FileScanner () |
bool? | scan_path (const cmt_string& path, actor& a) |
Private Methods |
|
void? | scan_path (const cmt_string& path, int level, actor& a) |
Private Attributes |
|
bool? | _running |
int? | _level |
Whenever it finds one, it applies the specified actor to it.
Definition at line 10 of file cmtshowclients.cxx.
|
? |
Definition at line 39 of file cmtshowclients.cxx. 00041 { 00042 _running = false; 00043 _level = 0; 00044 } |
|
? |
Definition at line 62 of file cmtshowclients.cxx. 00064 { 00065 // 00066 // Only do something if it is a directory. 00067 // 00068 00069 if (!CmtSystem::test_directory (path)) return; 00070 00071 CmtSystem::cmt_string_vector list; 00072 00073 CmtSystem::scan_dir (path, list); 00074 00075 if (list.size () == 0) return; 00076 00077 _level++; 00078 00079 // Will be set if at least one directory is a version directory 00080 bool has_package = false; 00081 00082 cmt_string pack; 00083 CmtSystem::basename (path, pack); 00084 00085 int i; 00086 for (i = 0; i < list.size (); i++) 00087 { 00088 const cmt_string& name = list[i]; 00089 00090 //cout << "scan> level=" << level << " name=" << name; 00091 00092 cmt_string version; 00093 CmtSystem::basename (name, version); 00094 00095 // 00096 // All entries at this level may be "legal" version directories. 00097 // 00098 // So we go down but no more then one level deep. 00099 // The next level we request that the entry is a version 00100 // and that there is a mgr/requirements file below. 00101 // 00102 00103 if (level == 0) 00104 { 00105 //cout << " -> down" << endl; 00106 scan_path (name, level + 1, a); 00107 } 00108 else if (CmtSystem::is_version_directory (version)) 00109 { 00110 cmt_string req; 00111 00112 req = name; 00113 req += CmtSystem::file_separator (); 00114 req += "cmt"; 00115 req += CmtSystem::file_separator (); 00116 req += "requirements"; 00117 00118 if (CmtSystem::test_file (req)) 00119 { 00120 //cout << " -> cmt" << endl; 00121 00122 a.run (pack, version, path); 00123 00124 has_package = true; 00125 } 00126 else 00127 { 00128 //cout << " -> no cmt" << endl; 00129 req = name; 00130 req += CmtSystem::file_separator (); 00131 req += "mgr"; 00132 req += CmtSystem::file_separator (); 00133 req += "requirements"; 00134 00135 if (CmtSystem::test_file (req)) 00136 { 00137 //cout << " -> cmt" << endl; 00138 00139 a.run (pack, version, path); 00140 00141 has_package = true; 00142 } 00143 else 00144 { 00145 //cout << " -> no mgr" << endl; 00146 } 00147 } 00148 } 00149 else 00150 { 00151 //cout << " -> stop" << endl; 00152 } 00153 } 00154 00155 if (has_package) 00156 { 00157 // 00158 // At least one version was found here. 00159 // 00160 scan_path (path, 0, a); 00161 } 00162 00163 _level--; 00164 } |
|
? |
Definition at line 47 of file cmtshowclients.cxx. Referenced by main(). 00049 { 00050 if (_running) return (false); 00051 00052 _level = 0; 00053 _running = true; 00054 scan_path (path, 0, a); 00055 _running = false; 00056 _level = 0; 00057 00058 return (true); 00059 } |
|
? |
Definition at line 34 of file cmtshowclients.cxx. |
|
? |
Definition at line 33 of file cmtshowclients.cxx. |