
/*
 * Plik:         logger.c
 * Autor:        Kylo
 * Data:         07.02.99
 * Modyfikacja:  08.02.99
 * Opis:         obiekt logujacy
 */
      
#pragma strict_types
      
// Doladaczenie pliku naglowkowego
#include "local.h"
#include "log.h"

// Deklaracje funkcji
int dodaj_wpisy(string plik,string *wpisy);
string *znajdz_wpisy(string plik,string wyrazenie);
int usun_wpisy(string plik,string *wpisy);

int dodaj_zabojce(string imie);
int czy_zabojca(string imie);
int usun_zabojce(string imie,int i=0);

// Definicje funkcji
int dodaj_zabojce(string imie)
{
    return dodaj_wpisy(ZABOJCY_LOG,({" "+imie+" "}));
}

int czy_zabojca(string imie)
{
    return sizeof(znajdz_wpisy(ZABOJCY_LOG," "+imie+" "));    
}

int usun_zabojce(string imie,int i=0)
{
    string *wpisy;
    wpisy=znajdz_wpisy(ZABOJCY_LOG," "+imie+" ");
    dump_array(i);
    if ( (i>0) && (i<sizeof(wpisy)) )
    {
	wpisy=wpisy[0..i-1];
	dump_array(wpisy);
    }
    return usun_wpisy(ZABOJCY_LOG,wpisy);
}

int dodaj_wpisy(string plik,string *wpisy)
{
    string logstr;
    logstr=implode(wpisy,"\n");
    setuid();
    seteuid(getuid());
    return write_file(plik,logstr+"\n");
}

string *znajdz_wpisy(string plik,string wyrazenie)
{
    string logstr;
    string *logarr;
    logstr=read_file(plik);
    logarr=explode(logstr,"\n");
    logarr=regexp(logarr,wyrazenie);
    return logarr;
}

int usun_wpisy(string plik,string *wpisy)
{
    string logstr;
    string *logarr;
    int i,j;
    int rozmiar;
    logstr=read_file(plik);
    logarr=explode(logstr,"\n");
    rozmiar=sizeof(wpisy);
    for (i=0; i<rozmiar; i++)
    {
	j=member_array(wpisy[i],logarr);
	logarr=exclude_array(logarr,j,j);
    }
    rm(plik);
    return dodaj_wpisy(plik,logarr);
}

