/***************************************************************************
 *                                                                          * 
 *   Copyright (C) 2005 Piotr Wawrzyniak (piti@piti.vsv.pl)                 *
 *   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.                                    *
 *                                                                          *
 ***************************************************************************/

/*procedury zamieniaj�ce pliki eps z numerami na etykiety*/

#include<stdlib.h>
#include<string.h>
#include<iostream>
#include<fstream>
#include"czyt_zapis.h"
#include<stdio.h>
#include"dl_wiersza.h"
#include<unistd.h>
#include"num_na_etyk.h"
using namespace std;

int przeszukaj_linie_eps(char*,char*,int&);
extern int language;




int num_na_etyk(char*nazwa_pliku)
{
  //cout<<"Otwieram plik eps do czytania "<<endl;
  ifstream plik_eps(nazwa_pliku);
  if(!plik_eps)
    { 
      if(language==0)
	{
	  cout<<"Nie uda�o si� otworzy� pliku "<<nazwa_pliku<<" do czytania. "<<endl<<"Sprawd� prawa."<<endl;
	}
      else
	{
	  cout<<"Couldn't open "<<nazwa_pliku<<" file for reading. Check permissions."<<endl;
	}
      return 1;
    }
  //char nazwatymcz[L_tmpnam];
  //char *nazwa_eps_tymcz;
 char nazwa_eps_tymcz[]="konwXXXXXX";
  //nazwa_eps_tymcz=tmpnam(nazwatymcz);
  mkstemp(nazwa_eps_tymcz);
  ofstream plik_tymcz_eps(nazwa_eps_tymcz);
  if(!plik_tymcz_eps)
    {
      if(language==0)
	{
	  cout<<"Nie mog� utworzy� pliku tymczasowego. Sprawd� prawa."<<endl;
	}
      else
	{
	  cout<<"Couldn't open temporary file. Check permissions."<<endl;
	}
      return 1;
    }
  
  int dl_lini;
  int kolejnosc;
  char c[DL_WIERSZA];
  char etykieta[DL_WIERSZA];
  etykieta[DL_WIERSZA-1]=c[DL_WIERSZA-1]='\0';
  while(!wczytaj_linie(c,&dl_lini,DL_WIERSZA,plik_eps))
    {

      if(przeszukaj_linie_eps(c,etykieta,kolejnosc))//je�li zwr�ci 1 lub 2 oznacza �e znalaz� etykiet�
      {//pocz�tek if
	
	if(*c=='%')//je�li na pocz�tku linii z etykiet� znajduje si� procent
	  {
	    for(int zmienna=1;c[zmienna]!='\0';zmienna++)
	    plik_tymcz_eps<<c[zmienna];//i zapisujemy do pliku
	    wczytaj_linie(c,&dl_lini,DL_WIERSZA,plik_eps);//za tym powinien by� numer wi�c go wczytaj i zgub

	  }
	else plik_tymcz_eps<<c;//Je�li nie ma procentu to po prosu zapisz linie
	
	
      }
      
      else plik_tymcz_eps<<c;//nie znalaz� etykiety wi�c zapisuje linie

    }


  //Cz�� kopiuj�ca plik tymczasowy na pierwotny eps
  
{

  plik_tymcz_eps.close();//zamykanie plik�w
  plik_eps.close();//zamykanie plik�w
  //cout<<"otwieram plik do zapisu"<<endl;

  ofstream plik_tymcz_eps(nazwa_pliku);//plik wyj�ciowy nie sugerowa� si� nazw� zmiennej. Pozostawione aby nie psu� dalszych zale�no�ci.

  if(!plik_tymcz_eps)
    {
      if(language==0)
	{
	  cout<<"Nie mog� otworzy� pliku "<<nazwa_pliku<<" do zapisu."<<endl;
	}
      else
	{
	  cout<<"Couldn't open "<<nazwa_pliku<<" file for writing."<<endl;
	}
      return 1;
    }

  ifstream plik_eps(nazwa_eps_tymcz);//plik wej�ciowy nie sugerowa� si� nazw� zmiennej. Pozostawione aby nie psu� dalszych zale�no�ci.
  if(language==0)
    {
      cout<<"Zmieniam numery na etykiety w pliku: "<<nazwa_pliku<<endl;
    }
  else
    {
      cout<<"Changing numbers to labels in "<<nazwa_pliku<<" file"<<endl;
    }
  if(!plik_eps)
    {
      if(language==0)
	{
	  cout<<"Nie moge otworzy� pliku tymczasowego do odczytu. Co� posz�o nie tak."
	      <<endl
	      <<"Zawarto�� pliku "<<nazwa_pliku<<" mo�esz znale�� w "<<nazwa_eps_tymcz<<"."<<endl;
	}
      else
	{
	  cout<<"I couldn't open temporary file for reading. Something has gone wrong."<<endl
	      <<"Content of the "<<nazwa_pliku<<" can be found in "<<nazwa_eps_tymcz<<" file."<<endl;
	}
      return 1;
    }

  while(!wczytaj_linie(c,&dl_lini,DL_WIERSZA,plik_eps))
    {
      plik_tymcz_eps<<c;

    }
  

  plik_eps.close();
  plik_tymcz_eps.close();
}
  //cout<<nazwa_eps_tymcz<<endl;
  unlink(nazwa_eps_tymcz);

  return 0;

}