Skip to content

wojtekka/libgadu

Repository files navigation

libgadu 1.12.3-pre
(C) Copyright 2001-2019 Autorzy (pełna lista w pliku AUTHORS)

libgadu jest biblioteką przeznaczoną do obsługi protokołu komunikatora
Gadu-Gadu. Przez dłuższy czas była integralną częścią Eksperymentalnego
Klienta Gadu-Gadu, lecz ze względu na problemy z dystrybucją pakietów
i wykorzystaniem w innych projektach, została wydzielona. Własnościowy
protokół został rozszyfrowany metodą inżynierii wstecznej (ang. "reverse
engineering"), przez co libgadu może nie być w 100% zgodna
z pierwowzorem.

Należy pamiętać, że używanie alternatywnych klientów może być niezgodne
z regulaminem korzystania z serwisu Gadu-Gadu.

Biblioteka została napisana w języku C i jest niezależna od systemu
operacyjnego czy środowiska. Pracuje pod systemami operacyjnymi zgodnymi
z POSIX, również BeOS i Win32. Używana jest w aplikacjach konsolowych,
jak i graficznych GTK+ i Qt.

Biblioteka jest udostępniana na zasadach licencji LGPL w wersji 2.1,
której treść znajduje się w pliku COPYING.

Strona projektu znajduje się pod adresem http://libgadu.net/.

Problemy z biblioteką można zgłaszać na stronie projektu w GitHubie pod
adresem https://github.com/wojtekka/libgadu/issues. Używana wcześniej
lista dyskusyjna [email protected] nie jest już dostępna.

Wymagania
---------

Do połączeń szyfrowanych biblioteka wykorzystuje bibliotekę GnuTLS lub
OpenSSL. Domyślnie OpenSSL nie jest wykorzystywany, nawet jeżeli jest
zainstalowany w systemie - oprogramowanie zlinkowane z tą biblioteką nie jest
kompatybilne z GPL, co powoduje problemy z łączeniem z programami na tej
licencji. Aby mimo wszystko skompilować libgadu z obsługą OpenSSL, należy
użyć przełącznika --with-openssl. Tak skompilowana wersja będzie tylko
częściowo binarnie kompatybilna z wersją standardową: brakuje w niej symbolu
gg_is_gpl_compliant, którego mogą używać aplikacje wymagające takiej
licencji. Minimalna wymagana wersja biblioteki OpenSSL to 0.9.7, a biblioteki
GnuTLS 2.10.0. Przy użyciu OpenSSL lub GnuTLS w wersji niższej niż 3.0 nie
jest sprawdzana lista unieważnionych certyfikatów.

Do przechowywania listy kontaktów na serwerze niezbędna jest biblioteka
zlib.

Do wygenerowania dokumentacji używany jest Doxygen. Jeśli nie jest 
dostępny, dokumentacja nie jest generowana.

Do niektórych testów automatycznych wymagane są glibc, GnuTLS, libxml2
i Perl. Jeśli nie są dostępne, niektóre testy nie będą uruchamiane.
Ponadto jeden z programów do ręcznego testowania biblioteki wymaga
bibliotek CURL, Expat i OpenSSL.

Kompilator musi obsługiwać 64-bitowe zmienne typu long long.

Podczas kompilacji wykrywana jest wersja biblioteki standardowej,
ponieważ zachowanie używanych funkcji rodziny printf() zostało
zmienione w ISO C99. Podczas kompilacji skrośnej nie jest możliwe
automatyczne określenie wersji biblioteki na systemie docelowym, więc
niezbędne jest użycie parametru --with- lub --without-c99-vsnprintf.
Większość współczesnych systemów operacyjnych zawiera bibliotekę
standardową zgodną ze standardem C99, więc w przypadku wątpliwości
można użyć --with-c99-vsnprintf.

Do asynchronicznego rozwiązywania nazw biblioteka używa procesów
lub wątków pthread. Jeśli system udostępnia funkcję gethostbyname_r()
działającą poprawnie w aplikacjach wielowątkowych (Linux z glibc,
SunOS), zostanie ona użyta.