patches/glibc/2.9/250-resolv-dynamic.patch
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Tue Jul 31 22:27:29 2012 +0200 (2012-07-31)
changeset 3018 7776e8369284
parent 1201 c9967a6e3b25
permissions -rw-r--r--
complibs/cloog: create missing m4 dir

Because we now patch configure.in and configure, the Makefile quicks
in a re-build rule as the source files are now more recent than the
bundled generated files, and that fails because the m4 directory
is missing, although on some systems where aclocal is not installed,
the re-build rule does nothing (except a warning).

Always create tht directory.

Reported-by: Per Arnold Blaasmo <per-arnold.blaasmo@atmel.com>
[Also thanks to Thomas De Schampheleire <patrickdepinguin@gmail.com>
for some digging works on this issue]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
     1 Original patch from: gentoo/src/patchsets/glibc/2.9/1055_all_glibc-resolv-dynamic.patch
     2 
     3 -= BEGIN original header =-
     4 ripped from SuSE
     5 
     6 if /etc/resolv.conf is updated, then make sure applications
     7 already running get the updated information.
     8 
     9 http://bugs.gentoo.org/177416
    10 
    11 -= END original header =-
    12 
    13 diff -durN glibc-2_9.orig/resolv/res_libc.c glibc-2_9/resolv/res_libc.c
    14 --- glibc-2_9.orig/resolv/res_libc.c	2006-10-11 10:59:28.000000000 +0200
    15 +++ glibc-2_9/resolv/res_libc.c	2009-02-02 22:00:57.000000000 +0100
    16 @@ -22,6 +22,7 @@
    17  #include <arpa/nameser.h>
    18  #include <resolv.h>
    19  #include <bits/libc-lock.h>
    20 +#include <sys/stat.h>
    21  
    22  
    23  /* The following bit is copied from res_data.c (where it is #ifdef'ed
    24 @@ -95,6 +96,20 @@
    25  __res_maybe_init (res_state resp, int preinit)
    26  {
    27  	if (resp->options & RES_INIT) {
    28 +		static time_t last_mtime, last_check;
    29 +		time_t now;
    30 +		struct stat statbuf;
    31 +		
    32 +		time (&now);
    33 +		if (now != last_check) {
    34 +			last_check = now;
    35 +			if (stat (_PATH_RESCONF, &statbuf) == 0 && last_mtime != statbuf.st_mtime) {
    36 +				last_mtime = statbuf.st_mtime;
    37 +				atomicinclock (lock);
    38 +				atomicinc (__res_initstamp);
    39 +				atomicincunlock (lock);
    40 +			}
    41 +		}
    42  		if (__res_initstamp != resp->_u._ext.initstamp) {
    43  			if (resp->nscount > 0) {
    44  				__res_iclose (resp, true);