Spis treci:

1. Format listy kontaktw ekg
2. Format konfiguracji ekg
3. Format konfiguracji zapisanej na serwerze
4. Format historii ekg
5. Format emotikon (Adam Osuchowski <adwol@polsl.gliwice.pl>)

* * *

1. Format listy kontaktw ekg

Lista kontaktw z pliku ,,userlist'' jest tego samego formatu co eksportowana
z windowsowego klienta:

    imi;nazwisko;pseudonim;wywietlana_nazwa;telefon;grupy;numer;email

ekg moe dopisa uytkownika do kilku metagrup:

    __blocked - uytkownik blokowany
    __offline - jestemy niedostpni dla uytkownika
    __ignored_<poziom> - uytkownik jest ignorowany z danym poziomem
    __ignored - wszystkie zdarzenia zwizane z uytkownikiem s ignorowane

* * *

2. Format konfiguracji ekg

Plik konfiguracyjny ,,config'' zawiera kolejne wpisy postaci:

	set <zmienna> <warto>
	bind <klawisz> <komenda>
	alias <nazwa> <komenda>
	on <zdarzenie> <parametry> <komenda>

Jeli pierwszy wyraz nie jest jednym ze znanych, jest traktowany jako
nazwa zmiennej, po ktrej wystpuje jej warto -- chodzi o zachowanie
kompatybilnoci z innymi klientami.

Jeli warto zmiennej zaczyna si od znaku o kodzie 1, to nastpujca
po nim warto zmiennej jest zakodowana uywajc base64.

* * *

3. Format konfiguracji zapisanej na serwerze

Jeli uytkownik umieci na serwerze rwnie konfiguracj, wszystkie zmienne
(oprcz ,,uin'' i ,,password'', bo te nie s wysyane) zostan zapisane w
skrconej postaci. Kada zmienna jest opisana przez swoj dwuliterow nazw
(nie mona uywa cyfr). Jeli zmienna jest zmienn liczbow, zaraz po
nazwie umieszcza si jej warto, a za ni kolejn zmienn. Jeli zmienna
jest tekstowa i jest pusta, po nazwie umieszczany jest minus ,,-'' i za nim
kolejna zmienna. Jeli pierwszy znak zmiennej tekstowej jest plusem ,,+'',
zawarto zmiennej zostaa zakodowana w base64 i koczy si znakiem
dwukropka ,,:''. Jeli pierwszym znakiem nie jest plus, tre zmiennej
znajduje si zaraz za nazw i rwnie koczy si dwukropkiem. Po dwukropku
znajduje si kolejna zmienna. Wida zatem, e zmienne, w ktrych wystpuje
dwukropek lub rednik, albo zaczynaj si od plusa, musz zosta zakodowane
w base64. Oto przykady:

    dc1di127.0.0.1:ts+JUg6JU0gAA==:qr-

    dc (display_color) = 1
    di (dcc_ip) = "127.0.0.1"
    ts (timestamp) = "%H:%M "
    qr (quit_reason) = (brak)

Tak zapisana lista zmiennych jest umieszczana w oddzielnych wpisach listy
kontaktw. Zamiast imienia jest ,,__config<liczba>'', gdzie <liczba> jest
kolejn liczb, ale w rzeczywistoci nie ma wikszego znaczenia. Lista
zmiennych jest dzielona po 24 znaki i umieszczana w piciu kolejnych
polach listy kontaktw. w ostatnim polu znajduje si losowa liczba udajca
numerek osoby.

Przy odbiorze nie ma znaczenia liczba po ,,__config'', nie ma znaczenia
podzia na kolejne pola. Wszystko jest i tak sklejane w jeden cig znakw
i dopiero potem analizowane.

* * *

4. Format historii ekg

W zalenoci od ustawienia klienta, historia moe by umieszczona
w pojedynczym pliku (domylnie ~/.gg/history) lub w osobnych plikach,
po kadym na osobny numerek rozmwcy (domylnie ~/.gg/history/<numer>).

Pliki mog by skompresowane za pomoc gzip -- w takim wypadku maj
rozszerzenie ,,.gz''.

Wpisy s w formacie CSV, tj. kady wpis znajduje si w oddzielnej linii,
a jego poszczeglne kolumny s oddzielone przecinkami. Jeeli ktra
kolumna zawiera znak przecinka, nowej linii, cudzysw, backslash, to
caa zawarto kolumny zostaje ujta w cudzysw i zapisana jak cig
znakw jzyka C.

Moliwe wpisy to:

- wysyana wiadomo lub rozmowa:

	chatsend,<numer>,<nick>,<czas>,<tre>
	msgsend,<numer>,<nick>,<czas>,<tre>

- odebrana wiadomo lub rozmowa:

	chatrecv,<numer>,<nick>,<czas_otrzymania>,<czas_nadania>,<tre>
	msgrecv,<numer>,<nick>,<czas_otrzymania>,<czas_nadania>,<tre>

- ignorowana wiadomo lub rozmowa, gdy wczono opcj log_ignored:

	chatrecvign,<numer>,<nick>,<czas_otrzymania>,<czas_nadania>,<tre>
	msgrecvign,<numer>,<nick>,<czas_otrzymania>,<czas_nadania>,<tre>

- zmiana stanu:

	status,<numer>,<nick>,<adres_ip>[:port],<czas>,<stan>
	status,<numer>,<nick>,<adres_ip>[:port],<czas>,<stan>,<opis>

gdzie:
- <numer> - numer nadawcy, odbiorcy lub osoby zmieniajcej stan,
- <nick> - pseudonim osoby,
- <czas> - domylnie ilo sekund od 1 stycznia 1970r. UTC, ale uytkownik
           moe zmieni format tego pola za pomoc zmiennej log_timestamp,
- <adres_ip> - jeli jest nieznany, zapisuje si ,,0.0.0.0'',
- <stan> - jeden z ,,avail'', ,,busy'', ,,invisble'' i ,,notavail''.

* * *

5. Format emotikon (Adam Osuchowski <adwol@polsl.gliwice.pl>)

Za pomoc oryginalnego klienta GG mona wysa sekwencje znakowe, ktre bd
si zamienia na odpowiednie ikony. Z oczywistych wzgldw w ekg wykona si
tego nie da (moe kto kiedy zrobi wsparcie dla aaliba ;))). Sekwencje te,
zamieniane s wic na inne sekwencje. Np. sekwencja:

<cmok>

moe by zamieniona na:

:-*

lub podobn, wedle uznania uytkownika.

Aby skorzysta z moliwoci rozwijania tego typu makr w otrzymywanych
wiadomociach, naley je sobie wczeniej zdefiniowa. Robi si to w pliku
~/.gg/emoticons. Kada linia tego pliku definiuje jedno makro, a jej format
jest nastpujcy:

<makro><tabulatory><rozwiniecie>

Naley zwrci uwag na to, e do oddzielenia emoticonu od jego rozwinicia
su tylko i wycznie tabulatory (jeden lub wicej). Spowodowane jest to
wystpowaniem spacji w oryginalnych GG-owych emoticonach.

Przykadowy zestaw definicji mona znale w docs/emoticons.sample. Nie
zawiera on wszystkich definicji, bo nie miaem na tyle inwencji, eby je
powymyla. :))


$Id: files.txt,v 1.4 2003-06-21 13:03:05 wojtekka Exp $
