libgadu.h | libgadu.h | |||
---|---|---|---|---|
/* include/libgadu.h. Generated from libgadu.h.in by configure. */ | /* include/libgadu.h. Generated from libgadu.h.in by configure. */ | |||
/* $Id$ */ | /* $Id$ */ | |||
/* | /* | |||
* (C) Copyright 2001-2003 Wojtek Kaniewski <wojtekka@irc.pl> | * (C) Copyright 2001-2009 Wojtek Kaniewski <wojtekka@irc.pl> | |||
* Robert J. Woźny <speedy@ziew.org> | * Robert J. Woźny <speedy@ziew.org> | |||
* Arkadiusz Miśkiewicz <arekm@pld-linux.org> | * Arkadiusz Miśkiewicz <arekm@pld-linux.org> | |||
* Tomasz Chiliński <chilek@chilan.com> | * Tomasz Chiliński <chilek@chilan.com> | |||
* Piotr Wysocki <wysek@linux.bydg.org> | * Piotr Wysocki <wysek@linux.bydg.org> | |||
* Dawid Jarosz <dawjar@poczta.onet.pl> | * Dawid Jarosz <dawjar@poczta.onet.pl> | |||
* Jakub Zawadzki <darkjames@darkjames.ath.cx> | ||||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * This program is free software; you can redistribute it and/or modify | |||
* it under the terms of the GNU Lesser General Public License Version | * it under the terms of the GNU Lesser General Public License Version | |||
* 2.1 as published by the Free Software Foundation. | * 2.1 as published by the Free Software Foundation. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU Lesser General Public License for more details. | * GNU Lesser General Public License for more details. | |||
* | * | |||
skipping to change at line 56 | skipping to change at line 57 | |||
/** \cond ignore */ | /** \cond ignore */ | |||
/* Defined if libgadu was compiled for bigendian machine. */ | /* Defined if libgadu was compiled for bigendian machine. */ | |||
/* #undef GG_CONFIG_BIGENDIAN */ | /* #undef GG_CONFIG_BIGENDIAN */ | |||
/* Defined if this machine has gethostbyname_r(). */ | /* Defined if this machine has gethostbyname_r(). */ | |||
#define GG_CONFIG_HAVE_GETHOSTBYNAME_R /**/ | #define GG_CONFIG_HAVE_GETHOSTBYNAME_R /**/ | |||
/* Defined if libgadu was compiled and linked with pthread support. */ | /* Defined if libgadu was compiled and linked with pthread support. */ | |||
/* #undef GG_CONFIG_HAVE_PTHREAD */ | #define GG_CONFIG_HAVE_PTHREAD /**/ | |||
/* Defined if pthread resolver is the default one. */ | ||||
/* #undef GG_CONFIG_PTHREAD_DEFAULT */ | ||||
/* Defined if this machine has C99-compiliant vsnprintf(). */ | /* Defined if this machine has C99-compiliant vsnprintf(). */ | |||
#define GG_CONFIG_HAVE_C99_VSNPRINTF /**/ | #define GG_CONFIG_HAVE_C99_VSNPRINTF /**/ | |||
/* Defined if this machine has va_copy(). */ | /* Defined if this machine has va_copy(). */ | |||
#define GG_CONFIG_HAVE_VA_COPY /**/ | #define GG_CONFIG_HAVE_VA_COPY /**/ | |||
/* Defined if this machine has __va_copy(). */ | /* Defined if this machine has __va_copy(). */ | |||
#define GG_CONFIG_HAVE___VA_COPY /**/ | #define GG_CONFIG_HAVE___VA_COPY /**/ | |||
skipping to change at line 173 | skipping to change at line 177 | |||
*/ | */ | |||
struct gg_common { | struct gg_common { | |||
gg_common_head(struct gg_common) | gg_common_head(struct gg_common) | |||
}; | }; | |||
struct gg_image_queue; | struct gg_image_queue; | |||
struct gg_dcc7; | struct gg_dcc7; | |||
/** | /** | |||
* Sposób rozwiązywania nazw serwerów. | ||||
*/ | ||||
typedef enum { | ||||
GG_RESOLVER_DEFAULT = 0, /**< Domyślny sposób rozwiązywania n | ||||
azw (jeden z poniższych) */ | ||||
GG_RESOLVER_FORK, /**< Rozwiązywanie nazw bazujące na | ||||
procesach */ | ||||
GG_RESOLVER_PTHREAD, /**< Rozwiązywanie nazw bazujące na | ||||
wątkach */ | ||||
GG_RESOLVER_CUSTOM, /**< Funkcje rozwiązywania nazw dost | ||||
arczone przed aplikację */ | ||||
GG_RESOLVER_INVALID = -1 /**< Nieprawidłowy sposób rozwiązywa | ||||
nia nazw (wynik \c gg_session_get_resolver) */ | ||||
} gg_resolver_t; | ||||
/** | ||||
* Rodzaj kodowania znaków. | ||||
*/ | ||||
typedef enum { | ||||
GG_ENCODING_CP1250 = 0, /**< Kodowanie CP1250 */ | ||||
GG_ENCODING_UTF8, /**< Kodowanie UTF-8 */ | ||||
GG_ENCODING_INVALID = -1 /**< Nieprawidłowe kodowanie */ | ||||
} gg_encoding_t; | ||||
/** | ||||
* Sesja Gadu-Gadu. | * Sesja Gadu-Gadu. | |||
* | * | |||
* Tworzona przez funkcję \c gg_login(), zwalniana przez \c gg_free_session (). | * Tworzona przez funkcję \c gg_login(), zwalniana przez \c gg_free_session (). | |||
* | * | |||
* \ingroup login | * \ingroup login | |||
*/ | */ | |||
struct gg_session { | struct gg_session { | |||
gg_common_head(struct gg_session) | gg_common_head(struct gg_session) | |||
int async; /**< Flaga połączenia asynchronicznego */ | int async; /**< Flaga połączenia asynchronicznego */ | |||
skipping to change at line 213 | skipping to change at line 237 | |||
uin_t uin; /**< Własny numer Gadu-Gadu */ | uin_t uin; /**< Własny numer Gadu-Gadu */ | |||
char *password; /**< Hasło (zwalniane po użyciu) */ | char *password; /**< Hasło (zwalniane po użyciu) */ | |||
int initial_status; /**< Początkowy status */ | int initial_status; /**< Początkowy status */ | |||
int status; /**< Aktualny status */ | int status; /**< Aktualny status */ | |||
char *recv_buf; /**< Bufor na odbierany pakiety */ | char *recv_buf; /**< Bufor na odbierany pakiety */ | |||
int recv_done; /**< Liczba wczytanych bajtów pakietu */ | int recv_done; /**< Liczba wczytanych bajtów pakietu */ | |||
int recv_left; /**< Liczba pozostałych do wczytania bajtów pakietu */ | int recv_left; /**< Liczba pozostałych do wczytania bajtów pakietu */ | |||
int protocol_version; /**< Wersja protokołu */ | int protocol_version; /**< Wersja protokołu (bez flag) */ | |||
char *client_version; /**< Wersja klienta */ | char *client_version; /**< Wersja klienta */ | |||
int last_sysmsg; /**< Numer ostatniej wiadomości systemowej * / | int last_sysmsg; /**< Numer ostatniej wiadomości systemowej * / | |||
char *initial_descr; /**< Początkowy opis statusu */ | char *initial_descr; /**< Początkowy opis statusu */ | |||
void *resolver; /**< Dane prywatne procesu lub wątku rozwiąz ującego nazwę serwera */ | void *resolver; /**< Dane prywatne procesu lub wątku rozwiąz ującego nazwę serwera */ | |||
char *header_buf; /**< Bufor na początek nagłówka pakietu */ | char *header_buf; /**< Bufor na początek nagłówka pakietu */ | |||
unsigned int header_done; /**< Liczba wczytanych bajtów nagłów ka pakietu */ | unsigned int header_done; /**< Liczba wczytanych bajtów nagłów ka pakietu */ | |||
skipping to change at line 240 | skipping to change at line 264 | |||
#endif | #endif | |||
int image_size; /**< Maksymalny rozmiar obsługiwanych obrazk ów w KiB */ | int image_size; /**< Maksymalny rozmiar obsługiwanych obrazk ów w KiB */ | |||
char *userlist_reply; /**< Bufor z odbieraną listą kontaktów */ | char *userlist_reply; /**< Bufor z odbieraną listą kontaktów */ | |||
int userlist_blocks; /**< Liczba części listy kontaktów */ | int userlist_blocks; /**< Liczba części listy kontaktów */ | |||
struct gg_image_queue *images; /**< Lista wczytywanych obrazków */ | struct gg_image_queue *images; /**< Lista wczytywanych obrazków */ | |||
int hash_type; /**< Rodzaj funkcji skrótu hasła */ | int hash_type; /**< Rodzaj funkcji skrótu hasła (\c GG_LOGI N_HASH_GG32 lub \c GG_LOGIN_HASH_SHA1) */ | |||
char *send_buf; /**< Bufor z danymi do wysłania */ | char *send_buf; /**< Bufor z danymi do wysłania */ | |||
int send_left; /**< Liczba bajtów do wysłania */ | int send_left; /**< Liczba bajtów do wysłania */ | |||
struct gg_dcc7 *dcc7_list; /**< Lista połączeń bezpośrednich sk ojarzonych z sesją */ | struct gg_dcc7 *dcc7_list; /**< Lista połączeń bezpośrednich sk ojarzonych z sesją */ | |||
int soft_timeout; /**< Flaga mówiąca, że po przekroczeniu \c t imeout należy wywołać \c gg_watch_fd() */ | int soft_timeout; /**< Flaga mówiąca, że po przekroczeniu \c t imeout należy wywołać \c gg_watch_fd() */ | |||
int protocol_flags; /**< Flagi protokołu */ | ||||
gg_encoding_t encoding; /**< Rodzaj kodowania znaków */ | ||||
gg_resolver_t resolver_type; /**< Sposób rozwiązywania nazw serwe | ||||
rów */ | ||||
int (*resolver_start)(int *fd, void **private_data, const char *host | ||||
name); /**< Funkcja rozpoczynająca rozwiązywanie nazwy */ | ||||
void (*resolver_cleanup)(void **private_data, int force); /**< | ||||
Funkcja zwalniająca zasoby po rozwiązaniu nazwy */ | ||||
int protocol_features; /**< Opcje protokołu */ | ||||
}; | }; | |||
/** | /** | |||
* Połączenie HTTP. | * Połączenie HTTP. | |||
* | * | |||
* Tworzone przez \c gg_http_connect(), zwalniane przez \c gg_http_free(). | * Tworzone przez \c gg_http_connect(), zwalniane przez \c gg_http_free(). | |||
* | * | |||
* \ingroup http | * \ingroup http | |||
*/ | */ | |||
struct gg_http { | struct gg_http { | |||
skipping to change at line 277 | skipping to change at line 311 | |||
char *body; /**< Odebrana strona */ | char *body; /**< Odebrana strona */ | |||
unsigned int body_size; /**< Rozmiar strony */ | unsigned int body_size; /**< Rozmiar strony */ | |||
void *data; /**< Dane prywatne usługi HTTP */ | void *data; /**< Dane prywatne usługi HTTP */ | |||
char *user_data; /**< Dane prywatne użytkownika (nie są zwaln iane) */ | char *user_data; /**< Dane prywatne użytkownika (nie są zwaln iane) */ | |||
void *resolver; /**< Dane prywatne procesu lub wątku rozwiąz ującego nazwę */ | void *resolver; /**< Dane prywatne procesu lub wątku rozwiąz ującego nazwę */ | |||
unsigned int body_done; /**< Liczba odebranych bajtów strony */ | unsigned int body_done; /**< Liczba odebranych bajtów strony */ | |||
gg_resolver_t resolver_type; /**< Sposób rozwiązywania nazw serwe | ||||
rów */ | ||||
int (*resolver_start)(int *fd, void **private_data, const char *host | ||||
name); /**< Funkcja rozpoczynająca rozwiązywanie nazwy */ | ||||
void (*resolver_cleanup)(void **private_data, int force); /**< | ||||
Funkcja zwalniająca zasoby po rozwiązaniu nazwy */ | ||||
}; | }; | |||
/** \cond ignore */ | /** \cond ignore */ | |||
#ifdef __GNUC__ | #ifdef __GNUC__ | |||
#define GG_PACKED __attribute__ ((packed)) | #define GG_PACKED __attribute__ ((packed)) | |||
#ifndef GG_IGNORE_DEPRECATED | ||||
#define GG_DEPRECATED __attribute__ ((deprecated)) | ||||
#else | ||||
#define GG_DEPRECATED | ||||
#endif | ||||
#else | #else | |||
#define GG_PACKED | #define GG_PACKED | |||
#define GG_DEPRECATED | ||||
#endif | #endif | |||
/** \endcond */ | /** \endcond */ | |||
#define GG_MAX_PATH 276 /**< Maksymalny rozmiar nazwy pliku w strukturze \c gg_file_info */ | #define GG_MAX_PATH 276 /**< Maksymalny rozmiar nazwy pliku w strukturze \c gg_file_info */ | |||
/** | /** | |||
* Odpowiednik struktury WIN32_FIND_DATA z API WIN32. | * Odpowiednik struktury WIN32_FIND_DATA z API WIN32. | |||
* | * | |||
* Wykorzystywana przy połączeniach bezpośrednich do wersji Gadu-Gadu 6.x. | * Wykorzystywana przy połączeniach bezpośrednich do wersji Gadu-Gadu 6.x. | |||
skipping to change at line 530 | skipping to change at line 574 | |||
int last_sysmsg; /**< Numer ostatnio odebranej wiadom ości systemowej */ | int last_sysmsg; /**< Numer ostatnio odebranej wiadom ości systemowej */ | |||
uint32_t external_addr; /**< Adres publiczny dla połączeń be zpośrednich (6.x) */ | uint32_t external_addr; /**< Adres publiczny dla połączeń be zpośrednich (6.x) */ | |||
uint16_t external_port; /**< Port publiczny dla połączeń bez pośrednich (6.x) */ | uint16_t external_port; /**< Port publiczny dla połączeń bez pośrednich (6.x) */ | |||
#ifndef DOXYGEN | #ifndef DOXYGEN | |||
int tls; /**< Flaga połączenia szyfrowanego ( nieaktualna) */ | int tls; /**< Flaga połączenia szyfrowanego ( nieaktualna) */ | |||
#endif | #endif | |||
int image_size; /**< Maksymalny rozmiar obsługiwanyc h obrazków w kilobajtach */ | int image_size; /**< Maksymalny rozmiar obsługiwanyc h obrazków w kilobajtach */ | |||
#ifndef DOXYGEN | #ifndef DOXYGEN | |||
int era_omnix; /**< Flaga udawania klienta Era Omni x (nieaktualna) */ | int era_omnix; /**< Flaga udawania klienta Era Omni x (nieaktualna) */ | |||
#endif | #endif | |||
int hash_type; /**< Rodzaj skrótu hasła (domyślnie | int hash_type; /**< Rodzaj skrótu hasła (\c GG_LOGI | |||
SHA1) */ | N_HASH_GG32 lub \c GG_LOGIN_HASH_SHA1, domyślnie SHA1) */ | |||
gg_encoding_t encoding; /**< Rodzaj kodowania używanego w se | ||||
sji (domyślnie CP1250) */ | ||||
gg_resolver_t resolver; /**< Sposób rozwiązywania nazw (patr | ||||
z \ref build-resolver) */ | ||||
int protocol_features; /**< Opcje protokołu (flagi GG_FEATU | ||||
RE_*). */ | ||||
#ifndef DOXYGEN | #ifndef DOXYGEN | |||
char dummy[5 * sizeof(int)]; /**< \internal Miejsce na kilka kole jnych | char dummy[2 * sizeof(int)]; /**< \internal Miejsce na kilka kole jnych | |||
parametrów, żeby wraz z dodawaniem kolejnych | parametrów, żeby wraz z dodawaniem kolejnych | |||
parametrów nie zmieniał się rozmia r struktury */ | parametrów nie zmieniał się rozmia r struktury */ | |||
#endif | #endif | |||
}; | }; | |||
struct gg_session *gg_login(const struct gg_login_params *p); | struct gg_session *gg_login(const struct gg_login_params *p); | |||
void gg_free_session(struct gg_session *sess); | void gg_free_session(struct gg_session *sess); | |||
void gg_logoff(struct gg_session *sess); | void gg_logoff(struct gg_session *sess); | |||
int gg_change_status(struct gg_session *sess, int status); | int gg_change_status(struct gg_session *sess, int status); | |||
skipping to change at line 558 | skipping to change at line 605 | |||
int gg_send_message_confer(struct gg_session *sess, int msgclass, int recip ients_count, uin_t *recipients, const unsigned char *message); | int gg_send_message_confer(struct gg_session *sess, int msgclass, int recip ients_count, uin_t *recipients, const unsigned char *message); | |||
int gg_send_message_confer_richtext(struct gg_session *sess, int msgclass, int recipients_count, uin_t *recipients, const unsigned char *message, cons t unsigned char *format, int formatlen); | int gg_send_message_confer_richtext(struct gg_session *sess, int msgclass, int recipients_count, uin_t *recipients, const unsigned char *message, cons t unsigned char *format, int formatlen); | |||
int gg_send_message_ctcp(struct gg_session *sess, int msgclass, uin_t recip ient, const unsigned char *message, int message_len); | int gg_send_message_ctcp(struct gg_session *sess, int msgclass, uin_t recip ient, const unsigned char *message, int message_len); | |||
int gg_ping(struct gg_session *sess); | int gg_ping(struct gg_session *sess); | |||
int gg_userlist_request(struct gg_session *sess, char type, const char *req uest); | int gg_userlist_request(struct gg_session *sess, char type, const char *req uest); | |||
int gg_image_request(struct gg_session *sess, uin_t recipient, int size, ui nt32_t crc32); | int gg_image_request(struct gg_session *sess, uin_t recipient, int size, ui nt32_t crc32); | |||
int gg_image_reply(struct gg_session *sess, uin_t recipient, const char *fi lename, const char *image, int size); | int gg_image_reply(struct gg_session *sess, uin_t recipient, const char *fi lename, const char *image, int size); | |||
uint32_t gg_crc32(uint32_t crc, const unsigned char *buf, int len); | uint32_t gg_crc32(uint32_t crc, const unsigned char *buf, int len); | |||
int gg_session_set_resolver(struct gg_session *gs, gg_resolver_t type); | ||||
gg_resolver_t gg_session_get_resolver(struct gg_session *gs); | ||||
int gg_session_set_custom_resolver(struct gg_session *gs, int (*resolver_st | ||||
art)(int*, void**, const char*), void (*resolver_cleanup)(void**, int)); | ||||
int gg_http_set_resolver(struct gg_http *gh, gg_resolver_t type); | ||||
gg_resolver_t gg_http_get_resolver(struct gg_http *gh); | ||||
int gg_http_set_custom_resolver(struct gg_http *gh, int (*resolver_start)(i | ||||
nt*, void**, const char*), void (*resolver_cleanup)(void**, int)); | ||||
int gg_global_set_resolver(gg_resolver_t type); | ||||
gg_resolver_t gg_global_get_resolver(void); | ||||
int gg_global_set_custom_resolver(int (*resolver_start)(int*, void**, const | ||||
char*), void (*resolver_cleanup)(void**, int)); | ||||
/** | /** | |||
* Rodzaj zdarzenia. | * Rodzaj zdarzenia. | |||
* | * | |||
* \ingroup events | * \ingroup events | |||
*/ | */ | |||
enum gg_event_t { | enum gg_event_t { | |||
GG_EVENT_NONE = 0, /**< Nie wydarzyło się nic wartego u wagi */ | GG_EVENT_NONE = 0, /**< Nie wydarzyło się nic wartego u wagi */ | |||
GG_EVENT_MSG, /**< \brief Otrzymano wiadomość. Prz ekazuje również wiadomości systemowe od numeru 0. */ | GG_EVENT_MSG, /**< \brief Otrzymano wiadomość. Prz ekazuje również wiadomości systemowe od numeru 0. */ | |||
GG_EVENT_NOTIFY, /**< \brief Informacja o statusach o sób z listy kontaktów (przed 6.0). Zdarzenie należy obsługiwać, jeśli planu je się używać protokołu w wersji starszej niż domyślna. */ | GG_EVENT_NOTIFY, /**< \brief Informacja o statusach o sób z listy kontaktów (przed 6.0). Zdarzenie należy obsługiwać, jeśli planu je się używać protokołu w wersji starszej niż domyślna. */ | |||
GG_EVENT_NOTIFY_DESCR, /**< \brief Informacja o statusie op isowym osoby z listy kontaktów (przed 6.0). Zdarzenie należy obsługiwać, je śli planuje się używać protokołu w wersji starszej niż domyślna. */ | GG_EVENT_NOTIFY_DESCR, /**< \brief Informacja o statusie op isowym osoby z listy kontaktów (przed 6.0). Zdarzenie należy obsługiwać, je śli planuje się używać protokołu w wersji starszej niż domyślna. */ | |||
skipping to change at line 604 | skipping to change at line 663 | |||
GG_EVENT_DCC_ACK, /**< Potwierdzenie transmisji w połą czeniu bezpośrednim (6.x) */ | GG_EVENT_DCC_ACK, /**< Potwierdzenie transmisji w połą czeniu bezpośrednim (6.x) */ | |||
GG_EVENT_DCC7_NEW, /**< Nowe połączenie bezpośrednie (7 .x) */ | GG_EVENT_DCC7_NEW, /**< Nowe połączenie bezpośrednie (7 .x) */ | |||
GG_EVENT_DCC7_ACCEPT, /**< Zaakceptowano połączenie bezpoś rednie (7.x), nowy deskryptor */ | GG_EVENT_DCC7_ACCEPT, /**< Zaakceptowano połączenie bezpoś rednie (7.x), nowy deskryptor */ | |||
GG_EVENT_DCC7_REJECT, /**< Odrzucono połączenie bezpośredn ie (7.x) */ | GG_EVENT_DCC7_REJECT, /**< Odrzucono połączenie bezpośredn ie (7.x) */ | |||
GG_EVENT_DCC7_CONNECTED, /**< Zestawiono połączenie bezpośred nie (7.x), nowy deskryptor */ | GG_EVENT_DCC7_CONNECTED, /**< Zestawiono połączenie bezpośred nie (7.x), nowy deskryptor */ | |||
GG_EVENT_DCC7_ERROR, /**< Błąd połączenia bezpośredniego (7.x) */ | GG_EVENT_DCC7_ERROR, /**< Błąd połączenia bezpośredniego (7.x) */ | |||
GG_EVENT_DCC7_DONE, /**< Zakończono połączenie bezpośred nie (7.x) */ | GG_EVENT_DCC7_DONE, /**< Zakończono połączenie bezpośred nie (7.x) */ | |||
GG_EVENT_DCC7_PENDING, /**< Trwa próba połączenia bezpośred niego (7.x), nowy deskryptor */ | GG_EVENT_DCC7_PENDING, /**< Trwa próba połączenia bezpośred niego (7.x), nowy deskryptor */ | |||
GG_EVENT_XML_EVENT /**< Otrzymano komunikat systemowy ( | GG_EVENT_XML_EVENT, /**< Otrzymano komunikat systemowy ( | |||
7.7) */ | 7.7) */ | |||
GG_EVENT_DISCONNECT_ACK, /**< \brief Potwierdzenie zakończeni | ||||
a sesji. Informuje o tym, że zmiana stanu na niedostępny z opisem dotarła d | ||||
o serwera i można zakończyć połączenie TCP. */ | ||||
}; | }; | |||
#define GG_EVENT_SEARCH50_REPLY GG_EVENT_PUBDIR50_SEARCH_REPLY | #define GG_EVENT_SEARCH50_REPLY GG_EVENT_PUBDIR50_SEARCH_REPLY | |||
/** | /** | |||
* Powód nieudanego połączenia. | * Powód nieudanego połączenia. | |||
*/ | */ | |||
enum gg_failure_t { | enum gg_failure_t { | |||
GG_FAILURE_RESOLVING = 1, /**< Nie znaleziono serwera */ | GG_FAILURE_RESOLVING = 1, /**< Nie znaleziono serwera */ | |||
GG_FAILURE_CONNECTING, /**< Błąd połączenia */ | GG_FAILURE_CONNECTING, /**< Błąd połączenia */ | |||
skipping to change at line 659 | skipping to change at line 719 | |||
GG_ERROR_DCC7_REFUSED /**< Połączenie odrzucone */ | GG_ERROR_DCC7_REFUSED /**< Połączenie odrzucone */ | |||
}; | }; | |||
/** | /** | |||
* Pole zapytania lub odpowiedzi katalogu publicznego. | * Pole zapytania lub odpowiedzi katalogu publicznego. | |||
*/ | */ | |||
struct gg_pubdir50_entry { | struct gg_pubdir50_entry { | |||
int num; /**< Numer wyniku */ | int num; /**< Numer wyniku */ | |||
char *field; /**< Nazwa pola */ | char *field; /**< Nazwa pola */ | |||
char *value; /**< Wartość pola */ | char *value; /**< Wartość pola */ | |||
}; | } /* GG_DEPRECATED */; | |||
/** | /** | |||
* Zapytanie lub odpowiedź katalogu publicznego. | * Zapytanie lub odpowiedź katalogu publicznego. | |||
* | * | |||
* Patrz \c gg_pubdir50_t. | * Patrz \c gg_pubdir50_t. | |||
*/ | */ | |||
struct gg_pubdir50_s { | struct gg_pubdir50_s { | |||
int count; /**< Liczba wyników odpowiedzi */ | int count; /**< Liczba wyników odpowiedzi */ | |||
uin_t next; /**< Numer początkowy następnego zapytania */ | uin_t next; /**< Numer początkowy następnego zapytania */ | |||
int type; /**< Rodzaj zapytania */ | int type; /**< Rodzaj zapytania */ | |||
uint32_t seq; /**< Numer sekwencyjny */ | uint32_t seq; /**< Numer sekwencyjny */ | |||
struct gg_pubdir50_entry *entries; /**< Pola zapytania lub odpo wiedzi */ | struct gg_pubdir50_entry *entries; /**< Pola zapytania lub odpo wiedzi */ | |||
int entries_count; /**< Liczba pól */ | int entries_count; /**< Liczba pól */ | |||
}; | } /* GG_DEPRECATED */; | |||
/** | /** | |||
* Zapytanie lub odpowiedź katalogu publicznego. | * Zapytanie lub odpowiedź katalogu publicznego. | |||
* | * | |||
* Do pól nie należy się odwoływać bezpośrednio -- wszystkie niezbędne | * Do pól nie należy się odwoływać bezpośrednio -- wszystkie niezbędne | |||
* informacje są dostępne za pomocą funkcji \c gg_pubdir50_* | * informacje są dostępne za pomocą funkcji \c gg_pubdir50_* | |||
*/ | */ | |||
typedef struct gg_pubdir50_s *gg_pubdir50_t; | typedef struct gg_pubdir50_s *gg_pubdir50_t; | |||
/** | /** | |||
skipping to change at line 698 | skipping to change at line 758 | |||
int msgclass; /**< Klasa wiadomości */ | int msgclass; /**< Klasa wiadomości */ | |||
time_t time; /**< Czas nadania */ | time_t time; /**< Czas nadania */ | |||
unsigned char *message; /**< Treść wiadomości */ | unsigned char *message; /**< Treść wiadomości */ | |||
int recipients_count; /**< Liczba odbiorców konferencji */ | int recipients_count; /**< Liczba odbiorców konferencji */ | |||
uin_t *recipients; /**< Odbiorcy konferencji */ | uin_t *recipients; /**< Odbiorcy konferencji */ | |||
int formats_length; /**< Długość informacji o formatowaniu tekst u */ | int formats_length; /**< Długość informacji o formatowaniu tekst u */ | |||
void *formats; /**< Informacje o formatowaniu tekstu */ | void *formats; /**< Informacje o formatowaniu tekstu */ | |||
uint32_t seq; /**< Numer sekwencyjny wiadomości */ | uint32_t seq; /**< Numer sekwencyjny wiadomości */ | |||
char *xhtml_message; /**< Treść wiadomości w formacie XHTML (może | ||||
być równe \c NULL, jeśli wiadomość nie zawiera treści XHTML) */ | ||||
}; | }; | |||
/** | /** | |||
* Opis zdarzenia \c GG_EVENT_NOTIFY_DESCR. | * Opis zdarzenia \c GG_EVENT_NOTIFY_DESCR. | |||
*/ | */ | |||
struct gg_event_notify_descr { | struct gg_event_notify_descr { | |||
struct gg_notify_reply *notify; /**< Informacje o liście kontaktów * / | struct gg_notify_reply *notify; /**< Informacje o liście kontaktów * / | |||
char *descr; /**< Opis status */ | char *descr; /**< Opis status */ | |||
}; | }; | |||
skipping to change at line 806 | skipping to change at line 868 | |||
/** | /** | |||
* Opis zdarzenia \c GG_EVENT_DCC7_CONNECTED. | * Opis zdarzenia \c GG_EVENT_DCC7_CONNECTED. | |||
*/ | */ | |||
struct gg_event_dcc7_connected { | struct gg_event_dcc7_connected { | |||
struct gg_dcc7 *dcc7; /**< Struktura połączenia */ | struct gg_dcc7 *dcc7; /**< Struktura połączenia */ | |||
// XXX czy coś się przyda? | // XXX czy coś się przyda? | |||
}; | }; | |||
/** | /** | |||
* Opis zdarzenia \c GG_EVENT_DCC7_PENDING. | ||||
*/ | ||||
struct gg_event_dcc7_pending { | ||||
struct gg_dcc7 *dcc7; /**< Struktura połączenia */ | ||||
}; | ||||
/** | ||||
* Opis zdarzenia \c GG_EVENT_DCC7_REJECT. | * Opis zdarzenia \c GG_EVENT_DCC7_REJECT. | |||
*/ | */ | |||
struct gg_event_dcc7_reject { | struct gg_event_dcc7_reject { | |||
struct gg_dcc7 *dcc7; /**< Struktura połączenia */ | struct gg_dcc7 *dcc7; /**< Struktura połączenia */ | |||
int reason; /**< powód odrzucenia */ | int reason; /**< powód odrzucenia */ | |||
}; | }; | |||
/** | /** | |||
* Opis zdarzenia \c GG_EVENT_DCC7_ACCEPT. | * Opis zdarzenia \c GG_EVENT_DCC7_ACCEPT. | |||
*/ | */ | |||
skipping to change at line 849 | skipping to change at line 918 | |||
struct gg_event_image_reply image_reply; /**< Odpowiedź z obr azkiem (\c GG_EVENT_IMAGE_REPLY) */ | struct gg_event_image_reply image_reply; /**< Odpowiedź z obr azkiem (\c GG_EVENT_IMAGE_REPLY) */ | |||
struct gg_event_userlist userlist; /**< Odpowiedź listy kontakt ów (\c GG_EVENT_USERLIST) */ | struct gg_event_userlist userlist; /**< Odpowiedź listy kontakt ów (\c GG_EVENT_USERLIST) */ | |||
gg_pubdir50_t pubdir50; /**< Odpowiedź katalogu publicznego (\c GG_E VENT_PUBDIR50_*) */ | gg_pubdir50_t pubdir50; /**< Odpowiedź katalogu publicznego (\c GG_E VENT_PUBDIR50_*) */ | |||
struct gg_event_xml_event xml_event; /**< Zdarzenie systemowe (\c GG_EVENT_XML_EVENT) */ | struct gg_event_xml_event xml_event; /**< Zdarzenie systemowe (\c GG_EVENT_XML_EVENT) */ | |||
struct gg_dcc *dcc_new; /**< Nowe połączenie bezpośrednie (\c GG_EVE NT_DCC_NEW) */ | struct gg_dcc *dcc_new; /**< Nowe połączenie bezpośrednie (\c GG_EVE NT_DCC_NEW) */ | |||
enum gg_error_t dcc_error; /**< Błąd połączenia bezpośredniego (\c GG_EVENT_DCC_ERROR) */ | enum gg_error_t dcc_error; /**< Błąd połączenia bezpośredniego (\c GG_EVENT_DCC_ERROR) */ | |||
struct gg_event_dcc_voice_data dcc_voice_data; /**< Dane połączenia głosowego (\c GG_EVENT_DCC_VOICE_DATA) */ | struct gg_event_dcc_voice_data dcc_voice_data; /**< Dane połączenia głosowego (\c GG_EVENT_DCC_VOICE_DATA) */ | |||
struct gg_dcc7 *dcc7_new; /**< Nowe połączenie bezpośrednie (\ c GG_EVENT_DCC7_NEW) */ | struct gg_dcc7 *dcc7_new; /**< Nowe połączenie bezpośrednie (\ c GG_EVENT_DCC7_NEW) */ | |||
enum gg_error_t dcc7_error; /**< Błąd połączenia bezpośredniego (\c GG_EVENT_DCC7_ERROR) */ | enum gg_error_t dcc7_error; /**< Błąd połączenia bezpośredniego (\c GG_EVENT_DCC7_ERROR) */ | |||
struct gg_event_dcc7_connected dcc7_connected; /**< Informacja o ze stawieniu połączenia bezpośredniego (\c GG_EVENT_DCC7_CONNECTED) */ | struct gg_event_dcc7_connected dcc7_connected; /**< Informacja o ze stawieniu połączenia bezpośredniego (\c GG_EVENT_DCC7_CONNECTED) */ | |||
struct gg_event_dcc7_pending dcc7_pending; /**< Trwa próba połą czenia bezpośredniego (\c GG_EVENT_DCC7_PENDING) */ | ||||
struct gg_event_dcc7_reject dcc7_reject; /**< Odrzucono połąc zenia bezpośredniego (\c GG_EVENT_DCC7_REJECT) */ | struct gg_event_dcc7_reject dcc7_reject; /**< Odrzucono połąc zenia bezpośredniego (\c GG_EVENT_DCC7_REJECT) */ | |||
struct gg_event_dcc7_accept dcc7_accept; /**< Zaakceptowano p ołączenie bezpośrednie (\c GG_EVENT_DCC7_ACCEPT) */ | struct gg_event_dcc7_accept dcc7_accept; /**< Zaakceptowano p ołączenie bezpośrednie (\c GG_EVENT_DCC7_ACCEPT) */ | |||
}; | }; | |||
/** | /** | |||
* Opis zdarzenia. | * Opis zdarzenia. | |||
* | * | |||
* Zwracany przez funkcje \c gg_watch_fd(), \c gg_dcc_watch_fd() | * Zwracany przez funkcje \c gg_watch_fd(), \c gg_dcc_watch_fd() | |||
* i \c gg_dcc7_watch_fd(). Po przeanalizowaniu należy zwolnić | * i \c gg_dcc7_watch_fd(). Po przeanalizowaniu należy zwolnić | |||
* za pomocą \c gg_event_free(). | * za pomocą \c gg_event_free(). | |||
skipping to change at line 1139 | skipping to change at line 1209 | |||
char *nickname; | char *nickname; | |||
char *first_name; | char *first_name; | |||
char *last_name; | char *last_name; | |||
char *city; | char *city; | |||
int gender; | int gender; | |||
int min_birth; | int min_birth; | |||
int max_birth; | int max_birth; | |||
char *email; | char *email; | |||
char *phone; | char *phone; | |||
uin_t uin; | uin_t uin; | |||
}; | } /* GG_DEPRECATED */; | |||
struct gg_search { | struct gg_search { | |||
int count; | int count; | |||
struct gg_search_result *results; | struct gg_search_result *results; | |||
}; | } GG_DEPRECATED; | |||
struct gg_search_result { | struct gg_search_result { | |||
uin_t uin; | uin_t uin; | |||
char *first_name; | char *first_name; | |||
char *last_name; | char *last_name; | |||
char *nickname; | char *nickname; | |||
int born; | int born; | |||
int gender; | int gender; | |||
char *city; | char *city; | |||
int active; | int active; | |||
}; | } GG_DEPRECATED; | |||
#define GG_GENDER_NONE 0 | #define GG_GENDER_NONE 0 | |||
#define GG_GENDER_FEMALE 1 | #define GG_GENDER_FEMALE 1 | |||
#define GG_GENDER_MALE 2 | #define GG_GENDER_MALE 2 | |||
struct gg_http *gg_search(const struct gg_search_request *r, int async); | struct gg_http *gg_search(const struct gg_search_request *r, int async) GG_ | |||
int gg_search_watch_fd(struct gg_http *f); | DEPRECATED; | |||
void gg_free_search(struct gg_http *f); | int gg_search_watch_fd(struct gg_http *f) GG_DEPRECATED; | |||
void gg_free_search(struct gg_http *f) GG_DEPRECATED; | ||||
#define gg_search_free gg_free_search | #define gg_search_free gg_free_search | |||
const struct gg_search_request *gg_search_request_mode_0(char *nickname, ch | const struct gg_search_request *gg_search_request_mode_0(char *nickname, ch | |||
ar *first_name, char *last_name, char *city, int gender, int min_birth, int | ar *first_name, char *last_name, char *city, int gender, int min_birth, int | |||
max_birth, int active, int start); | max_birth, int active, int start) GG_DEPRECATED; | |||
const struct gg_search_request *gg_search_request_mode_1(char *email, int a | const struct gg_search_request *gg_search_request_mode_1(char *email, int a | |||
ctive, int start); | ctive, int start) GG_DEPRECATED; | |||
const struct gg_search_request *gg_search_request_mode_2(char *phone, int a | const struct gg_search_request *gg_search_request_mode_2(char *phone, int a | |||
ctive, int start); | ctive, int start) GG_DEPRECATED; | |||
const struct gg_search_request *gg_search_request_mode_3(uin_t uin, int act | const struct gg_search_request *gg_search_request_mode_3(uin_t uin, int act | |||
ive, int start); | ive, int start) GG_DEPRECATED; | |||
void gg_search_request_free(struct gg_search_request *r); | void gg_search_request_free(struct gg_search_request *r) GG_DEPRECATED; | |||
struct gg_http *gg_register(const char *email, const char *password, int as | struct gg_http *gg_register(const char *email, const char *password, int as | |||
ync); | ync) GG_DEPRECATED; | |||
struct gg_http *gg_register2(const char *email, const char *password, const | struct gg_http *gg_register2(const char *email, const char *password, const | |||
char *qa, int async); | char *qa, int async) GG_DEPRECATED; | |||
struct gg_http *gg_unregister(uin_t uin, const char *password, const char * | struct gg_http *gg_unregister(uin_t uin, const char *password, const char * | |||
email, int async); | email, int async) GG_DEPRECATED; | |||
struct gg_http *gg_unregister2(uin_t uin, const char *password, const char | struct gg_http *gg_unregister2(uin_t uin, const char *password, const char | |||
*qa, int async); | *qa, int async) GG_DEPRECATED; | |||
struct gg_http *gg_remind_passwd(uin_t uin, int async); | struct gg_http *gg_remind_passwd(uin_t uin, int async) GG_DEPRECATED; | |||
struct gg_http *gg_remind_passwd2(uin_t uin, const char *tokenid, const cha | struct gg_http *gg_remind_passwd2(uin_t uin, const char *tokenid, const cha | |||
r *tokenval, int async); | r *tokenval, int async) GG_DEPRECATED; | |||
struct gg_http *gg_change_passwd(uin_t uin, const char *passwd, const char | struct gg_http *gg_change_passwd(uin_t uin, const char *passwd, const char | |||
*newpasswd, const char *newemail, int async); | *newpasswd, const char *newemail, int async) GG_DEPRECATED; | |||
struct gg_http *gg_change_passwd2(uin_t uin, const char *passwd, const char | struct gg_http *gg_change_passwd2(uin_t uin, const char *passwd, const char | |||
*newpasswd, const char *email, const char *newemail, int async); | *newpasswd, const char *email, const char *newemail, int async) GG_DEPRECA | |||
struct gg_http *gg_change_passwd3(uin_t uin, const char *passwd, const char | TED; | |||
*newpasswd, const char *qa, int async); | struct gg_http *gg_change_passwd3(uin_t uin, const char *passwd, const char | |||
*newpasswd, const char *qa, int async) GG_DEPRECATED; | ||||
struct gg_change_info_request { | struct gg_change_info_request { | |||
char *first_name; | char *first_name; | |||
char *last_name; | char *last_name; | |||
char *nickname; | char *nickname; | |||
char *email; | char *email; | |||
int born; | int born; | |||
int gender; | int gender; | |||
char *city; | char *city; | |||
}; | } /* GG_DEPRECATED */; | |||
struct gg_change_info_request *gg_change_info_request_new(const char *first | struct gg_change_info_request *gg_change_info_request_new(const char *first | |||
_name, const char *last_name, const char *nickname, const char *email, int | _name, const char *last_name, const char *nickname, const char *email, int | |||
born, int gender, const char *city); | born, int gender, const char *city) GG_DEPRECATED; | |||
void gg_change_info_request_free(struct gg_change_info_request *r); | void gg_change_info_request_free(struct gg_change_info_request *r) GG_DEPRE | |||
CATED; | ||||
struct gg_http *gg_change_info(uin_t uin, const char *passwd, const struct gg_change_info_request *request, int async); | struct gg_http *gg_change_info(uin_t uin, const char *passwd, const struct gg_change_info_request *request, int async) GG_DEPRECATED; | |||
#define gg_change_pubdir_watch_fd gg_pubdir_watch_fd | #define gg_change_pubdir_watch_fd gg_pubdir_watch_fd | |||
#define gg_change_pubdir_free gg_pubdir_free | #define gg_change_pubdir_free gg_pubdir_free | |||
#define gg_free_change_pubdir gg_pubdir_free | #define gg_free_change_pubdir gg_pubdir_free | |||
struct gg_http *gg_userlist_get(uin_t uin, const char *password, int async) | struct gg_http *gg_userlist_get(uin_t uin, const char *password, int async) | |||
; | GG_DEPRECATED; | |||
int gg_userlist_get_watch_fd(struct gg_http *f); | int gg_userlist_get_watch_fd(struct gg_http *f) GG_DEPRECATED; | |||
void gg_userlist_get_free(struct gg_http *f); | void gg_userlist_get_free(struct gg_http *f) GG_DEPRECATED; | |||
struct gg_http *gg_userlist_put(uin_t uin, const char *password, const char | struct gg_http *gg_userlist_put(uin_t uin, const char *password, const char | |||
*contacts, int async); | *contacts, int async) GG_DEPRECATED; | |||
int gg_userlist_put_watch_fd(struct gg_http *f); | int gg_userlist_put_watch_fd(struct gg_http *f) GG_DEPRECATED; | |||
void gg_userlist_put_free(struct gg_http *f); | void gg_userlist_put_free(struct gg_http *f) GG_DEPRECATED; | |||
struct gg_http *gg_userlist_remove(uin_t uin, const char *password, int asy | struct gg_http *gg_userlist_remove(uin_t uin, const char *password, int asy | |||
nc); | nc) GG_DEPRECATED; | |||
int gg_userlist_remove_watch_fd(struct gg_http *f); | int gg_userlist_remove_watch_fd(struct gg_http *f) GG_DEPRECATED; | |||
void gg_userlist_remove_free(struct gg_http *f); | void gg_userlist_remove_free(struct gg_http *f) GG_DEPRECATED; | |||
/** \endcond */ | int gg_pubdir50_handle_reply(struct gg_event *e, const char *packet, int le | |||
ngth) GG_DEPRECATED; | ||||
int gg_pubdir50_handle_reply(struct gg_event *e, const char *packet, int le | ||||
ngth); | ||||
int gg_file_hash_sha1(int fd, uint8_t *result); | /** \endcond */ | |||
#ifdef GG_CONFIG_HAVE_PTHREAD | ||||
int gg_resolve_pthread(int *fd, void **resolver, const char *hostname); | ||||
void gg_resolve_pthread_cleanup(void *resolver, int kill); | ||||
#endif | ||||
#ifdef _WIN32 | ||||
int gg_thread_socket(int thread_id, int socket); | ||||
#endif | ||||
int gg_resolve(int *fd, int *pid, const char *hostname); | int gg_file_hash_sha1(int fd, uint8_t *result) GG_DEPRECATED; | |||
#ifdef __GNUC__ | #ifdef __GNUC__ | |||
char *gg_saprintf(const char *format, ...) __attribute__ ((format (printf, 1, 2))); | char *gg_saprintf(const char *format, ...) __attribute__ ((format (printf, 1, 2))) GG_DEPRECATED; | |||
#else | #else | |||
char *gg_saprintf(const char *format, ...); | char *gg_saprintf(const char *format, ...) GG_DEPRECATED; | |||
#endif | #endif | |||
char *gg_vsaprintf(const char *format, va_list ap); | char *gg_vsaprintf(const char *format, va_list ap) GG_DEPRECATED; | |||
#define gg_alloc_sprintf gg_saprintf | #define gg_alloc_sprintf gg_saprintf | |||
char *gg_get_line(char **ptr); | char *gg_get_line(char **ptr) GG_DEPRECATED; | |||
int gg_connect(void *addr, int port, int async); | int gg_connect(void *addr, int port, int async) GG_DEPRECATED; | |||
struct in_addr *gg_gethostbyname(const char *hostname); | struct in_addr *gg_gethostbyname(const char *hostname) GG_DEPRECATED; | |||
char *gg_read_line(int sock, char *buf, int length); | char *gg_read_line(int sock, char *buf, int length) GG_DEPRECATED; | |||
void gg_chomp(char *line); | void gg_chomp(char *line) GG_DEPRECATED; | |||
char *gg_urlencode(const char *str); | char *gg_urlencode(const char *str) GG_DEPRECATED; | |||
int gg_http_hash(const char *format, ...); | int gg_http_hash(const char *format, ...) GG_DEPRECATED; | |||
void gg_http_free_fields(struct gg_http *h); | void gg_http_free_fields(struct gg_http *h) GG_DEPRECATED; | |||
int gg_read(struct gg_session *sess, char *buf, int length); | int gg_read(struct gg_session *sess, char *buf, int length) GG_DEPRECATED; | |||
int gg_write(struct gg_session *sess, const char *buf, int length); | int gg_write(struct gg_session *sess, const char *buf, int length) GG_DEPRE | |||
void *gg_recv_packet(struct gg_session *sess); | CATED; | |||
int gg_send_packet(struct gg_session *sess, int type, ...); | void *gg_recv_packet(struct gg_session *sess) GG_DEPRECATED; | |||
unsigned int gg_login_hash(const unsigned char *password, unsigned int seed | int gg_send_packet(struct gg_session *sess, int type, ...) GG_DEPRECATED; | |||
); | unsigned int gg_login_hash(const unsigned char *password, unsigned int seed | |||
void gg_login_hash_sha1(const char *password, uint32_t seed, uint8_t *resul | ) GG_DEPRECATED; | |||
t); | void gg_login_hash_sha1(const char *password, uint32_t seed, uint8_t *resul | |||
t) GG_DEPRECATED; | ||||
uint32_t gg_fix32(uint32_t x); | uint32_t gg_fix32(uint32_t x); | |||
uint16_t gg_fix16(uint16_t x); | uint16_t gg_fix16(uint16_t x); | |||
#define fix16 gg_fix16 | #define fix16 gg_fix16 | |||
#define fix32 gg_fix32 | #define fix32 gg_fix32 | |||
char *gg_proxy_auth(void); | char *gg_proxy_auth(void) GG_DEPRECATED; | |||
char *gg_base64_encode(const char *buf); | char *gg_base64_encode(const char *buf) GG_DEPRECATED; | |||
char *gg_base64_decode(const char *buf); | char *gg_base64_decode(const char *buf) GG_DEPRECATED; | |||
int gg_image_queue_remove(struct gg_session *s, struct gg_image_queue *q, i | int gg_image_queue_remove(struct gg_session *s, struct gg_image_queue *q, i | |||
nt freeq); | nt freeq) GG_DEPRECATED; | |||
/** | /** | |||
* Kolejka odbieranych obrazków. | * Kolejka odbieranych obrazków. | |||
*/ | */ | |||
struct gg_image_queue { | struct gg_image_queue { | |||
uin_t sender; /**< Nadawca obrazka */ | uin_t sender; /**< Nadawca obrazka */ | |||
uint32_t size; /**< Rozmiar obrazka */ | uint32_t size; /**< Rozmiar obrazka */ | |||
uint32_t crc32; /**< Suma kontrolna CRC32 */ | uint32_t crc32; /**< Suma kontrolna CRC32 */ | |||
char *filename; /**< Nazwa pliku */ | char *filename; /**< Nazwa pliku */ | |||
char *image; /**< Bufor z odebranymi danymi */ | char *image; /**< Bufor z odebranymi danymi */ | |||
uint32_t done; /**< Rozmiar odebranych danych */ | uint32_t done; /**< Rozmiar odebranych danych */ | |||
struct gg_image_queue *next; /**< Kolejny element listy */ | struct gg_image_queue *next; /**< Kolejny element listy */ | |||
}; | } GG_DEPRECATED; | |||
int gg_dcc7_handle_id(struct gg_session *sess, struct gg_event *e, void *pa | int gg_dcc7_handle_id(struct gg_session *sess, struct gg_event *e, void *pa | |||
yload, int len); | yload, int len) GG_DEPRECATED; | |||
int gg_dcc7_handle_new(struct gg_session *sess, struct gg_event *e, void *p | int gg_dcc7_handle_new(struct gg_session *sess, struct gg_event *e, void *p | |||
ayload, int len); | ayload, int len) GG_DEPRECATED; | |||
int gg_dcc7_handle_info(struct gg_session *sess, struct gg_event *e, void * | int gg_dcc7_handle_info(struct gg_session *sess, struct gg_event *e, void * | |||
payload, int len); | payload, int len) GG_DEPRECATED; | |||
int gg_dcc7_handle_accept(struct gg_session *sess, struct gg_event *e, void | int gg_dcc7_handle_accept(struct gg_session *sess, struct gg_event *e, void | |||
*payload, int len); | *payload, int len) GG_DEPRECATED; | |||
int gg_dcc7_handle_reject(struct gg_session *sess, struct gg_event *e, void | int gg_dcc7_handle_reject(struct gg_session *sess, struct gg_event *e, void | |||
*payload, int len); | *payload, int len) GG_DEPRECATED; | |||
#define GG_APPMSG_HOST "appmsg.gadu-gadu.pl" | #define GG_APPMSG_HOST "appmsg.gadu-gadu.pl" | |||
#define GG_APPMSG_PORT 80 | #define GG_APPMSG_PORT 80 | |||
#define GG_PUBDIR_HOST "pubdir.gadu-gadu.pl" | #define GG_PUBDIR_HOST "pubdir.gadu-gadu.pl" | |||
#define GG_PUBDIR_PORT 80 | #define GG_PUBDIR_PORT 80 | |||
#define GG_REGISTER_HOST "register.gadu-gadu.pl" | #define GG_REGISTER_HOST "register.gadu-gadu.pl" | |||
#define GG_REGISTER_PORT 80 | #define GG_REGISTER_PORT 80 | |||
#define GG_REMIND_HOST "retr.gadu-gadu.pl" | #define GG_REMIND_HOST "retr.gadu-gadu.pl" | |||
#define GG_REMIND_PORT 80 | #define GG_REMIND_PORT 80 | |||
#define GG_DEFAULT_PORT 8074 | #define GG_DEFAULT_PORT 8074 | |||
#define GG_HTTPS_PORT 443 | #define GG_HTTPS_PORT 443 | |||
#define GG_HTTP_USERAGENT "Mozilla/4.7 [en] (Win98; I)" | #define GG_HTTP_USERAGENT "Mozilla/4.7 [en] (Win98; I)" | |||
#define GG_DEFAULT_CLIENT_VERSION "7, 7, 0, 3351" | #define GG_DEFAULT_CLIENT_VERSION "8.0.0.7669" | |||
#define GG_DEFAULT_PROTOCOL_VERSION 0x2a | #define GG_DEFAULT_PROTOCOL_VERSION 0x2e | |||
#define GG_DEFAULT_TIMEOUT 30 | #define GG_DEFAULT_TIMEOUT 30 | |||
#define GG_HAS_AUDIO_MASK 0x40000000 | #define GG_HAS_AUDIO_MASK 0x40000000 | |||
#define GG_HAS_AUDIO7_MASK 0x20000000 | #define GG_HAS_AUDIO7_MASK 0x20000000 | |||
#define GG_ERA_OMNIX_MASK 0x04000000 | #define GG_ERA_OMNIX_MASK 0x04000000 | |||
#define GG_LIBGADU_VERSION "1.8.2" | #define GG_LIBGADU_VERSION "1.9.0" | |||
#ifndef DOXYGEN | ||||
#define GG_FEATURE_MSG77 0x01 | ||||
#define GG_FEATURE_STATUS77 0x02 | ||||
#define GG_FEATURE_DND_FFC 0x10 | ||||
#define GG_FEATURE_IMAGE_DESCR 0x20 | ||||
/* Poniższe makra zostały zachowane dla zgodności API */ | ||||
#define GG_FEATURE_MSG80 0 | ||||
#define GG_FEATURE_STATUS80 0 | ||||
#define GG_FEATURE_STATUS80BETA 0 | ||||
#define GG_FEATURE_ALL (GG_FEATURE_DND_FFC | GG_FEATURE_IMA | ||||
GE_DESCR) | ||||
#else | ||||
/** | ||||
* \ingroup login | ||||
* | ||||
* Flagi opcji protokołu. | ||||
*/ | ||||
enum { | ||||
GG_FEATURE_MSG77, /**< Klient życzy sobie otrzymywać wiadomośc | ||||
i zgodnie z protokołem 7.7 */ | ||||
GG_FEATURE_STATUS77, /**< Klient życzy sobie otrzymywać zmiany st | ||||
anu zgodnie z protokołem 7.7 */ | ||||
GG_FEATURE_DND_FFC, /**< Klient obsługuje statusy "nie przeszkad | ||||
zać" i "poGGadaj ze mną" */ | ||||
GG_FEATURE_IMAGE_DESCR, /**< Klient obsługuje opisy graficzne oraz f | ||||
lagę \c GG_STATUS80_DESCR_MASK */ | ||||
}; | ||||
#endif | ||||
#define GG_DEFAULT_DCC_PORT 1550 | #define GG_DEFAULT_DCC_PORT 1550 | |||
struct gg_header { | struct gg_header { | |||
uint32_t type; /* typ pakietu */ | uint32_t type; /* typ pakietu */ | |||
uint32_t length; /* długość reszty pakietu */ | uint32_t length; /* długość reszty pakietu */ | |||
} GG_PACKED; | } GG_PACKED; | |||
#define GG_WELCOME 0x0001 | #define GG_WELCOME 0x0001 | |||
#define GG_NEED_EMAIL 0x0014 | #define GG_NEED_EMAIL 0x0014 | |||
skipping to change at line 1361 | skipping to change at line 1449 | |||
uint32_t version; /* moja wersja klienta */ | uint32_t version; /* moja wersja klienta */ | |||
uint8_t dunno1; /* 0x00 */ | uint8_t dunno1; /* 0x00 */ | |||
uint32_t local_ip; /* mój adres ip */ | uint32_t local_ip; /* mój adres ip */ | |||
uint16_t local_port; /* port, na którym słucham */ | uint16_t local_port; /* port, na którym słucham */ | |||
uint32_t external_ip; /* zewnętrzny adres ip */ | uint32_t external_ip; /* zewnętrzny adres ip */ | |||
uint16_t external_port; /* zewnętrzny port */ | uint16_t external_port; /* zewnętrzny port */ | |||
uint8_t image_size; /* maksymalny rozmiar grafiki w KiB */ | uint8_t image_size; /* maksymalny rozmiar grafiki w KiB */ | |||
uint8_t dunno2; /* 0xbe */ | uint8_t dunno2; /* 0xbe */ | |||
} GG_PACKED; | } GG_PACKED; | |||
#define GG_LOGIN70 0x19 | #define GG_LOGIN70 0x0019 | |||
struct gg_login70 { | struct gg_login70 { | |||
uint32_t uin; /* mój numerek */ | uint32_t uin; /* mój numerek */ | |||
uint8_t hash_type; /* rodzaj hashowania hasła */ | uint8_t hash_type; /* rodzaj hashowania hasła */ | |||
uint8_t hash[64]; /* hash hasła dopełniony zerami */ | uint8_t hash[64]; /* hash hasła dopełniony zerami */ | |||
uint32_t status; /* status na dzień dobry */ | uint32_t status; /* status na dzień dobry */ | |||
uint32_t version; /* moja wersja klienta */ | uint32_t version; /* moja wersja klienta */ | |||
uint8_t dunno1; /* 0x00 */ | uint8_t dunno1; /* 0x00 */ | |||
uint32_t local_ip; /* mój adres ip */ | uint32_t local_ip; /* mój adres ip */ | |||
uint16_t local_port; /* port, na którym słucham */ | uint16_t local_port; /* port, na którym słucham */ | |||
skipping to change at line 1402 | skipping to change at line 1490 | |||
uint8_t type; /* GG_PUBDIR50_* */ | uint8_t type; /* GG_PUBDIR50_* */ | |||
uint32_t seq; /* czas wysłania zapytania */ | uint32_t seq; /* czas wysłania zapytania */ | |||
} GG_PACKED; | } GG_PACKED; | |||
#define GG_NEW_STATUS 0x0002 | #define GG_NEW_STATUS 0x0002 | |||
#ifndef DOXYGEN | #ifndef DOXYGEN | |||
#define GG_STATUS_NOT_AVAIL 0x0001 | #define GG_STATUS_NOT_AVAIL 0x0001 | |||
#define GG_STATUS_NOT_AVAIL_DESCR 0x0015 | #define GG_STATUS_NOT_AVAIL_DESCR 0x0015 | |||
#define GG_STATUS_FFC 0x0017 | ||||
#define GG_STATUS_FFC_DESCR 0x0018 | ||||
#define GG_STATUS_AVAIL 0x0002 | #define GG_STATUS_AVAIL 0x0002 | |||
#define GG_STATUS_AVAIL_DESCR 0x0004 | #define GG_STATUS_AVAIL_DESCR 0x0004 | |||
#define GG_STATUS_BUSY 0x0003 | #define GG_STATUS_BUSY 0x0003 | |||
#define GG_STATUS_BUSY_DESCR 0x0005 | #define GG_STATUS_BUSY_DESCR 0x0005 | |||
#define GG_STATUS_DND 0x0021 | ||||
#define GG_STATUS_DND_DESCR 0x0022 | ||||
#define GG_STATUS_INVISIBLE 0x0014 | #define GG_STATUS_INVISIBLE 0x0014 | |||
#define GG_STATUS_INVISIBLE_DESCR 0x0016 | #define GG_STATUS_INVISIBLE_DESCR 0x0016 | |||
#define GG_STATUS_BLOCKED 0x0006 | #define GG_STATUS_BLOCKED 0x0006 | |||
#define GG_STATUS_IMAGE_MASK 0x0100 | ||||
#define GG_STATUS_DESCR_MASK 0x4000 | ||||
#define GG_STATUS_FRIENDS_MASK 0x8000 | #define GG_STATUS_FRIENDS_MASK 0x8000 | |||
#else | #else | |||
/** | /** | |||
* Rodzaje statusów użytkownika. | * Rodzaje statusów użytkownika. | |||
* | * | |||
* \ingroup status | * \ingroup status | |||
*/ | */ | |||
enum { | enum { | |||
GG_STATUS_NOT_AVAIL, /**< Niedostępny */ | GG_STATUS_NOT_AVAIL, /**< Niedostępny */ | |||
GG_STATUS_NOT_AVAIL_DESCR, /**< Niedostępny z opisem */ | GG_STATUS_NOT_AVAIL_DESCR, /**< Niedostępny z opisem */ | |||
GG_STATUS_FFC, /**< PoGGadaj ze mną */ | ||||
GG_STATUS_FFC_DESCR, /**< PoGGadaj ze mną z opisem */ | ||||
GG_STATUS_AVAIL, /**< Dostępny */ | GG_STATUS_AVAIL, /**< Dostępny */ | |||
GG_STATUS_AVAIL_DESCR, /**< Dostępny z opisem */ | GG_STATUS_AVAIL_DESCR, /**< Dostępny z opisem */ | |||
GG_STATUS_BUSY, /**< Zajęty */ | GG_STATUS_BUSY, /**< Zajęty */ | |||
GG_STATUS_BUSY_DESCR, /**< Zajęty z opisem */ | GG_STATUS_BUSY_DESCR, /**< Zajęty z opisem */ | |||
GG_STATUS_DND, /**< Nie przeszkadzać */ | ||||
GG_STATUS_DND_DESCR, /**< Nie przeszakdzać z opisem */ | ||||
GG_STATUS_INVISIBLE, /**< Niewidoczny (tylko własny statu s) */ | GG_STATUS_INVISIBLE, /**< Niewidoczny (tylko własny statu s) */ | |||
GG_STATUS_INVISIBLE_DESCR, /**< Niewidoczny z opisem (tylko wła sny status) */ | GG_STATUS_INVISIBLE_DESCR, /**< Niewidoczny z opisem (tylko wła sny status) */ | |||
GG_STATUS_BLOCKED, /**< Zablokowany (tylko status innyc h) */ | GG_STATUS_BLOCKED, /**< Zablokowany (tylko status innyc h) */ | |||
GG_STATUS_IMAGE_MASK, /**< Flaga bitowa oznaczająca opis g | ||||
raficzny (tylko jeśli wybrano \c GG_FEATURE_IMAGE_DESCR) */ | ||||
GG_STATUS_DESCR_MASK, /**< Flaga bitowa oznaczająca status | ||||
z opisem (tylko jeśli wybrano \c GG_FEATURE_IMAGE_DESCR) */ | ||||
GG_STATUS_FRIENDS_MASK, /**< Flaga bitowa dostępności tylko dla znajomych */ | GG_STATUS_FRIENDS_MASK, /**< Flaga bitowa dostępności tylko dla znajomych */ | |||
}; | }; | |||
#endif /* DOXYGEN */ | #endif /* DOXYGEN */ | |||
/** | /** | |||
* \ingroup status | * \ingroup status | |||
* | * | |||
* Flaga bitowa dostepnosci informujaca ze mozemy voipowac | ||||
*/ | ||||
#define GG_STATUS_VOICE_MASK 0x20000 /**< czy ma wlaczone audio (7.7) */ | ||||
/** | ||||
* \ingroup status | ||||
* | ||||
* Maksymalna długośc opisu. | * Maksymalna długośc opisu. | |||
*/ | */ | |||
#define GG_STATUS_DESCR_MAXSIZE 70 | #define GG_STATUS_DESCR_MAXSIZE 255 | |||
#define GG_STATUS_DESCR_MAXSIZE_PRE_8_0 70 | ||||
#define GG_STATUS_MASK 0xff | ||||
/* GG_S_F() tryb tylko dla znajomych */ | /* GG_S_F() tryb tylko dla znajomych */ | |||
#define GG_S_F(x) (((x) & GG_STATUS_FRIENDS_MASK) != 0) | #define GG_S_F(x) (((x) & GG_STATUS_FRIENDS_MASK) != 0) | |||
/* GG_S() stan bez uwzględnienia trybu tylko dla znajomych */ | /* GG_S() stan bez uwzględnienia dodatkowych flag */ | |||
#define GG_S(x) ((x) & ~GG_STATUS_FRIENDS_MASK) | #define GG_S(x) ((x) & GG_STATUS_MASK) | |||
/* GG_S_A() dostępny */ | /* GG_S_FF() chętny do rozmowy */ | |||
#define GG_S_A(x) (GG_S(x) == GG_STATUS_AVAIL || GG_S(x) == GG_STATUS_AVAIL | #define GG_S_FF(x) (GG_S(x) == GG_STATUS_FFC || GG_S(x) == GG_STATUS_FFC_DE | |||
_DESCR) | SCR) | |||
/* GG_S_AV() dostępny */ | ||||
#define GG_S_AV(x) (GG_S(x) == GG_STATUS_AVAIL || GG_S(x) == GG_STATUS_AVAI | ||||
L_DESCR) | ||||
/* GG_S_AW() zaraz wracam */ | ||||
#define GG_S_AW(x) (GG_S(x) == GG_STATUS_BUSY || GG_S(x) == GG_STATUS_BUSY_ | ||||
DESCR) | ||||
/* GG_S_DD() nie przeszkadzać */ | ||||
#define GG_S_DD(x) (GG_S(x) == GG_STATUS_DND || GG_S(x) == GG_STATUS_DND_DE | ||||
SCR) | ||||
/* GG_S_NA() niedostępny */ | /* GG_S_NA() niedostępny */ | |||
#define GG_S_NA(x) (GG_S(x) == GG_STATUS_NOT_AVAIL || GG_S(x) == GG_STATUS_ NOT_AVAIL_DESCR) | #define GG_S_NA(x) (GG_S(x) == GG_STATUS_NOT_AVAIL || GG_S(x) == GG_STATUS_ NOT_AVAIL_DESCR) | |||
/* GG_S_B() zajęty */ | ||||
#define GG_S_B(x) (GG_S(x) == GG_STATUS_BUSY || GG_S(x) == GG_STATUS_BUSY_D | ||||
ESCR) | ||||
/* GG_S_I() niewidoczny */ | /* GG_S_I() niewidoczny */ | |||
#define GG_S_I(x) (GG_S(x) == GG_STATUS_INVISIBLE || GG_S(x) == GG_STATUS_I NVISIBLE_DESCR) | #define GG_S_I(x) (GG_S(x) == GG_STATUS_INVISIBLE || GG_S(x) == GG_STATUS_I NVISIBLE_DESCR) | |||
/* GG_S_A() dostępny lub chętny do rozmowy */ | ||||
#define GG_S_A(x) (GG_S_FF(x) || GG_S_AV(x)) | ||||
/* GG_S_B() zajęty lub nie przeszkadzać */ | ||||
#define GG_S_B(x) (GG_S_AW(x) || GG_S_DD(x)) | ||||
/* GG_S_D() stan opisowy */ | /* GG_S_D() stan opisowy */ | |||
#define GG_S_D(x) (GG_S(x) == GG_STATUS_NOT_AVAIL_DESCR || GG_S(x) == GG_ST | #define GG_S_D(x) (GG_S(x) == GG_STATUS_NOT_AVAIL_DESCR || \ | |||
ATUS_AVAIL_DESCR || GG_S(x) == GG_STATUS_BUSY_DESCR || GG_S(x) == GG_STATUS | GG_S(x) == GG_STATUS_FFC_DESCR || \ | |||
_INVISIBLE_DESCR) | GG_S(x) == GG_STATUS_AVAIL_DESCR || \ | |||
GG_S(x) == GG_STATUS_BUSY_DESCR || \ | ||||
GG_S(x) == GG_STATUS_DND_DESCR || \ | ||||
GG_S(x) == GG_STATUS_INVISIBLE_DESCR) | ||||
/* GG_S_BL() blokowany lub blokujący */ | /* GG_S_BL() blokowany lub blokujący */ | |||
#define GG_S_BL(x) (GG_S(x) == GG_STATUS_BLOCKED) | #define GG_S_BL(x) (GG_S(x) == GG_STATUS_BLOCKED) | |||
/** | /** | |||
* Zmiana statusu (pakiet \c GG_NEW_STATUS) | * Zmiana statusu (pakiet \c GG_NEW_STATUS i \c GG_NEW_STATUS80BETA) | |||
*/ | */ | |||
struct gg_new_status { | struct gg_new_status { | |||
uint32_t status; /**< Nowy status */ | uint32_t status; /**< Nowy status */ | |||
} GG_PACKED; | } GG_PACKED; | |||
#define GG_NOTIFY_FIRST 0x000f | #define GG_NOTIFY_FIRST 0x000f | |||
#define GG_NOTIFY_LAST 0x0010 | #define GG_NOTIFY_LAST 0x0010 | |||
#define GG_NOTIFY 0x0010 | #define GG_NOTIFY 0x0010 | |||
skipping to change at line 1862 | skipping to change at line 1990 | |||
#define GG_DCC7_NEW 0x20 | #define GG_DCC7_NEW 0x20 | |||
struct gg_dcc7_new { | struct gg_dcc7_new { | |||
gg_dcc7_id_t id; /* identyfikator połączenia */ | gg_dcc7_id_t id; /* identyfikator połączenia */ | |||
uint32_t uin_from; /* numer nadawcy */ | uint32_t uin_from; /* numer nadawcy */ | |||
uint32_t uin_to; /* numer odbiorcy */ | uint32_t uin_to; /* numer odbiorcy */ | |||
uint32_t type; /* rodzaj transmisji */ | uint32_t type; /* rodzaj transmisji */ | |||
unsigned char filename[GG_DCC7_FILENAME_LEN]; /* nazwa pliku */ | unsigned char filename[GG_DCC7_FILENAME_LEN]; /* nazwa pliku */ | |||
uint32_t size; /* rozmiar pliku */ | uint32_t size; /* rozmiar pliku */ | |||
uint32_t dunno1; /* 0x00000000 */ | uint32_t size_hi; /* rozmiar pliku (starsze bajty) */ | |||
unsigned char hash[GG_DCC7_HASH_LEN]; /* hash SHA1 */ | unsigned char hash[GG_DCC7_HASH_LEN]; /* hash SHA1 */ | |||
} GG_PACKED; | } GG_PACKED; | |||
#define GG_DCC7_ACCEPT 0x21 | #define GG_DCC7_ACCEPT 0x21 | |||
struct gg_dcc7_accept { | struct gg_dcc7_accept { | |||
uint32_t uin; /* numer przyjmującego połączenie */ | uint32_t uin; /* numer przyjmującego połączenie */ | |||
gg_dcc7_id_t id; /* identyfikator połączenia */ | gg_dcc7_id_t id; /* identyfikator połączenia */ | |||
uint32_t offset; /* offset przy wznawianiu transmisji */ | uint32_t offset; /* offset przy wznawianiu transmisji */ | |||
uint32_t dunno1; /* 0x00000000 */ | uint32_t dunno1; /* 0x00000000 */ | |||
End of changes. 57 change blocks. | ||||
137 lines changed or deleted | 296 lines changed or added | |||