Mercurial > pidgin.yaz
diff libpurple/protocols/gg/lib/resolver.c @ 32777:e2ff2ac0e022
Gadu-Gadu: synchronize internal libgadu with upstream - second encounter. Refs #343
author | tomkiewicz@cpw.pidgin.im |
---|---|
date | Fri, 21 Oct 2011 12:48:30 +0000 |
parents | ef01f180114b |
children |
line wrap: on
line diff
--- a/libpurple/protocols/gg/lib/resolver.c Tue Oct 18 21:44:25 2011 +0000 +++ b/libpurple/protocols/gg/lib/resolver.c Fri Oct 21 12:48:30 2011 +0000 @@ -26,25 +26,21 @@ * \brief Funkcje rozwiązywania nazw */ -#ifndef _WIN32 -# include <sys/wait.h> -# include <netdb.h> -#endif #include <errno.h> #include <stdlib.h> #include <string.h> #include <unistd.h> -#ifndef _WIN32 -# include <signal.h> -# include <netinet/in.h> -# include <arpa/inet.h> -#endif #include "libgadu.h" #include "resolver.h" #include "compat.h" #include "session.h" +#ifdef GG_CONFIG_HAVE_FORK +#include <sys/wait.h> +#include <signal.h> +#endif + /** Sposób rozwiązywania nazw serwerów */ static gg_resolver_t gg_global_resolver_type = GG_RESOLVER_DEFAULT; @@ -249,6 +245,7 @@ } #if defined(GG_CONFIG_HAVE_PTHREAD) || defined(GG_CONFIG_HAVE_FORK) + /** * \internal Rozwiązuje nazwę i zapisuje wynik do podanego desktyptora. * @@ -286,7 +283,8 @@ return res; } -#endif + +#endif /* GG_CONFIG_HAVE_PTHREAD || GG_CONFIG_HAVE_FORK */ /** * \internal Odpowiednik \c gethostbyname zapewniający współbieżność. @@ -311,6 +309,8 @@ return result; } +#ifdef GG_CONFIG_HAVE_FORK + /** * \internal Struktura przekazywana do wątku rozwiązującego nazwę. */ @@ -318,7 +318,6 @@ int pid; /*< Identyfikator procesu */ }; -#ifdef GG_CONFIG_HAVE_FORK /** * \internal Rozwiązuje nazwę serwera w osobnym procesie. * @@ -370,12 +369,17 @@ } if (data->pid == 0) { + int status; + close(pipes[0]); - if (gg_resolver_run(pipes[1], hostname) == -1) - _exit(1); - else - _exit(0); + status = (gg_resolver_run(pipes[1], hostname) == -1) ? 1 : 0; + +#ifdef GG_CONFIG_HAVE__EXIT + _exit(status); +#else + exit(status); +#endif } close(pipes[1]); @@ -424,7 +428,8 @@ free(data); } -#endif + +#endif /* GG_CONFIG_HAVE_FORK */ #ifdef GG_CONFIG_HAVE_PTHREAD @@ -594,10 +599,10 @@ return 0; } -#if !defined(GG_CONFIG_HAVE_PTHREAD) || !defined(GG_CONFIG_PTHREAD_DEFAULT) +#if defined(GG_CONFIG_HAVE_PTHREAD) && defined(GG_CONFIG_PTHREAD_DEFAULT) + type = GG_RESOLVER_PTHREAD; +#elif defined(GG_CONFIG_HAVE_FORK) type = GG_RESOLVER_FORK; -#else - type = GG_RESOLVER_PTHREAD; #endif } @@ -705,10 +710,10 @@ return 0; } -#if !defined(GG_CONFIG_HAVE_PTHREAD) || !defined(GG_CONFIG_PTHREAD_DEFAULT) +#if defined(GG_CONFIG_HAVE_PTHREAD) && defined(GG_CONFIG_PTHREAD_DEFAULT) + type = GG_RESOLVER_PTHREAD; +#elif defined(GG_CONFIG_HAVE_FORK) type = GG_RESOLVER_FORK; -#else - type = GG_RESOLVER_PTHREAD; #endif }