/***************************************************************************
* *
* 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;
}