systemd
      
      
        
          | Last change
 on this file since 54e2d8f was             b17b911f, checked in by jim <clfs@…>, 16 years ago | 
        
          | 
Updated eglibc fetch script.
 | 
        
          | 
              
Property                 mode
 set to                 100644 | 
        
          | File size:
            967 bytes | 
      
      
| Rev | Line |  | 
|---|
| [b17b911f] | 1 | if /etc/resolv.conf is updated, then make sure applications | 
|---|
|  | 2 | already running get the updated information. | 
|---|
|  | 3 |  | 
|---|
|  | 4 | http://bugs.gentoo.org/177416 | 
|---|
|  | 5 |  | 
|---|
|  | 6 | --- libc/resolv/res_libc.c | 
|---|
|  | 7 | +++ libc/resolv/res_libc.c | 
|---|
|  | 8 | @@ -22,6 +22,7 @@ | 
|---|
|  | 9 | #include <arpa/nameser.h> | 
|---|
|  | 10 | #include <resolv.h> | 
|---|
|  | 11 | #include <bits/libc-lock.h> | 
|---|
|  | 12 | +#include <sys/stat.h> | 
|---|
|  | 13 |  | 
|---|
|  | 14 |  | 
|---|
|  | 15 | /* The following bit is copied from res_data.c (where it is #ifdef'ed | 
|---|
|  | 16 | @@ -101,6 +102,20 @@ | 
|---|
|  | 17 | __res_maybe_init (res_state resp, int preinit) | 
|---|
|  | 18 | { | 
|---|
|  | 19 | if (resp->options & RES_INIT) { | 
|---|
|  | 20 | +               static time_t last_mtime, last_check; | 
|---|
|  | 21 | +               time_t now; | 
|---|
|  | 22 | +               struct stat statbuf; | 
|---|
|  | 23 | + | 
|---|
|  | 24 | +               time (&now); | 
|---|
|  | 25 | +               if (now != last_check) { | 
|---|
|  | 26 | +                       last_check = now; | 
|---|
|  | 27 | +                       if (stat (_PATH_RESCONF, &statbuf) == 0 && last_mtime != statbuf.st_mtime) { | 
|---|
|  | 28 | +                               last_mtime = statbuf.st_mtime; | 
|---|
|  | 29 | +                               atomicinclock (lock); | 
|---|
|  | 30 | +                               atomicinc (__res_initstamp); | 
|---|
|  | 31 | +                               atomicincunlock (lock); | 
|---|
|  | 32 | +                       } | 
|---|
|  | 33 | +               } | 
|---|
|  | 34 | if (__res_initstamp != resp->_u._ext.initstamp) { | 
|---|
|  | 35 | if (resp->nscount > 0) { | 
|---|
|  | 36 | __res_nclose (resp); | 
|---|
|  | 37 |  | 
|---|
       
      
  Note:
 See   
TracBrowser
 for help on using the repository browser.