Dnia 2011-11-02, śro o godzinie 19:04 +0100, Bartosz Brachaczek pisze:
> Cześć,
> 
> Kawałek kodu w src/dcc7.c (a także kod na usługach dcc7 w
> include/internal.h i src/endian.c) zależy od zdefiniowanych makr
> HAVE_STRTOULL i HAVE_UINT64_T.. Tak się jednak składa, że te makra są
> jedynie definiowane w config.h (include/libgadu.h.in nic o nich nie
> wie), a żaden ze wspomnianych plików config.h nie includuje, więc i
> kod zależny od istnienia tych makr nigdy nie jest kompilowany.

Ten kod nie jest jakoś niesamowicie istotny dla działania połączeń
bezpośredni, ale i tak niezły obciach ;)

> Co do HAVE_STRTOULL, wydaje mi się, że można je zastąpić
> GG_CONFIG_HAVE_STRTOULL (a także GG_CONFIG_HAVE__STRTOUI64 na potrzeby
> MSVC).

GG_CONFIG_HAVE_STRTOULL nie jest potrzebne w żaden sposób aplikacji,
więc nie pchałem tego do libgadu.h, tylko zostawiłem w config.h.
GG_CONFIG_HAVE_UINT64_T też nie będzie potrzebne, dopóki nigdzie w API
nie pojawi się 64-bitowa wartość.

> Natomiast istnienie HAVE_UINT64_T jest dla mnie trochę dziwne, bo
> przecież jest już GG_CONFIG_HAVE_LONG_LONG. Co z tym zrobić?

Typ long long jest używany do operowania na liczbach, ale ze względu na
różne endiany, powstała nowa funkcja gg_fix64(), która podobnie jak inne
gg_fixX() operuje na typach uintX_t. Biorąc pod uwagę, że uint64_t nie
musi być wcale tożsamy unsigned long long, robi się to trochę
skomplikowane i nagle windowsowe API ze swoim strtoui64() zaczyna mieć
więcej sensu.

Sam nie wiem, co z tym zrobić na dłuższą metę, ale póki co dodałem
config.h gdzie trzeba i poprawiłem #ifdef wokół funkcji gg_fix64.

Pozdr,
Wojtek

_______________________________________________
libgadu-devel mailing list
libgadu-devel@lists.ziew.org
http://lists.ziew.org/mailman/listinfo/libgadu-devel

Reply via email to