/***************************************************************************
*                                                                          *
*   Copyright (C) 2005 Piotr Wawrzyniak ([email protected])                 *
*   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;

}