patches/glibc/ports-2.13/180-resolv-dynamic.patch
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Sun May 05 00:01:05 2013 +0200 (2013-05-05)
changeset 3218 3709e61ad85b
permissions -rw-r--r--
complibs/cloog: add support for the ISL backend

CLooG 0.18+ will use ISL instead of PPL, so we have to configure
adequately depending of which backend is in use.

The Kconfig entries will decide for us which is selected, so we
can rely on either PPL xor ISL to be selected, not both.

Reported-by: "Plotnikov Dmitry" <leitz@ispras.ru>
[Dmitry did a preliminray patch to add ISL support,
which this patch is inspired from]
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);