#include <cmt_awk.h>
Inheritance diagram for PAwk:
Public Methods |
|
| condition? | run (const cmt_string &command, const cmt_string &pattern="") |
| condition? | run (const cmt_string &text, const cmt_regexp &expression) |
|
||||||||||||
| ? |
Reimplemented from Awk. Definition at line 540 of file cmt_awk.cxx. References Awk::begin(), cmt_string::c_str(), Awk::condition, Awk::end(), Awk::filter(), Awk::m_condition, Awk::m_line_number, cmt_regexp::match(), Awk::ok, and cmt_string::replace(). 00542 {
00543 cmt_string line;
00544
00545 m_line_number = 0;
00546 m_condition = ok;
00547
00548 begin ();
00549 if (m_condition != ok) return (m_condition);
00550
00551 FILE* f = popen (command.c_str (), "r");
00552
00553 if (f == 0) return (failed);
00554
00555 char buffer[256];
00556 char* ptr;
00557
00558 while ((ptr = fgets (buffer, sizeof (buffer), f)) != NULL)
00559 {
00560 line = ptr;
00561
00562 line.replace ("\n", "");
00563
00564 m_line_number++;
00565
00566 if (line != "")
00567 {
00568 if (expression.match (line))
00569 {
00570 filter (line);
00571 if (m_condition != ok) return (m_condition);
00572 }
00573 }
00574 }
00575
00576 pclose (f);
00577
00578 end ();
00579
00580 return (m_condition);
00581 }
|
|
||||||||||||
| ? |
Reimplemented from Awk. Definition at line 490 of file cmt_awk.cxx. References Awk::begin(), cmt_string::c_str(), Awk::condition, Awk::end(), Awk::filter(), cmt_string::find(), Awk::m_condition, Awk::m_line_number, cmt_string::npos, Awk::ok, and cmt_string::replace(). Referenced by Generator::build_windefs(). 00492 {
00493 cmt_string line;
00494
00495 m_line_number = 0;
00496 m_condition = ok;
00497
00498 begin ();
00499 if (m_condition != ok) return (m_condition);
00500
00501 FILE* f = popen (command.c_str (), "r");
00502
00503 if (f == 0) return (failed);
00504
00505 char buffer[8192];
00506 char* ptr;
00507
00508 while ((ptr = fgets (buffer, sizeof (buffer), f)) != NULL)
00509 {
00510 line = ptr;
00511
00512 if (line.find ("\n") == cmt_string::npos)
00513 {
00514 cerr << "#CMT> Warning: Line too long and truncated in PAwk::run for command " << command << endl;
00515 }
00516
00517 line.replace ("\n", "");
00518
00519 m_line_number++;
00520
00521 if (line != "")
00522 {
00523 if ((pattern == "") ||
00524 (line.find (pattern) != cmt_string::npos))
00525 {
00526 filter (line);
00527 if (m_condition != ok) return (m_condition);
00528 }
00529 }
00530 }
00531
00532 pclose (f);
00533
00534 end ();
00535
00536 return (m_condition);
00537 }
|