From ec788ca809b14f0ba80abcf268cf8452837b7373 Mon Sep 17 00:00:00 2001 From: "Peter S. Mazinger" Date: Thu, 20 Oct 2005 21:25:45 +0000 Subject: Better solution to duplicate locking defines --- libc/inet/resolv.c | 36 +++++++++++++++--------------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/libc/inet/resolv.c b/libc/inet/resolv.c index 389263175..7ac8af805 100644 --- a/libc/inet/resolv.c +++ b/libc/inet/resolv.c @@ -647,17 +647,20 @@ int __form_query(int id, const char *name, int type, unsigned char *packet, } #endif -#ifdef L_dnslookup +#if defined(L_dnslookup) || defined(L_gethostent) #ifdef __UCLIBC_HAS_THREADS__ -static pthread_mutex_t dns_mylock = PTHREAD_MUTEX_INITIALIZER; -# define DNS_LOCK __pthread_mutex_lock(&dns_mylock) -# define DNS_UNLOCK __pthread_mutex_unlock(&dns_mylock); +static pthread_mutex_t mylock = PTHREAD_MUTEX_INITIALIZER; +# define LOCK __pthread_mutex_lock(&mylock) +# define UNLOCK __pthread_mutex_unlock(&mylock); #else -# define DNS_LOCK -# define DNS_UNLOCK +# define LOCK +# define UNLOCK +#endif #endif +#ifdef L_dnslookup + /* Just for the record, having to lock __dns_lookup() just for these two globals * is pretty lame. I think these two variables can probably be de-global-ized, * which should eliminate the need for doing locking here... Needs a closer @@ -693,10 +696,10 @@ int __dns_lookup(const char *name, int type, int nscount, char **nsip, DPRINTF("Looking up type %d answer for '%s'\n", type, name); /* Mess with globals while under lock */ - DNS_LOCK; + LOCK; local_ns = ns % nscount; local_id = id; - DNS_UNLOCK; + UNLOCK; while (retries < MAX_RETRIES) { if (fd != -1) @@ -900,10 +903,10 @@ int __dns_lookup(const char *name, int type, int nscount, char **nsip, free(lookup); /* Mess with globals while under lock */ - DNS_LOCK; + LOCK; ns = local_ns; id = local_id; - DNS_UNLOCK; + UNLOCK; return (len); /* success! */ @@ -951,10 +954,10 @@ fail: h_errno = NETDB_INTERNAL; /* Mess with globals while under lock */ if (local_ns != -1) { - DNS_LOCK; + LOCK; ns = local_ns; id = local_id; - DNS_UNLOCK; + UNLOCK; } return -1; } @@ -1576,15 +1579,6 @@ int __read_etc_hosts_r(FILE * fp, const char * name, int type, #ifdef L_gethostent -#ifdef __UCLIBC_HAS_THREADS__ -static pthread_mutex_t mylock = PTHREAD_MUTEX_INITIALIZER; -# define LOCK __pthread_mutex_lock(&mylock) -# define UNLOCK __pthread_mutex_unlock(&mylock); -#else -# define LOCK -# define UNLOCK -#endif - static int __stay_open; static FILE * __gethostent_fp; -- cgit v1.2.3