view plugins/Makefile.am @ 8436:4bb3d8dc717e

[gaim-migrate @ 9166] " If getaddrinfo() is used, the addrlen and addr returned through that function are written through the pipe to the child Gaim processes. getaddrinfo() sets the addrlen and addr fields through the following structure, defined in <netdb.h>: struct addrinfo { int ai_flags; int ai_family; int ai_socktype; int ai_protocol; size_t ai_addrlen; char *ai_canonname; struct sockaddr *ai_addr; struct addrinfo *ai_next; }; This is from FreeBSD/amd64 5.2.1-RELEASE. This structure is defined differently on different systems. Take, for example, this OpenBSD/i386 3.5-beta system: struct addrinfo { int ai_flags; int ai_family; int ai_socktype; int ai_protocol; socklen_t ai_addrlen; struct sockaddr *ai_addr; char *ai_canonname; struct addrinfo *ai_next; }; After being read, the addrlen and addr of each host is written through the descriptor: src/proxy.c: 466 rc = getaddrinfo(dns_params.hostname, servname, &hints, &res); ... 478 while(res) { 479 write(child_out[1], &(res->ai_addrlen), sizeof(res->ai_addrlen)); 480 write(child_out[1], res->ai_addr, res->ai_addrlen); 481 res = res->ai_next; 482 } And later subsequently read: 286 rc=read(req->fd_out, &addrlen, sizeof(addrlen)); 287 if(rc>0 && addrlen > 0) { 288 addr=g_malloc(addrlen); 289 rc=read(req->fd_out, addr, addrlen); So hence, the type of addrlen that is used in host_resolved() must match that of the addrlen used in the addrinfo structure, or they must at least be guarenteed to be the same size." --jarady committer: Tailor Script <tailor@pidgin.im>
author Luke Schierer <lschiere@pidgin.im>
date Fri, 12 Mar 2004 16:59:22 +0000
parents d94df977b502
children 7024b595b6ae
line wrap: on
line source

DIST_SUBDIRS = docklet gevolution gaim-remote gestures perl ssl tcl ticker

if BUILD_GEVOLUTION
GEVOLUTION_DIR = gevolution
endif

if USE_PERL
PERL_DIR = perl
endif

if USE_TCL
TCL_DIR = tcl
endif

SUBDIRS = \
	docklet gaim-remote $(GEVOLUTION_DIR) gestures \
	$(PERL_DIR) $(TCL_DIR) ssl ticker

plugindir = $(libdir)/gaim

autorecon_la_LDFLAGS   = -module -avoid-version
history_la_LDFLAGS     = -module -avoid-version
iconaway_la_LDFLAGS    = -module -avoid-version
idle_la_LDFLAGS        = -module -avoid-version
notify_la_LDFLAGS      = -module -avoid-version
relnot_la_LDFLAGS      = -module -avoid-version
spellchk_la_LDFLAGS    = -module -avoid-version
statenotify_la_LDFLAGS = -module -avoid-version
timestamp_la_LDFLAGS   = -module -avoid-version

if PLUGINS

plugin_LTLIBRARIES = \
	autorecon.la   \
	history.la     \
	iconaway.la    \
	idle.la        \
	notify.la      \
	relnot.la      \
	spellchk.la    \
	statenotify.la \
	timestamp.la

autorecon_la_SOURCES   = autorecon.c
history_la_SOURCES     = history.c
iconaway_la_SOURCES    = iconaway.c
idle_la_SOURCES        = idle.c
notify_la_SOURCES      = notify.c
relnot_la_SOURCES      = relnot.c
spellchk_la_SOURCES    = spellchk.c
statenotify_la_SOURCES = statenotify.c
timestamp_la_SOURCES   = timestamp.c

endif # PLUGINS

EXTRA_DIST = \
	ChangeLog HOWTO \
	filectl.c \
	mailchk.c \
	raw.c \
	signals-test.c \
	simple.c \
	gaim.pl \
	fortuneprofile.pl \
	Makefile.mingw

AM_CPPFLAGS = \
	-DDATADIR=\"$(datadir)\" \
	-DVERSION=\"$(VERSION)\" \
	-I$(top_srcdir)/src \
	$(DEBUG_CFLAGS) \
	$(GTK_CFLAGS) \
	$(PLUGIN_CFLAGS)

#
# This part allows people to build their own plugins in here.
# Yes, it's a mess.
#
SUFFIXES = .c .so
.c.so:
	$(LIBTOOL) --mode=compile $(CC) -DHAVE_CONFIG_H -I$(top_srcdir) $(AM_CPPFLAGS) $(CFLAGS) -c $< -o tmp$@.lo $(PLUGIN_CFLAGS)
	$(LIBTOOL) --mode=link    $(CC) $(CFLAGS) -o libtmp$@.la -rpath $(plugindir) tmp$@.lo $(LIBS) $(LDFLAGS) -module -avoid-version $(PLUGIN_LIBS)
	@rm -f tmp$@.lo tmp$@.o libtmp$@.la
	@cp .libs/libtmp$@.so* $@
	@rm -f .libs/libtmp$@.*