Newer
Older
Import / applications / Photoframe / Research / SMB / jags-0.22.1 / plugins / fixsmbcop.cpp
/***************************************************************************
                         fixsmbcop.cpp  -  description
                             -------------------
    begin                : Sun Jun 4 2000
    copyright            : (C) 2000 by Daniel Sundberg
    email                : dansun-8@student.luth.se
    homepage             : http://sumpan.campus.luth.se

    This program parses out either reads lines from stdin. After finding 
    two lines containing the first two args the program starts dumping 
    until last pattern is found. Can be _NEWLINE which is an empty line.

 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#include <iostream>
#include <fstream>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

int
main(int args, char *argv[]) {
  if (args > 3) {
    if (cin) {
      char *buffer = new char[100];

      while (cin.good()) {
	    /* Search for start-pattern-1 */
	    cin.getline(buffer, 100, '\n');
	    if (!strncmp(buffer, argv[1], strlen(argv[1]) )) {
	      /* Search for start-pattern-2 */
	      cin.getline(buffer, 100, '\n');
	      if (!strncmp(buffer, argv[2], strlen(argv[2]) )) {
		/* Here we want to start output text */
		while (cin.good()) {
		  cin.getline(buffer, 100, '\n');
		  
		  /* Until we find the end-pattern: newline or <pattern> */
		  if (!strcmp(argv[3],"_NEWLINE")) {
		    if (!strcmp(buffer,"")) {
		      exit(0);
		    } else {
		      cout << buffer << '\n';
		    }
		  } else {
		    if (!strncmp(buffer, argv[3],strlen(argv[3]))) {
		      exit(0);
		    } else {
		      cout << buffer << '\n';
		    }
		  } // Newline if
		} // while
	      } else {
		exit(0);
	      }// Pattern 2 if
	    }
      }
    } else {
      cout << "File " << argv[1] << " not found\n";
    }
  } else {
    cout << "Usage: fixsmbcop [start-pattern1] [start-pattern2] [end-pattern]\n" << 
            "       where end-pattern can be _NEWLINE == stop parsing on next empty line\n";
  }
  return 0;
}