patches/glibc/ports-2.12.1/180-resolv-dynamic.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Jul 17 17:56:22 2011 +0200 (2011-07-17)
changeset 2889 f3b2199620f1
permissions -rw-r--r--
cc/gcc: pass the install prefix to the core passes

Currently, the discrimination on the core compilers prefixes depends on
the type of core compiler to build.

This is not correct, and the caller of the core backend should specify
the prefix.

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