Cześć,
aktualizując wczoraj libgadu w libpurple przeanalizowałem różnice
między oboma wersjami. Niektóre z nich sprawiają wrażenie, jakby
powinny się znaleźć w pierwotnej wersji biblioteki. Opiszę w skrócie,
na co zwróciłem uwagę.
---
Plik dcc.c:421 - zmienna uint16_t port jest przyrównywana do -1 (sypie
warningiem w libpurple). Można by chociaż rzutować tą -1 na uint16_t.
Zamiast typu unsigned int można by było używać typów socklen_t i
size_t (szczegóły w załączniku). To dotyczy prawdopodobnie większej
ilości zmiennych.
Kompilacja pod Windows - libpurple wycina ifdefami część include-ów,
aby całość ładnie się kompilowała pod tym systemem. Wiem, że libgadu
nie ma oficjalnego wsparcia pod okienkami, ale parę ifdefów dużo nie
popsuje ;]. Szczegóły w linku do dużego diffa z różnicami.
Kompilacja pod SunOS i HPUX - jeden ifdef - szczegóły w załączniku.
---
Gcc i ostrzeżenia: aktualnie libgadu jest kompilowane z przełącznikiem
-Wall. Warto by było kompilować dodatkowo z -Wextra, to pozwala
uniknąć prostych bugów. Aktualnie po włączeniu tej opcji nie ma aż tak
dużo ostrzeżeń, mogę pomóc je usuwać.
---
W załączniku krótki diff z najważniejszymi różnicami, na które
zwróciłem tu uwagę, poniżej link do pełnej listy różnic:
http://developer.pidgin.im/attachment/ticket/14248/libgadu-purple-1.11.0.diff
Pozdrawiam,
Tomek
Index: include/libgadu.h.in
===================================================================
--- include/libgadu.h.in (wersja 1118)
+++ include/libgadu.h.in (kopia robocza)
@@ -123,7 +123,7 @@
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
-#ifndef __CYGWIN__
+#if !defined(__CYGWIN__) && !defined(__SunOS) && !defined(_INCLUDE_HPUX_SOURCE)
#define __int8_t_defined
typedef signed char int8_t;
typedef signed short int16_t;
Index: src/events.c
===================================================================
--- src/events.c (wersja 1118)
+++ src/events.c (kopia robocza)
@@ -350,7 +350,7 @@
{
char buf[1024], *client, *auth;
int res = 0;
- unsigned int res_size = sizeof(res);
+ socklen_t res_size = sizeof(res);
const char *host;
gg_debug_session(sess, GG_DEBUG_MISC, "// gg_watch_fd() GG_STATE_CONNECTING_HUB\n");
@@ -626,7 +626,7 @@
case GG_STATE_CONNECTING_GG:
{
int res = 0;
- unsigned int res_size = sizeof(res);
+ socklen_t res_size = sizeof(res);
gg_debug_session(sess, GG_DEBUG_MISC, "// gg_watch_fd() GG_STATE_CONNECTING_GG\n");
Index: src/http.c
===================================================================
--- src/http.c (wersja 1118)
+++ src/http.c (kopia robocza)
@@ -235,7 +235,7 @@
if (h->state == GG_STATE_CONNECTING) {
int res = 0;
- unsigned int res_size = sizeof(res);
+ socklen_t res_size = sizeof(res);
if (h->async && (getsockopt(h->fd, SOL_SOCKET, SO_ERROR, &res, &res_size) || res)) {
gg_debug(GG_DEBUG_MISC, "=> http, async connection failed (errno=%d, %s)\n", (res) ? res : errno , strerror((res) ? res : errno));
@@ -254,7 +254,7 @@
}
if (h->state == GG_STATE_SENDING_QUERY) {
- int res;
+ size_t res; /* w tym pliku jest sporo takich */
if ((res = write(h->fd, h->query, strlen(h->query))) < 1) {
gg_debug(GG_DEBUG_MISC, "=> http, write() failed (len=%d, res=%d, errno=%d)\n", strlen(h->query), res, errno);
Index: src/dcc7.c
===================================================================
--- src/dcc7.c (wersja 1118)
+++ src/dcc7.c (kopia robocza)
@@ -226,7 +226,7 @@
static int gg_dcc7_listen(struct gg_dcc7 *dcc, uint32_t addr, uint16_t port)
{
struct sockaddr_in sin;
- unsigned int sin_len = sizeof(sin);
+ socklen_t sin_len = sizeof(sin);
int errsv;
int fd;
@@ -1050,7 +1050,7 @@
{
struct sockaddr_in sin;
int fd, one = 1;
- unsigned int sin_len = sizeof(sin);
+ socklen_t sin_len = sizeof(sin);
gg_debug_dcc(dcc, GG_DEBUG_MISC, "// gg_dcc7_watch_fd() GG_STATE_LISTENING\n");
Index: src/dcc.c
===================================================================
--- src/dcc.c (wersja 1118)
+++ src/dcc.c (kopia robocza)
@@ -418,7 +418,7 @@
return NULL;
}
- if (port == 0 || port == -1)
+ if (port == 0 || port == (uint16_t)-1)
port = GG_DEFAULT_DCC_PORT;
while (!bound) {
_______________________________________________
libgadu-devel mailing list
[email protected]
http://lists.ziew.org/mailman/listinfo/libgadu-devel