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