Licq 1.0 a socks5

Michal Krause michal na krause.cz
Úterý Listopad 7 13:37:34 CET 2000


On 07/11/2000, Petr Sebor wrote:

> Pokud se lib od tech socks od NEC prelozi, je vsechno kde ma byt. Jenom tak 
> namatkou:
> 
> root na ns:/install/linux/socks5-v1.0r10/include$ objdump -T /usr/local/lib/libsocks.so | grep SOCKSinit
> 0000c0b0 g    DF .text  00000025  Base        SOCKSinit
> 
> > na webu se o tehlech funkcich mluvi jako o bezne soucasti socks5 API,
> > ale v hlavickovych souborech socks5 od NECu jsem je nikde nenasel.
> 
> Mozna proto, ze se ta funkce v tech headerech definuje jako
> LIBPREFIX(init) z cohoz se ve finale vyloupne prave SOCKSinit ();

Aha, to jsem neznal. Nicmene jsem to zkusil znovu s rucne kompilovanym
socks5 a uspech se opet nedostavil. Takhle to dopadlo:

make  all-recursive
make[1]: Entering directory `/home/tom/data/download/licq/licq-1.0'
Making all in share
make[2]: Entering directory
`/home/tom/data/download/licq/licq-1.0/share'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/tom/data/download/licq/licq-1.0/share'
Making all in src
make[2]: Entering directory `/home/tom/data/download/licq/licq-1.0/src'
c++ -DHAVE_CONFIG_H -I. -I. -I..  -Wall -I../include
-DINSTALL_PREFIX=\"/usr/local\" -I/usr/local/include -Wno-implicit
-fPIC -DPIC -D_REENTRANT  -O2 -fno-exceptions -fno-check-new -c main.cpp
main.cpp: In function `int main (int, char **)':
main.cpp:32: `SOCKSinit' undeclared (first use this function)
main.cpp:32: (Each undeclared identifier is reported only once for each 
function it appears in.)
make[2]: *** [main.o] Error 1
make[2]: Leaving directory `/home/tom/data/download/licq/licq-1.0/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/tom/data/download/licq/licq-1.0'
make: *** [all-recursive-am] Error 2

I pres to jsem se nakonec dostal, viz dale.

> > U binarek socks5 od NECu je sice hlavickovy soubor socks.h, ovsem ten
> > zase includuje napr. socks5api.h, ktery tam uz neni.
> 
> divne... to je obsah include adresare z socks5 od NEC co tu mam:

V tomhle pripade jsem trochu mlzil. V RPM ty dalsi hlavickove soubory
sice nejsou, ale take se neincluduji, pokud neni definovano makro
INCLUDE_PROTOTYPES, coz zrejme obvykle nebyva. Ovsem nakonec jsem dospel
k nazoru, ze v tomto pripade to treba bude, takze jsem do Makefile
pripsal -DINCLUDE_PROTOTYPES. Ze to ale asi neni koser, o tom mem
presvedcil dalsi pokus:

c++ -DHAVE_CONFIG_H -I. -I. -I.. -DINCLUDE_PROTOTYPES -Wall -I../include
-DINSTALL_PREFIX=\"/usr/local\" -I/usr/local/include -Wno-implicit
-fPIC -DPIC -D_REENTRANT  -O2 -fno-exceptions -fno-check-new -c
socket.cpp
socket.cpp: In method `bool INetSocket::SetLocalAddress (bool)':
socket.cpp:298: cannot convert `socklen_t *' to `int *' for argument 
`3' to `SOCKSgetsockname (int, sockaddr *, int *)'
socket.cpp: In method `void TCPSocket::RecvConnection (TCPSocket &)':
socket.cpp:514: cannot convert `socklen_t *' to `int *' for argument 
`3' to `SOCKSaccept (int, sockaddr *, int *)'
make[2]: *** [socket.o] Error 1
make[2]: Leaving directory `/home/tom/data/download/licq/licq-1.0/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/tom/data/download/licq/licq-1.0'
make: *** [all-recursive-am] Error 2

Docela by me zajimalo, proc to nemuze zkonvertovat, kdyz

/usr/include/bits/types.h rika, ze
typedef unsigned int __socklen_t;

a /usr/include/bits/socket.h pak zase ze:
typedef __socklen_t socklen_t;

Jsem uz z toho jelen. Na jakem systemu to kompilujete Vy?

S pozdravem
--
Michal Krause                                                       /\
ICQ: 7665279            Informace (nejenom) ze sveta Linuxu      /\/  \
email: michal na krause.cz _______ http://www.root.cz/ _______ NAVRCHOLU.cz

                           Penguino  veritas


Další informace o konferenci Linux