Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

PAwk Class Reference

#include <cmt_awk.h>

Inheritance diagram for PAwk:

Inheritance graph
[legend]
Collaboration diagram for PAwk:

Collaboration graph
[legend]
List of all members.

Public Member Functions

condition run (const cmt_string &command, const cmt_string &pattern="")
condition run (const cmt_string &text, const cmt_regexp &expression)

Member Function Documentation

Awk::condition PAwk::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::end(), Awk::filter(), cmt_regexp::match(), 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 }

Awk::condition PAwk::run const cmt_string command,
const cmt_string pattern = ""
 

Reimplemented from Awk.

Definition at line 490 of file cmt_awk.cxx.

References Awk::begin(), cmt_string::c_str(), Awk::end(), Awk::filter(), cmt_string::find(), 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 }


The documentation for this class was generated from the following files:
Generated on Mon May 2 10:25:56 2005 for CMT by doxygen 1.3.5