patches/glibc/ports-2.13/180-resolv-dynamic.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Wed May 18 23:00:46 2011 +0200 (2011-05-18)
changeset 2467 200836977ce6
permissions -rw-r--r--
config: rename variables that are arrays

Make it explicit that a variable is an array bu the name of the variable.
It will be used later when .config gets munged to allow both multiple
arguments and arguments with spaces at the same time to be passed from the
configuration down to the build scripts.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
     1 ripped from SuSE
     2 
     3 if /etc/resolv.conf is updated, then make sure applications
     4 already running get the updated information.
     5 
     6 http://bugs.gentoo.org/177416
     7 
     8 diff -durN glibc-2.13.orig/resolv/res_libc.c glibc-2.13/resolv/res_libc.c
     9 --- glibc-2.13.orig/resolv/res_libc.c	2009-02-07 05:27:42.000000000 +0100
    10 +++ glibc-2.13/resolv/res_libc.c	2009-11-13 00:49:59.000000000 +0100
    11 @@ -22,6 +22,7 @@
    12  #include <arpa/nameser.h>
    13  #include <resolv.h>
    14  #include <bits/libc-lock.h>
    15 +#include <sys/stat.h>
    16  
    17  
    18  /* The following bit is copied from res_data.c (where it is #ifdef'ed
    19 @@ -95,6 +96,20 @@
    20  __res_maybe_init (res_state resp, int preinit)
    21  {
    22  	if (resp->options & RES_INIT) {
    23 +		static time_t last_mtime, last_check;
    24 +		time_t now;
    25 +		struct stat statbuf;
    26 +		
    27 +		time (&now);
    28 +		if (now != last_check) {
    29 +			last_check = now;
    30 +			if (stat (_PATH_RESCONF, &statbuf) == 0 && last_mtime != statbuf.st_mtime) {
    31 +				last_mtime = statbuf.st_mtime;
    32 +				atomicinclock (lock);
    33 +				atomicinc (__res_initstamp);
    34 +				atomicincunlock (lock);
    35 +			}
    36 +		}
    37  		if (__res_initstamp != resp->_u._ext.initstamp) {
    38  			if (resp->nscount > 0)
    39  				__res_iclose (resp, true);