Inheritance diagram for PackageCollector
Public Methods | |
PackageCollector (const cmt_string& package, const cmt_string& version) | |
void | run (const cmt_string& package, const cmt_string& version, const cmt_string& path) |
int | count () |
Private Attributes | |
const cmt_string& | m_package |
const cmt_string& | m_version |
int | m_count |
Definition at line 141 of file cmt_parser.cxx.
|
Definition at line 409 of file cmt_parser.cxx. |
|
Definition at line 515 of file cmt_parser.cxx. Referenced by Cmt::do_show_clients(). 00516 { 00517 return (m_count); 00518 } |
|
Reimplemented from FileScanner::actor. Definition at line 416 of file cmt_parser.cxx. 00419 { 00420 cmt_string dir = path; 00421 dir += CmtSystem::file_separator (); 00422 dir += version; 00423 dir += CmtSystem::file_separator (); 00424 00425 cmt_string req; 00426 00427 req = dir; 00428 req += "cmt"; 00429 req += CmtSystem::file_separator (); 00430 req += "requirements"; 00431 00432 cmt_string requirements; 00433 cmt_string line; 00434 CmtSystem::cmt_string_vector words; 00435 00436 if (CmtSystem::test_file (req)) 00437 { 00438 requirements.read (req); 00439 } 00440 else 00441 { 00442 req = dir; 00443 req += "mgr"; 00444 req += CmtSystem::file_separator (); 00445 req += "requirements"; 00446 if (CmtSystem::test_file (req)) 00447 { 00448 requirements.read (req); 00449 } 00450 } 00451 00452 if (requirements != "") 00453 { 00454 int pos = 0; 00455 int max_pos = requirements.size (); 00456 00457 while (pos < max_pos) 00458 { 00459 int cr = requirements.find (pos, "\r\n"); 00460 int nl = requirements.find (pos, '\n'); 00461 int first = nl; 00462 int length = 1; 00463 00464 if (cr != cmt_string::npos) 00465 { 00466 if (nl == cmt_string::npos) 00467 { 00468 first = cr; 00469 length = 2; 00470 } 00471 else 00472 { 00473 first = (nl < cr) ? nl : cr; 00474 length = (nl < cr) ? 1 : 2; 00475 } 00476 } 00477 00478 if (first == cmt_string::npos) 00479 { 00480 requirements.substr (pos, line); 00481 pos = max_pos; 00482 } 00483 else if (first > pos) 00484 { 00485 requirements.substr (pos, first - pos, line); 00486 pos = first + length; 00487 } 00488 else 00489 { 00490 line.erase (0); 00491 pos += length; 00492 } 00493 00494 CmtSystem::split (line, " \t", words); 00495 00496 if ((words.size () > 2) && (words[0] == "use")) 00497 { 00498 if ((words[1] == m_package) && 00499 ((words[2] == m_version) || (m_version == ""))) 00500 { 00501 cout << "# " << package << " " << version << " " << path; 00502 if (m_version == "") 00503 { 00504 cout << " (use version " << words[2] << ")"; 00505 } 00506 cout << endl; 00507 m_count++; 00508 } 00509 } 00510 } 00511 } 00512 } |
|
Definition at line 154 of file cmt_parser.cxx. |
|
Definition at line 152 of file cmt_parser.cxx. |
|
Definition at line 153 of file cmt_parser.cxx. |