// cgrep.cpp - Definición de la clase CGrep
#include <iostream>
#include <fstream>
#include "cgrep.h"  // clase CGrep
using namespace std;

/////////////////////////////////////////////////////////////////
bool CGrep::BuscarCadena(char *cadena1, char *cadena2)
{
  // ¿cadena2 está contenida en cadena1?
  if (strstr(cadena1, cadena2) != 0)
    return true;  // sí
  else
    return false; // no
}

void CGrep::BuscarEnFich(char *nomf, char *cadena)
{
  fstream fs;
  // Nombre del fichero: nomf
  if (strlen(nomf) == 0)
  {
    cout << "Especificar un nombre para el fichero.\n";
    return;
  }
  // Comprobar si el fichero existe
  if (!Existe(nomf))
  {
    cout << "El fichero " << nomf << " no existe.\n";
    return;
  }

  // Abrir el flujo de entrada desde el fichero origen de los datos
  fs.open(nomf, ios::in);
  // Buscar "cadena" en el fichero fuente
  char linea[100];
  int nroLinea = 0;

  fs.getline(linea, 100);
  while (!fs.eof())
  {
    // Si se alcanza el final del fichero,
    // getline activa eofbit
    nroLinea++; // contador de líneas
    if (BuscarCadena(linea, cadena))
      cout << nomf << " " << nroLinea << " " << linea << endl;
    fs.getline(linea, 100);
  }
}

bool CGrep::Existe(char *nomf)
{
  fstream fs;
  // Intentar abrir el fichero para leer
  fs.open(nomf, ios::in);
  if (fs.fail())
  {
    fs.clear();
    return false;
  }
  fs.close();
  return true;
}
/////////////////////////////////////////////////////////////////

