public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] dev/heroxbd:master commit in: sys-libs/glibc/files/2.17/, sys-libs/glibc/, sys-libs/glibc/files/2.20/
@ 2014-12-04  8:17 Benda XU
  0 siblings, 0 replies; only message in thread
From: Benda XU @ 2014-12-04  8:17 UTC (permalink / raw
  To: gentoo-commits

commit:     eaf4cf895eaae814464d13854cc1ff326212ed8e
Author:     Benda Xu <heroxbd <AT> gentoo <DOT> org>
AuthorDate: Thu Dec  4 04:32:57 2014 +0000
Commit:     Benda XU <heroxbd <AT> gentoo <DOT> org>
CommitDate: Thu Dec  4 04:32:57 2014 +0000
URL:        http://sources.gentoo.org/gitweb/?p=dev/heroxbd.git;a=commit;h=eaf4cf89

sys-libs/glibc: refined patches and submitted upstream.

  http://article.gmane.org/gmane.comp.lib.glibc.alpha/47306

---
 sys-libs/glibc/Manifest                            |    6 +-
 .../files/2.17/glibc-2.17-runtime-prefix.patch     |  290 --
 .../files/2.20/glibc-2.20-configurable-paths.patch | 2812 ++++++++++++++++++++
 .../files/2.20/glibc-2.20-shadow-prefix.patch      |   24 -
 sys-libs/glibc/glibc-2.20.ebuild                   |   18 +-
 5 files changed, 2824 insertions(+), 326 deletions(-)

diff --git a/sys-libs/glibc/Manifest b/sys-libs/glibc/Manifest
index 4a3813b..cdd8022 100644
--- a/sys-libs/glibc/Manifest
+++ b/sys-libs/glibc/Manifest
@@ -7,15 +7,15 @@ AUX 2.12/glibc-2.12-hardened-pie.patch 1542 SHA256 9d11da52900a4cfdaa9052476029c
 AUX 2.15/glibc-2.15-localstatedir-backport.patch 412 SHA256 465bedaaf735a48825cd6433007abfb1e40c2ef8ddf94d12d452b486c70ce36b SHA512 76506a540d47ad7e76073c3b25bc46278a9e56e34e17d49caf9fffc0622646e8e0d6905fe7d00599db02f444420ed0b9d64d3d70df78446564b137fd65021e45 WHIRLPOOL f21fb6d6eb3555421f7d90b179a7a2745e7056316eacbf209066f01e742037fd283689c5a5f5a313666a2fb79d5ad0631dbada94d9c7eb958ee01217b605533a
 AUX 2.16/glibc-2.16-hardened-pie.patch 1570 SHA256 9a8d8a8268605251782b1fba509cda090f39f56edc8a5497c7b4acfc428041f7 SHA512 1dff16b1ce4ba6246336d19fac21ea6e8d5710e138a23603fa6b79896d895834b6d28bb1948c83648120ca1d038805db7dd7138ba3e28e9071254d6320cdc092 WHIRLPOOL f96487ac4bd95a99e9e70204c686c3f19bb8238cfd4a9856b031be58ac23927886f228a8b4add14213e0489a204c51ebbeb8a376311305025116b8ae45fc90c2
 AUX 2.17/glibc-2.17-hardened-pie.patch 1784 SHA256 bba32e40c73aef20122b2825f31e5c3aa058b61feae4f32f336e1941f83f82d1 SHA512 9ecfe2b6c8c982a42786181d6507d5fa588a6868109065451f58a779848837bd5e69c32a24e43a186c2ff63a9784015c51487e342c87982ac074139e36c169fc WHIRLPOOL 1baffbef9e6d870ea2f2ae5be014b71020a213a1a11e9856fa207545867de444ed164cb926b2aac23471854eaaf72a87e38760702b32bfcfa639add8733d925e
-AUX 2.17/glibc-2.17-runtime-prefix.patch 17804 SHA256 e756d396b563e5d8beeb17a613ab87d463724796c723723303872c98ff831ad2 SHA512 69817447b5962424e86cf3db1797ebb5a818fac3a6b1e498d52cfc20d5f09f6812b1c331b19baeed795b5b3b72edffa33714c765507e8361ce9521296d8418d5 WHIRLPOOL e68cdf9c20036a5036105123f81b3d77a8c1786f55d6c64999ba09d816bbbbb9d47807e3d5a864795855ce883691cecff733524c60fb610d2c1ee4f3348a0f1c
+AUX 2.17/glibc-2.17-runtime-prefix.patch 6755 SHA256 8c87433165aad101b6560dde6ac197bb280fa8caecae73498ab6b7e30df0b01f SHA512 c3008120b02decf055a0e0e759f32780cc787b4942bd249b1c9ed4f47cdc684fbc2a0cbe1626ffccf1c4bc15f8421e693a9e7c09b789e4245acac96fe786a5ff WHIRLPOOL a7af7be989b7166c15b5b211c6c4535eb2357316a27aef992858c88c964074e444a400f56de9453d46fd48f4d19d9c4dc0fe0567573a0b94e629b900143f8116
 AUX 2.17/glibc-2.17-shadow-prefix.patch 950 SHA256 36fa45e0e2642c6ce8809341b69e93d45d97d3b6c451a089198f7b90a5d0eb21 SHA512 3101b9814bcbd0443d309f3949024e753cb6101e84e9cbbae1502fb4c3f85c2fad041608ba69c966cb1da2cf64f5f2c0931c08db222933a2053394f7b0fabf9d WHIRLPOOL 5243b70d2d2e2d3c3c9b07eb2251bb5e78767e776c0491f91fc8499c3d807b44bdab384f7c81867373a577574999079791695eb65ed8c2da1ce5a79c8e60a5ef
 AUX 2.17/locale-gen_prefix.patch 2704 SHA256 0807c8979b7a1a63b48d155417ff8ecc7e14773e928a0d1fe6c349a36fcdadef SHA512 d6b41b953713f7fe0ba14af6d045fc0e6b649f278da691ca5f021d95be5cdabfc87de399880cf988fec2b189fac22864d004ec8d159e59a2348b41945de1d5db WHIRLPOOL 3c7d6b4e789ae494cebea620ed64a6ba8dd401837914f4ead72c7b2d6af94538c9a28f65781db7e6ae0d21c7fac13c531b71147fdb5456ffd39ae1246b331069
 AUX 2.17/vdso-disable.patch 1136 SHA256 49006855c1ba3ae3d3aa5ed71787056dc64e993eec70a4bef05bcc9f4d824014 SHA512 6eeb6eae8b8c1777ebd18170a7651b9e95297125cfc3829786c4d02887cad4a5d768fc2950723d1d040d16d15d72491d7443a3c14ca9f20eb2adb1ba6d1649ca WHIRLPOOL 80367da491b958d0b7855d23d3225a5c17a3a7a1b1f9a54ebc093c53823a5ef1642b974b45e079aec0abff0476494368ed9afcaed83b87576ed8458b8348e41e
 AUX 2.17/vdso.patch 697 SHA256 26f2089344709de9c1bdd2f974d02ff5d4c465f6ebebd5d1ac2cd72b732de201 SHA512 a303a6828ed001b16f2f5c3532890cff66a50259c2e2aa2843e992f2bed5e6141abc9e120afed25f2e1f30d77bc218c3940d680c3d73c227d2056370d5e6b806 WHIRLPOOL edcaa815b8f86e17d77f0582453a717fbbd848400bfdbd302730fec20a952a584ea8f5ba4f7175b25d84752bc895519d7baa55664073cae5037962b0c1825aa3
+AUX 2.20/glibc-2.20-configurable-paths.patch 109416 SHA256 4aa8fb2d7cc006279afac59fbd5f862e4d2273fbfb4176080d33dd7827716d8b SHA512 c46a6b443dfc3aa31f7a1bd69bbdcb5188731e718fea3991e2a69a19dd96a992e0984966f4a2b8f7501f3c1d3fe8d74b808cf972d5a57bafaaaf968e53e076b1 WHIRLPOOL d16aea24f8863af6c70b3d94ccb56ad2e44af73b8ae1646a5c6b0040e9f93466dc825808743c6936a113369f7ae5d8c40d6e53dc1f6b99f7fc950e8ae3db266b
 AUX 2.20/glibc-2.20-gentoo-chk_fail.c 8978 SHA256 f9cc426b0fb21de1dc11bb36e43bca8e1b3114fe78f8b343f672a951a82c742e SHA512 5cb529ac9d18a315f25fd48a3a80a529924bee0588074c97e6df7dbe8568a67f786363c41da6300ea55818369e3609ed4315b2e2104f8a8b4f1266ba43076eda WHIRLPOOL 2d38c19a20226fc4687037b8bb19025065f039ddaa62466879ca98765c8899e64b147dd148565304419ed1a98fbe1f8403710b22c930b08a19bddba7e79b0f1d
 AUX 2.20/glibc-2.20-gentoo-stack_chk_fail.c 55 SHA256 ec73e74297b5eade591bfb3a2999989e2a7aa80752140048ffa67349635f05e7 SHA512 4dfec1bd17007b826110dcb73d09331a58b7a892c87de55b94480b14c28686442c567725b610082813411cf9911e180835a400a54ea704fe80f81cfba966a989 WHIRLPOOL b2b338a50f7895c530a71a19e4582bd0116a0b9d13b2e1505f0566924557493849f93cefb2c0ad1719ef684321e145129e0f72cfc9aa85a44ea7ebf910e7304c
 AUX 2.20/glibc-2.20-hardened-inittls-nosysenter.patch 9951 SHA256 992fb70b9b62674d94ef8938297a3f2591b3121495987d927f5a44c1d8788658 SHA512 a8302ee2963bd791be859233223b17cd154afbf04c13c046956bb1140d748272d7bcb3a6167ce8b61573ebcffe906dff064308374d2910656b8fad18480fe422 WHIRLPOOL b8753d6f1301650b91b5cf4f342de22010d819deb2bf4da27aac33d7540e15a140b8a7a4c5e111faba320873ed5784b22f6add29181fbaef14c3e9504b1b838f
-AUX 2.20/glibc-2.20-shadow-prefix.patch 749 SHA256 354583917144a16fcf4bd986521d345b8f45ad6c1b13443d578ab6627e46b597 SHA512 eb0a7f19448fed82efdb7972fa23be0a341d005d47395915c0b963d2b4d807fae446660d4903aa2547e9044802294c65120ab22fe35137754db33e6f941b71e4 WHIRLPOOL 7be293997a47e9c58a6d8f3192ad302066a424c5f8a03097756f8897a0008a1ec63da62d4b94e4d6a6cf5f36313a6ddd474cb0fe6dd9eea42511418da03c7c6d
 AUX 2.20/glibc-2.20-vdso-disable.patch 725 SHA256 476d1198e990a0beb42a7350c52c34783de33d0364ab3e11d9b74a81e027977b SHA512 2c47efc06aa93eea18e6d407c2b1cfdaa80b374bdaf7ad257ca02857aab53d7a6ec46092872d3affff2ec800f6937012571115b8c83d116084c21f8130c4fdd6 WHIRLPOOL fb919be2a23f5a240817dc8540582915cb0e0497196237a7bcd891113738b81072e96f4af4668d0ebd05094c2983c411265267bbcfc2be96c5ff33f37fe7f936
 AUX 2.3.3/glibc-2.3.3-localedef-fix-trampoline.patch 2329 SHA256 b5cf51d1ff5479d09fbc82992f126ca4969006c90c3a2ae94ad586d4902d791b SHA512 939ec7da977837ef46aa8894f99ac06b3fccfc36dd672889b85ae8cbbfc9a963c5d0c031d776aa2feee29ddf8341b4cc7a50ea19b7c6f7e80df74eef5f1fd977 WHIRLPOOL 47d248ddba815a517aed9b7dbfa247bdedf293cb5adad8079be803ea4a682136f01b47fd3817a1696b3758c4631d1a25376bf58ef039998ace4a6b65807fe75e
 AUX 2.5/glibc-2.5-gentoo-stack_chk_fail.c 9058 SHA256 067fba2a36d2630d50198c44395ef208cdf080508f1b716bd3d079f7b964e2df SHA512 2d404bec1e009d111b775fde620102b3d0ea7614d07ba31350940f2693e937e825acc43d1ab94bad2eecac61d47c696098327096dff8f08b4b7312d0873d71a6 WHIRLPOOL bb27ef90afb256d3822787b93574d4f4f5632995663e08b7201db17a4f38f6e2a8fd6368aaf699a808cd8f7acc346625b5607dcbf1e88f8b28dcc6d3dba92399
@@ -90,7 +90,7 @@ EBUILD glibc-2.15-r2.ebuild 7692 SHA256 1ee891da4bbb450ce16318877a9043773c34a741
 EBUILD glibc-2.15-r3.ebuild 7764 SHA256 17540bbede72db02e113f556cd3c4a6873c45be1191bade644b5a78d2557c673 SHA512 b9f856356a1dad8f51a62610defce3984477e7f8265427c7e6d21c7868bb6756de4f66b16d3184fd51180155112339e33547a2348d55a2cf1059ccbdf68f0c3f WHIRLPOOL 9c36e9f55427b2cf0180db983446d572d63be309e64b42bbe3571105446f4eddaa815081faf79fe6fc639e3ddf3e3720f11e7af2e85ea19125ef561176eaeff5
 EBUILD glibc-2.16.0.ebuild 7495 SHA256 d498eb21c832602c2711b4fd8607bbb36cbbbcd701405c5f84e2dbbe9ac81774 SHA512 caa429992f3510b4a530fb7d700ba8e67664d5df406ecd198bb7481009e4413cbf9a8f366b77f0e4949670f56dd5e21d7fccee13aa4d13684cfdb8ccf6054aa9 WHIRLPOOL 1f3a56785e164b4d2f8f258bc44b6a324dee3cecd8231b030ac68efdcc007c7cc906519d4f3f3585ed327bc572b8a2ded827afdeed9aaad1b81aeeca915571f7
 EBUILD glibc-2.17.ebuild 7660 SHA256 2c8265a15c54486846ad9928aef4de401470b8874c501c4d8120246a8c8d7900 SHA512 31ed1869e4f8f586edf928973eed5ae7f8ca10ad1fad9edeb58e4fcf65a7b1a76e257559627e88ca37047f067fe33dae3d69a24b3da7954af93209a5ae8c5253 WHIRLPOOL f09a27c5d118d182533deb68d84c3708329cbc6d844bc78ac28036858f0e625294d21cce645808326c84b9b98d25726a79c29818a938bf023bdb1cccd43f7bf2
-EBUILD glibc-2.20.ebuild 6980 SHA256 27188d7556269073cc6d074b6d67f93aec9eb9bfb5e488b88e6140cb5e02ecc5 SHA512 ae9cd6c83087d5a9c5b37afb5dd06ab41f964e6976ba555934225b30c527d77f132cd7b376d90763d1e288f735650e54a561748e8b168860042c57b06769353f WHIRLPOOL 9ae6a441359452780ced5757ffd3a662241019c3177b623f462609bad35de0950e1bcdffa91110bc8f9dda4e33a329a8faa7551e9d6c531dc5039a48be92a539
+EBUILD glibc-2.20.ebuild 6865 SHA256 cde32f02960587d06711502a06ee134422d8ed0442c6b91ba6a3c78a38b8ed60 SHA512 fd0b85b71bb525b0575cf6d9336676c273cb29b2731192774c026d5e7124ecad0158a763bd11023eca02da763a9f853cd86c7f120dc58083f1715fbc5565ba6b WHIRLPOOL ade288570fa373c42944ca9dd8009fe29d6e93afc7b1adfe2baab08a7631a180fab6530eb65867bdc9805993978bcce7c6207a9844c6eb22904dd2bfb9145058
 EBUILD glibc-2.9_p20081201-r3.ebuild 6770 SHA256 87e75b306b69d170c7fd6083c7a40303ea292616a810c3e5302eb13ff72932b8 SHA512 3dc0d6f0b99a1e83caa8a152bb7752b8b504324876bed83657b683c73f8a3432150cb5d3b42aea11d064ee9d1a4d1788dab6c9da11cfc5cf716c214ec145e177 WHIRLPOOL 9fec37815cd88eab81f4452e02e13b96e13b1ad8284b1be7f77213280da54a9de85275cf665307d3920e36c3bc02f6005acd5316f6f2ed3dac5b3b60a80690b0
 EBUILD glibc-9999.ebuild 6619 SHA256 523f30d0bd4fb9aef983b7e62e57239d089251d0f3907b6dfb70a00cbc0c2e6c SHA512 2d875c8434720b700bfc99836870e625b7c3010178a4a501e435832e826e7008764878d1e4f88d9f568d21f97de56589bff7984b37d3e9840f19492585cfe16f WHIRLPOOL 7da4b26e63d4f79592891ebd1cf1fb915d40049e8feeb61d9c55f7af601bfe2b7f1a03b1aed51f95be0451c90e93992920949c92ccd2401a0c129b600f5afdb9
 MISC ChangeLog 59116 SHA256 c145cda049346dfd34078de4c7b7823136c0f4a25aab7bf2c479481966b74de2 SHA512 e2d51f169bde9d5c9ba4cd85857717b8d2fdc81e8f50fad9be9a9e426efd721de0523038960b1ea615b32d6d61a5bcc929d42a18d2db3732e008548ff3b3250e WHIRLPOOL 9bc612e38b91c84c3de5dbee260207321fdc0069c64851be83f294ecec0391ddf399a7ebe8d45a4ba5169b099597fed4edf9023541f95355028f37a01f79cda1

diff --git a/sys-libs/glibc/files/2.17/glibc-2.17-runtime-prefix.patch b/sys-libs/glibc/files/2.17/glibc-2.17-runtime-prefix.patch
index fd66bb9..3d16944 100644
--- a/sys-libs/glibc/files/2.17/glibc-2.17-runtime-prefix.patch
+++ b/sys-libs/glibc/files/2.17/glibc-2.17-runtime-prefix.patch
@@ -1,267 +1,3 @@
-Index: work/glibc-2.17/glibc-compat/nss_compat/compat-grp.c
-===================================================================
---- work.orig/glibc-2.17/glibc-compat/nss_compat/compat-grp.c
-+++ work/glibc-2.17/glibc-compat/nss_compat/compat-grp.c
-@@ -89,7 +89,7 @@ internal_setgrent (ent_t *ent)
- 
-   if (ent->stream == NULL)
-     {
--      ent->stream = fopen ("/etc/group", "r");
-+      ent->stream = fopen ("@GENTOO_PORTAGE_EPREFIX@/etc/group", "r");
- 
-       if (ent->stream == NULL)
- 	status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
-Index: work/glibc-2.17/glibc-compat/nss_compat/compat-pwd.c
-===================================================================
---- work.orig/glibc-2.17/glibc-compat/nss_compat/compat-pwd.c
-+++ work/glibc-2.17/glibc-compat/nss_compat/compat-pwd.c
-@@ -205,7 +205,7 @@ internal_setpwent (ent_t *ent)
- 
-   if (ent->stream == NULL)
-     {
--      ent->stream = fopen ("/etc/passwd", "r");
-+      ent->stream = fopen ("@GENTOO_PORTAGE_EPREFIX@/etc/passwd", "r");
- 
-       if (ent->stream == NULL)
- 	status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
-Index: work/glibc-2.17/glibc-compat/nss_compat/compat-spwd.c
-===================================================================
---- work.orig/glibc-2.17/glibc-compat/nss_compat/compat-spwd.c
-+++ work/glibc-2.17/glibc-compat/nss_compat/compat-spwd.c
-@@ -157,7 +157,7 @@ internal_setspent (ent_t *ent)
- 
-   if (ent->stream == NULL)
-     {
--      ent->stream = fopen ("/etc/shadow", "r");
-+      ent->stream = fopen ("@GENTOO_PORTAGE_EPREFIX@/etc/shadow", "r");
- 
-       if (ent->stream == NULL)
- 	status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
-Index: work/glibc-2.17/glibc-compat/nss_files/files-netgrp.c
-===================================================================
---- work.orig/glibc-2.17/glibc-compat/nss_files/files-netgrp.c
-+++ work/glibc-2.17/glibc-compat/nss_files/files-netgrp.c
-@@ -27,7 +27,7 @@
- #include "nsswitch.h"
- #include "netgroup.h"
- 
--#define DATAFILE	"/etc/netgroup"
-+#define DATAFILE	"@GENTOO_PORTAGE_EPREFIX@/etc/netgroup"
- 
- 
- #define EXPAND(needed)							      \
-Index: work/glibc-2.17/nis/nss_compat/compat-grp.c
-===================================================================
---- work.orig/glibc-2.17/nis/nss_compat/compat-grp.c
-+++ work/glibc-2.17/nis/nss_compat/compat-grp.c
-@@ -120,7 +120,7 @@ internal_setgrent (ent_t *ent, int stayo
- 
-   if (ent->stream == NULL)
-     {
--      ent->stream = fopen ("/etc/group", "rme");
-+      ent->stream = fopen ("@GENTOO_PORTAGE_EPREFIX@/etc/group", "rme");
- 
-       if (ent->stream == NULL)
- 	status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
-Index: work/glibc-2.17/nis/nss_compat/compat-initgroups.c
-===================================================================
---- work.orig/glibc-2.17/nis/nss_compat/compat-initgroups.c
-+++ work/glibc-2.17/nis/nss_compat/compat-initgroups.c
-@@ -136,7 +136,7 @@ internal_setgrent (ent_t *ent)
-   else
-     ent->blacklist.current = 0;
- 
--  ent->stream = fopen ("/etc/group", "rme");
-+  ent->stream = fopen ("@GENTOO_PORTAGE_EPREFIX@/etc/group", "rme");
- 
-   if (ent->stream == NULL)
-     status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
-Index: work/glibc-2.17/nis/nss_compat/compat-pwd.c
-===================================================================
---- work.orig/glibc-2.17/nis/nss_compat/compat-pwd.c
-+++ work/glibc-2.17/nis/nss_compat/compat-pwd.c
-@@ -236,7 +236,7 @@ internal_setpwent (ent_t *ent, int stayo
- 
-   if (ent->stream == NULL)
-     {
--      ent->stream = fopen ("/etc/passwd", "rme");
-+      ent->stream = fopen ("@GENTOO_PORTAGE_EPREFIX@/etc/passwd", "rme");
- 
-       if (ent->stream == NULL)
- 	status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
-Index: work/glibc-2.17/nis/nss_compat/compat-spwd.c
-===================================================================
---- work.orig/glibc-2.17/nis/nss_compat/compat-spwd.c
-+++ work/glibc-2.17/nis/nss_compat/compat-spwd.c
-@@ -192,7 +192,7 @@ internal_setspent (ent_t *ent, int stayo
- 
-   if (ent->stream == NULL)
-     {
--      ent->stream = fopen ("/etc/shadow", "rme");
-+      ent->stream = fopen ("@GENTOO_PORTAGE_EPREFIX@/etc/shadow", "rme");
- 
-       if (ent->stream == NULL)
- 	status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
-Index: work/glibc-2.17/nss/db-Makefile
-===================================================================
---- work.orig/glibc-2.17/nss/db-Makefile
-+++ work/glibc-2.17/nss/db-Makefile
-@@ -18,11 +18,11 @@
- # License along with the GNU C Library; if not, see
- # <http://www.gnu.org/licenses/>.
- 
--DATABASES = $(wildcard /etc/passwd /etc/group /etc/ethers /etc/protocols \
--		       /etc/rpc /etc/services /etc/shadow /etc/gshadow \
--		       /etc/netgroup)
-+DATABASES = $(wildcard @GENTOO_PORTAGE_EPREFIX@/etc/passwd @GENTOO_PORTAGE_EPREFIX@/etc/group @GENTOO_PORTAGE_EPREFIX@/etc/ethers @GENTOO_PORTAGE_EPREFIX@/etc/protocols \
-+		       @GENTOO_PORTAGE_EPREFIX@/etc/rpc @GENTOO_PORTAGE_EPREFIX@/etc/services @GENTOO_PORTAGE_EPREFIX@/etc/shadow @GENTOO_PORTAGE_EPREFIX@/etc/gshadow \
-+		       @GENTOO_PORTAGE_EPREFIX@/etc/netgroup)
- 
--VAR_DB = /var/db
-+VAR_DB = @GENTOO_PORTAGE_EPREFIX@/var/db
- 
- AWK = awk
- MAKEDB = makedb --quiet
-@@ -30,7 +30,7 @@ MAKEDB = makedb --quiet
- all: $(patsubst %,$(VAR_DB)/%.db,$(notdir $(DATABASES)))
- 
- 
--$(VAR_DB)/passwd.db: /etc/passwd
-+$(VAR_DB)/passwd.db: @GENTOO_PORTAGE_EPREFIX@/etc/passwd
- 	@echo -n "$(patsubst %.db,%,$(@F))... "
- 	@$(AWK) 'BEGIN { FS=":"; OFS=":" } \
- 		 /^[ \t]*$$/ { next } \
-@@ -40,7 +40,7 @@ $(VAR_DB)/passwd.db: /etc/passwd
- 	$(MAKEDB) -o $@ -
- 	@echo "done."
- 
--$(VAR_DB)/group.db: /etc/group
-+$(VAR_DB)/group.db: @GENTOO_PORTAGE_EPREFIX@/etc/group
- 	@echo -n "$(patsubst %.db,%,$(@F))... "
- 	@$(AWK) 'BEGIN { FS=":"; OFS=":" } \
- 		 /^[ \t]*$$/ { next } \
-@@ -62,7 +62,7 @@ $(VAR_DB)/group.db: /etc/group
- 	$(MAKEDB) -o $@ -
- 	@echo "done."
- 
--$(VAR_DB)/ethers.db: /etc/ethers
-+$(VAR_DB)/ethers.db: @GENTOO_PORTAGE_EPREFIX@/etc/ethers
- 	@echo -n "$(patsubst %.db,%,$(@F))... "
- 	@$(AWK) '/^[ \t]*$$/ { next } \
- 		 /^[ \t]*#/ { next } \
-@@ -71,7 +71,7 @@ $(VAR_DB)/ethers.db: /etc/ethers
- 	$(MAKEDB) -o $@ -
- 	@echo "done."
- 
--$(VAR_DB)/protocols.db: /etc/protocols
-+$(VAR_DB)/protocols.db: @GENTOO_PORTAGE_EPREFIX@/etc/protocols
- 	@echo -n "$(patsubst %.db,%,$(@F))... "
- 	@$(AWK) '/^[ \t]*$$/ { next } \
- 		 /^[ \t]*#/ { next } \
-@@ -82,7 +82,7 @@ $(VAR_DB)/protocols.db: /etc/protocols
- 	$(MAKEDB) -o $@ -
- 	@echo "done."
- 
--$(VAR_DB)/rpc.db: /etc/rpc
-+$(VAR_DB)/rpc.db: @GENTOO_PORTAGE_EPREFIX@/etc/rpc
- 	@echo -n "$(patsubst %.db,%,$(@F))... "
- 	@$(AWK) '/^[ \t]*$$/ { next } \
- 		 /^[ \t]*#/ { next } \
-@@ -93,7 +93,7 @@ $(VAR_DB)/rpc.db: /etc/rpc
- 	$(MAKEDB) -o $@ -
- 	@echo "done."
- 
--$(VAR_DB)/services.db: /etc/services
-+$(VAR_DB)/services.db: @GENTOO_PORTAGE_EPREFIX@/etc/services
- 	@echo -n "$(patsubst %.db,%,$(@F))... "
- 	@$(AWK) 'BEGIN { FS="[ \t/]+" } \
- 		 /^[ \t]*$$/ { next } \
-@@ -109,7 +109,7 @@ $(VAR_DB)/services.db: /etc/services
- 	$(MAKEDB) -o $@ -
- 	@echo "done."
- 
--$(VAR_DB)/shadow.db: /etc/shadow
-+$(VAR_DB)/shadow.db: @GENTOO_PORTAGE_EPREFIX@/etc/shadow
- 	@echo -n "$(patsubst %.db,%,$(@F))... "
- 	@$(AWK) 'BEGIN { FS=":"; OFS=":" } \
- 		 /^[ \t]*$$/ { next } \
-@@ -129,7 +129,7 @@ $(VAR_DB)/shadow.db: /etc/shadow
- 	  echo; \
- 	fi
- 
--$(VAR_DB)/gshadow.db: /etc/gshadow
-+$(VAR_DB)/gshadow.db: @GENTOO_PORTAGE_EPREFIX@/etc/gshadow
- 	@echo -n "$(patsubst %.db,%,$(@F))... "
- 	@$(AWK) 'BEGIN { FS=":"; OFS=":" } \
- 		 /^[ \t]*$$/ { next } \
-@@ -149,7 +149,7 @@ $(VAR_DB)/gshadow.db: /etc/gshadow
- 	  echo; \
- 	fi
- 
--$(VAR_DB)/netgroup.db: /etc/netgroup
-+$(VAR_DB)/netgroup.db: @GENTOO_PORTAGE_EPREFIX@/etc/netgroup
- 	@echo -n "$(patsubst %.db,%,$(@F))... "
- 	@$(AWK) 'BEGIN { ini=1 } \
- 		 /^[ \t]*$$/ { next } \
-Index: work/glibc-2.17/nss/nss_files/files-init.c
-===================================================================
---- work.orig/glibc-2.17/nss/nss_files/files-init.c
-+++ work/glibc-2.17/nss/nss_files/files-init.c
-@@ -34,12 +34,12 @@ static union							\
-     }								\
-   }
- 
--TF (pwd, "/etc/passwd");
--TF (grp, "/etc/group");
--TF (hst, "/etc/hosts");
--TF (resolv, "/etc/resolv.conf", .call_res_init = 1);
--TF (serv, "/etc/services");
--TF (netgr, "/etc/netgroup");
-+TF (pwd, "@GENTOO_PORTAGE_EPREFIX@/etc/passwd");
-+TF (grp, "@GENTOO_PORTAGE_EPREFIX@/etc/group");
-+TF (hst, "@GENTOO_PORTAGE_EPREFIX@/etc/hosts");
-+TF (resolv, "@GENTOO_PORTAGE_EPREFIX@/etc/resolv.conf", .call_res_init = 1);
-+TF (serv, "@GENTOO_PORTAGE_EPREFIX@/etc/services");
-+TF (netgr, "@GENTOO_PORTAGE_EPREFIX@/etc/netgroup");
- 
- 
- void
-Index: work/glibc-2.17/nss/nss_files/files-initgroups.c
-===================================================================
---- work.orig/glibc-2.17/nss/nss_files/files-initgroups.c
-+++ work/glibc-2.17/nss/nss_files/files-initgroups.c
-@@ -31,7 +31,7 @@ _nss_files_initgroups_dyn (const char *u
- 			   long int *size, gid_t **groupsp, long int limit,
- 			   int *errnop)
- {
--  FILE *stream = fopen ("/etc/group", "rce");
-+  FILE *stream = fopen ("@GENTOO_PORTAGE_EPREFIX@/etc/group", "rce");
-   if (stream == NULL)
-     {
-       *errnop = errno;
-Index: work/glibc-2.17/resolv/netdb.h
-===================================================================
---- work.orig/glibc-2.17/resolv/netdb.h
-+++ work/glibc-2.17/resolv/netdb.h
-@@ -42,12 +42,12 @@
- #include <bits/netdb.h>
- 
- /* Absolute file name for network data base files.  */
--#define	_PATH_HEQUIV		"/etc/hosts.equiv"
--#define	_PATH_HOSTS		"/etc/hosts"
--#define	_PATH_NETWORKS		"/etc/networks"
--#define	_PATH_NSSWITCH_CONF	"/etc/nsswitch.conf"
--#define	_PATH_PROTOCOLS		"/etc/protocols"
--#define	_PATH_SERVICES		"/etc/services"
-+#define	_PATH_HEQUIV		"@GENTOO_PORTAGE_EPREFIX@/etc/hosts.equiv"
-+#define	_PATH_HOSTS		"@GENTOO_PORTAGE_EPREFIX@/etc/hosts"
-+#define	_PATH_NETWORKS		"@GENTOO_PORTAGE_EPREFIX@/etc/networks"
-+#define	_PATH_NSSWITCH_CONF	"@GENTOO_PORTAGE_EPREFIX@/etc/nsswitch.conf"
-+#define	_PATH_PROTOCOLS		"@GENTOO_PORTAGE_EPREFIX@/etc/protocols"
-+#define	_PATH_SERVICES		"@GENTOO_PORTAGE_EPREFIX@/etc/services"
- 
- 
- __BEGIN_DECLS
 Index: work/glibc-2.17/sysdeps/generic/paths.h
 ===================================================================
 --- work.orig/glibc-2.17/sysdeps/generic/paths.h
@@ -398,32 +134,6 @@ Index: work/glibc-2.17/sysdeps/unix/sysv/linux/paths.h
  #define	_PATH_VARTMP	"/var/tmp/"
  
  #endif /* !_PATHS_H_ */
-Index: work/glibc-2.17/nss/bug-erange.c
-===================================================================
---- work.orig/glibc-2.17/nss/bug-erange.c
-+++ work/glibc-2.17/nss/bug-erange.c
-@@ -37,7 +37,7 @@ main (void)
-     {
-       printf ("gethostbyname_r failed: %s (errno: %m)\n", strerror (res));
- 
--      if (access ("/etc/resolv.conf", R_OK))
-+      if (access ("@GENTOO_PORTAGE_EPREFIX@/etc/resolv.conf", R_OK))
- 	{
- 	  puts ("DNS probably not set up");
- 	  return 0;
-Index: work/glibc-2.17/resolv/resolv.h
-===================================================================
---- work.orig/glibc-2.17/resolv/resolv.h
-+++ work/glibc-2.17/resolv/resolv.h
-@@ -170,7 +170,7 @@ typedef struct __res_state *res_state;
-  */
- 
- #ifndef _PATH_RESCONF
--#define _PATH_RESCONF        "/etc/resolv.conf"
-+#define _PATH_RESCONF        "@GENTOO_PORTAGE_EPREFIX@/etc/resolv.conf"
- #endif
- 
- struct res_sym {
 Index: work/glibc-2.17/sysdeps/posix/system.c
 ===================================================================
 --- work.orig/glibc-2.17/sysdeps/posix/system.c

diff --git a/sys-libs/glibc/files/2.20/glibc-2.20-configurable-paths.patch b/sys-libs/glibc/files/2.20/glibc-2.20-configurable-paths.patch
new file mode 100644
index 0000000..395b911
--- /dev/null
+++ b/sys-libs/glibc/files/2.20/glibc-2.20-configurable-paths.patch
@@ -0,0 +1,2812 @@
+Index: glibc-2.20/nis/Makefile
+===================================================================
+--- glibc-2.20.orig/nis/Makefile
++++ glibc-2.20/nis/Makefile
+@@ -58,6 +58,11 @@ libnsl-routines = yp_xdr ypclnt ypupdate
+ 		  nis_clone_res nss-default
+ 
+ libnss_compat-routines	:= $(addprefix compat-,grp pwd spwd initgroups)
++SYSCONF-FLAGS := -D'SYSCONFDIR="$(sysconfdir)"'
++CPPFLAGS-compat-grp.c = $(SYSCONF-FLAGS)
++CPPFLAGS-compat-pwd.c = $(SYSCONF-FLAGS)
++CPPFLAGS-compat-spwd.c = $(SYSCONF-FLAGS)
++CPPFLAGS-compat-initgroups.c = $(SYSCONF-FLAGS)
+ libnss_compat-inhibit-o	= $(filter-out .os,$(object-suffixes))
+ 
+ libnss_nis-routines	:= $(addprefix nis-,$(databases)) nis-initgroups \
+Index: glibc-2.20/nis/nss_compat/compat-grp.c
+===================================================================
+--- glibc-2.20.orig/nis/nss_compat/compat-grp.c
++++ glibc-2.20/nis/nss_compat/compat-grp.c
+@@ -120,7 +120,7 @@ internal_setgrent (ent_t *ent, int stayo
+ 
+   if (ent->stream == NULL)
+     {
+-      ent->stream = fopen ("/etc/group", "rme");
++      ent->stream = fopen (SYSCONFDIR "/group", "rme");
+ 
+       if (ent->stream == NULL)
+ 	status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
+Index: glibc-2.20/nis/nss_compat/compat-initgroups.c
+===================================================================
+--- glibc-2.20.orig/nis/nss_compat/compat-initgroups.c
++++ glibc-2.20/nis/nss_compat/compat-initgroups.c
+@@ -136,7 +136,7 @@ internal_setgrent (ent_t *ent)
+   else
+     ent->blacklist.current = 0;
+ 
+-  ent->stream = fopen ("/etc/group", "rme");
++  ent->stream = fopen (SYSCONFDIR "/group", "rme");
+ 
+   if (ent->stream == NULL)
+     status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
+Index: glibc-2.20/nis/nss_compat/compat-pwd.c
+===================================================================
+--- glibc-2.20.orig/nis/nss_compat/compat-pwd.c
++++ glibc-2.20/nis/nss_compat/compat-pwd.c
+@@ -235,7 +235,7 @@ internal_setpwent (ent_t *ent, int stayo
+ 
+   if (ent->stream == NULL)
+     {
+-      ent->stream = fopen ("/etc/passwd", "rme");
++      ent->stream = fopen (SYSCONFDIR "/passwd", "rme");
+ 
+       if (ent->stream == NULL)
+ 	status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
+Index: glibc-2.20/nis/nss_compat/compat-spwd.c
+===================================================================
+--- glibc-2.20.orig/nis/nss_compat/compat-spwd.c
++++ glibc-2.20/nis/nss_compat/compat-spwd.c
+@@ -191,7 +191,7 @@ internal_setspent (ent_t *ent, int stayo
+ 
+   if (ent->stream == NULL)
+     {
+-      ent->stream = fopen ("/etc/shadow", "rme");
++      ent->stream = fopen (SYSCONFDIR "/shadow", "rme");
+ 
+       if (ent->stream == NULL)
+ 	status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
+Index: glibc-2.20/nss/Makefile
+===================================================================
+--- glibc-2.20.orig/nss/Makefile
++++ glibc-2.20/nss/Makefile
+@@ -41,6 +41,8 @@ extra-objs		+= $(makedb-modules:=.o)
+ 
+ tests			= test-netdb tst-nss-test1 test-digits-dots
+ xtests			= bug-erange
++SYSCONF-FLAGS := -D'SYSCONFDIR="$(sysconfdir)"'
++CPPFLAGS-bug-erange.c = $(SYSCONF-FLAGS)
+ 
+ # Specify rules for the nss_* modules.  We have some services.
+ services		:= files db
+@@ -57,6 +59,8 @@ vpath %.c $(subdir-dirs) ../locale/progr
+ 
+ libnss_files-routines	:= $(addprefix files-,$(databases)) \
+ 			   files-initgroups files-have_o_cloexec files-init
++CPPFLAGS-files-init.c = $(SYSCONF-FLAGS)
++CPPFLAGS-files-initgroups.c = $(SYSCONF-FLAGS)
+ 
+ libnss_db-dbs		:= $(addprefix db-,\
+ 				       $(filter-out hosts network key alias,\
+@@ -102,7 +106,7 @@ $(libnss_db-dbs:%=$(objpfx)%.c): $(objpf
+ 
+ $(objpfx)makedb: $(makedb-modules:%=$(objpfx)%.o)
+ 
+-$(inst_vardbdir)/Makefile: db-Makefile $(+force)
++$(inst_vardbdir)/Makefile: $(objpfx)db-Makefile $(+force)
+ 	$(do-install)
+ 
+ CFLAGS-nss_test1.c = -DNOT_IN_libc=1
+Index: glibc-2.20/nss/bug-erange.c
+===================================================================
+--- glibc-2.20.orig/nss/bug-erange.c
++++ glibc-2.20/nss/bug-erange.c
+@@ -37,7 +37,7 @@ main (void)
+     {
+       printf ("gethostbyname_r failed: %s (errno: %m)\n", strerror (res));
+ 
+-      if (access ("/etc/resolv.conf", R_OK))
++      if (access (SYSCONFDIR "/resolv.conf", R_OK))
+ 	{
+ 	  puts ("DNS probably not set up");
+ 	  return 0;
+Index: glibc-2.20/nss/nss_files/files-init.c
+===================================================================
+--- glibc-2.20.orig/nss/nss_files/files-init.c
++++ glibc-2.20/nss/nss_files/files-init.c
+@@ -35,33 +35,33 @@ static union							\
+     }								\
+   }
+ 
+-TF (pwd, "/etc/passwd");
+-TF (grp, "/etc/group");
+-TF (hst, "/etc/hosts");
+-TF (resolv, "/etc/resolv.conf", .call_res_init = 1);
+-TF (serv, "/etc/services");
+-TF (netgr, "/etc/netgroup");
++TF (pwd, SYSCONFDIR "/passwd");
++TF (grp, SYSCONFDIR "/group");
++TF (hst, SYSCONFDIR "/hosts");
++TF (resolv, SYSCONFDIR "/resolv.conf", .call_res_init = 1);
++TF (serv, SYSCONFDIR "/services");
++TF (netgr, SYSCONFDIR "/netgroup");
+ 
+ 
+ void
+ _nss_files_init (void (*cb) (size_t, struct traced_file *))
+ {
+-  strcpy (pwd_traced_file.file.fname, "/etc/passwd");
++  strcpy (pwd_traced_file.file.fname, SYSCONFDIR "/passwd");
+   cb (pwddb, &pwd_traced_file.file);
+ 
+-  strcpy (grp_traced_file.file.fname, "/etc/group");
++  strcpy (grp_traced_file.file.fname, SYSCONFDIR "/group");
+   cb (grpdb, &grp_traced_file.file);
+ 
+-  strcpy (hst_traced_file.file.fname, "/etc/hosts");
++  strcpy (hst_traced_file.file.fname, SYSCONFDIR "/hosts");
+   cb (hstdb, &hst_traced_file.file);
+ 
+-  strcpy (resolv_traced_file.file.fname, "/etc/resolv.conf");
++  strcpy (resolv_traced_file.file.fname, SYSCONFDIR "/resolv.conf");
+   cb (hstdb, &resolv_traced_file.file);
+ 
+-  strcpy (serv_traced_file.file.fname, "/etc/services");
++  strcpy (serv_traced_file.file.fname, SYSCONFDIR "/services");
+   cb (servdb, &serv_traced_file.file);
+ 
+-  strcpy (netgr_traced_file.file.fname, "/etc/netgroup");
++  strcpy (netgr_traced_file.file.fname, SYSCONFDIR "/netgroup");
+   cb (netgrdb, &netgr_traced_file.file);
+ }
+ 
+Index: glibc-2.20/nss/nss_files/files-initgroups.c
+===================================================================
+--- glibc-2.20.orig/nss/nss_files/files-initgroups.c
++++ glibc-2.20/nss/nss_files/files-initgroups.c
+@@ -31,7 +31,7 @@ _nss_files_initgroups_dyn (const char *u
+ 			   long int *size, gid_t **groupsp, long int limit,
+ 			   int *errnop)
+ {
+-  FILE *stream = fopen ("/etc/group", "rce");
++  FILE *stream = fopen (SYSCONFDIR "/group", "rce");
+   if (stream == NULL)
+     {
+       *errnop = errno;
+Index: glibc-2.20/nss/db-Makefile
+===================================================================
+--- glibc-2.20.orig/nss/db-Makefile
++++ /dev/null
+@@ -1,166 +0,0 @@
+-# Makefile to (re-)generate db versions of system database files.
+-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+-# This file is part of the GNU C Library.
+-# Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
+-#
+-
+-# The GNU C Library is free software; you can redistribute it and/or
+-# modify it under the terms of the GNU Lesser General Public
+-# License as published by the Free Software Foundation; either
+-# version 2.1 of the License, or (at your option) any later version.
+-
+-# The GNU C Library is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-# Lesser General Public License for more details.
+-
+-# You should have received a copy of the GNU Lesser General Public
+-# License along with the GNU C Library; if not, see
+-# <http://www.gnu.org/licenses/>.
+-
+-DATABASES = $(wildcard /etc/passwd /etc/group /etc/ethers /etc/protocols \
+-		       /etc/rpc /etc/services /etc/shadow /etc/gshadow \
+-		       /etc/netgroup)
+-
+-VAR_DB = /var/db
+-
+-AWK = awk
+-MAKEDB = makedb --quiet
+-
+-all: $(patsubst %,$(VAR_DB)/%.db,$(notdir $(DATABASES)))
+-
+-
+-$(VAR_DB)/passwd.db: /etc/passwd
+-	@echo -n "$(patsubst %.db,%,$(@F))... "
+-	@$(AWK) 'BEGIN { FS=":"; OFS=":" } \
+-		 /^[ \t]*$$/ { next } \
+-		 /^[ \t]*#/ { next } \
+-		 /^[^#]/ { printf ".%s ", $$1; print; \
+-			   printf "=%s ", $$3; print }' $^ | \
+-	$(MAKEDB) -o $@ -
+-	@echo "done."
+-
+-$(VAR_DB)/group.db: /etc/group
+-	@echo -n "$(patsubst %.db,%,$(@F))... "
+-	@$(AWK) 'BEGIN { FS=":"; OFS=":" } \
+-		 /^[ \t]*$$/ { next } \
+-		 /^[ \t]*#/ { next } \
+-		 /^[^#]/ { printf ".%s ", $$1; print; \
+-			   printf "=%s ", $$3; print; \
+-			   if ($$4 != "") { \
+-			     split($$4, grmems, ","); \
+-			     for (memidx in grmems) { \
+-			       mem=grmems[memidx]; \
+-			       if (members[mem] == "") \
+-				 members[mem]=$$3; \
+-			       else \
+-				 members[mem]=members[mem] "," $$3; \
+-			     } \
+-			     delete grmems; } } \
+-		 END { for (mem in members) \
+-			 printf ":%s %s %s\n", mem, mem, members[mem]; }' $^ | \
+-	$(MAKEDB) -o $@ -
+-	@echo "done."
+-
+-$(VAR_DB)/ethers.db: /etc/ethers
+-	@echo -n "$(patsubst %.db,%,$(@F))... "
+-	@$(AWK) '/^[ \t]*$$/ { next } \
+-		 /^[ \t]*#/ { next } \
+-		 /^[^#]/ { printf ".%s ", $$1; print; \
+-			   printf "=%s ", $$2; print }' $^ | \
+-	$(MAKEDB) -o $@ -
+-	@echo "done."
+-
+-$(VAR_DB)/protocols.db: /etc/protocols
+-	@echo -n "$(patsubst %.db,%,$(@F))... "
+-	@$(AWK) '/^[ \t]*$$/ { next } \
+-		 /^[ \t]*#/ { next } \
+-		 /^[^#]/ { printf ".%s ", $$1; print; \
+-			   printf "=%s ", $$2; print; \
+-			   for (i = 3; i <= NF && !($$i ~ /^#/); ++i) \
+-			     { printf ".%s ", $$i; print } }' $^ | \
+-	$(MAKEDB) -o $@ -
+-	@echo "done."
+-
+-$(VAR_DB)/rpc.db: /etc/rpc
+-	@echo -n "$(patsubst %.db,%,$(@F))... "
+-	@$(AWK) '/^[ \t]*$$/ { next } \
+-		 /^[ \t]*#/ { next } \
+-		 /^[^#]/ { printf ".%s ", $$1; print; \
+-			   printf "=%s ", $$2; print; \
+-			   for (i = 3; i <= NF && !($$i ~ /^#/); ++i) \
+-			     { printf ".%s ", $$i; print } }' $^ | \
+-	$(MAKEDB) -o $@ -
+-	@echo "done."
+-
+-$(VAR_DB)/services.db: /etc/services
+-	@echo -n "$(patsubst %.db,%,$(@F))... "
+-	@$(AWK) 'BEGIN { FS="[ \t/]+" } \
+-		 /^[ \t]*$$/ { next } \
+-		 /^[ \t]*#/ { next } \
+-		 /^[^#]/ { sub(/[ \t]*#.*$$/, "");\
+-			   printf ":%s/%s ", $$1, $$3; print; \
+-			   printf ":%s/ ", $$1; print; \
+-			   printf "=%s/%s ", $$2, $$3; print; \
+-			   printf "=%s/ ", $$2; print; \
+-			   for (i = 4; i <= NF && !($$i ~ /^#/); ++i) \
+-			     { printf ":%s/%s ", $$i, $$3; print; \
+-			       printf ":%s/ ", $$i; print } }' $^ | \
+-	$(MAKEDB) -o $@ -
+-	@echo "done."
+-
+-$(VAR_DB)/shadow.db: /etc/shadow
+-	@echo -n "$(patsubst %.db,%,$(@F))... "
+-	@$(AWK) 'BEGIN { FS=":"; OFS=":" } \
+-		 /^[ \t]*$$/ { next } \
+-		 /^[ \t]*#/ { next } \
+-		 /^[^#]/ { printf ".%s ", $$1; print }' $^ | \
+-	(umask 077 && $(MAKEDB) -o $@ -)
+-	@echo "done."
+-	@if chgrp shadow $@ 2>/dev/null; then \
+-	  chmod g+r $@; \
+-	else \
+-	  chown 0 $@; chgrp 0 $@; chmod 600 $@; \
+-	  echo; \
+-	  echo "Warning: The shadow password database $@"; \
+-	  echo "has been set to be readable only by root.  You may want"; \
+-	  echo "to make it readable by the \`shadow' group depending"; \
+-	  echo "on your configuration."; \
+-	  echo; \
+-	fi
+-
+-$(VAR_DB)/gshadow.db: /etc/gshadow
+-	@echo -n "$(patsubst %.db,%,$(@F))... "
+-	@$(AWK) 'BEGIN { FS=":"; OFS=":" } \
+-		 /^[ \t]*$$/ { next } \
+-		 /^[ \t]*#/ { next } \
+-		 /^[^#]/ { printf ".%s ", $$1; print }' $^ | \
+-	(umask 077 && $(MAKEDB) -o $@ -)
+-	@echo "done."
+-	@if chgrp shadow $@ 2>/dev/null; then \
+-	  chmod g+r $@; \
+-	else \
+-	  chown 0 $@; chgrp 0 $@; chmod 600 $@; \
+-	  echo; \
+-	  echo "Warning: The shadow group database $@"; \
+-	  echo "has been set to be readable only by root.  You may want"; \
+-	  echo "to make it readable by the \`shadow' group depending"; \
+-	  echo "on your configuration."; \
+-	  echo; \
+-	fi
+-
+-$(VAR_DB)/netgroup.db: /etc/netgroup
+-	@echo -n "$(patsubst %.db,%,$(@F))... "
+-	@$(AWK) 'BEGIN { ini=1 } \
+-		 /^[ \t]*$$/ { next } \
+-		 /^[ \t]*#/ { next } \
+-		 /^[^#]/ { if (sub(/[ \t]*\\$$/, " ") == 0) end="\n"; \
+-			   else end=""; \
+-			   gsub(/[ \t]+/, " "); \
+-			   sub(/^[ \t]*/, ""); \
+-			   if (ini == 0) printf "%s%s", $$0, end; \
+-			   else printf ".%s %s%s", $$1, $$0, end; \
+-			   ini=end == "" ? 0 : 1; } \
+-			   END { if (ini==0) printf "\n" }' $^ | \
+-	$(MAKEDB) -o $@ -
+-	@echo "done."
+Index: glibc-2.20/nss/db-Makefile.in
+===================================================================
+--- /dev/null
++++ glibc-2.20/nss/db-Makefile.in
+@@ -0,0 +1,173 @@
++
++# Makefile to (re-)generate db versions of system database files.
++# Copyright (C) 1996-2014 Free Software Foundation, Inc.
++# This file is part of the GNU C Library.
++# Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
++#
++
++# The GNU C Library is free software; you can redistribute it and/or
++# modify it under the terms of the GNU Lesser General Public
++# License as published by the Free Software Foundation; either
++# version 2.1 of the License, or (at your option) any later version.
++
++# The GNU C Library is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++# Lesser General Public License for more details.
++
++# You should have received a copy of the GNU Lesser General Public
++# License along with the GNU C Library; if not, see
++# <http://www.gnu.org/licenses/>.
++
++DATABASES = $(wildcard @libc_cv_sysconfdir@/passwd	\
++		       @libc_cv_sysconfdir@/group	\
++		       @libc_cv_sysconfdir@/ethers	\
++		       @libc_cv_sysconfdir@/protocols	\
++		       @libc_cv_sysconfdir@/rpc		\
++		       @libc_cv_sysconfdir@/services	\
++		       @libc_cv_sysconfdir@/shadow	\
++		       @libc_cv_sysconfdir@/gshadow	\
++		       @libc_cv_sysconfdir@/netgroup)
++
++VAR_DB = /var/db
++
++AWK = awk
++MAKEDB = makedb --quiet
++
++all: $(patsubst %,$(VAR_DB)/%.db,$(notdir $(DATABASES)))
++
++
++$(VAR_DB)/passwd.db: @libc_cv_sysconfdir@/passwd
++	@echo -n "$(patsubst %.db,%,$(@F))... "
++	@$(AWK) 'BEGIN { FS=":"; OFS=":" } \
++		 /^[ \t]*$$/ { next } \
++		 /^[ \t]*#/ { next } \
++		 /^[^#]/ { printf ".%s ", $$1; print; \
++			   printf "=%s ", $$3; print }' $^ | \
++	$(MAKEDB) -o $@ -
++	@echo "done."
++
++$(VAR_DB)/group.db: @libc_cv_sysconfdir@/group
++	@echo -n "$(patsubst %.db,%,$(@F))... "
++	@$(AWK) 'BEGIN { FS=":"; OFS=":" } \
++		 /^[ \t]*$$/ { next } \
++		 /^[ \t]*#/ { next } \
++		 /^[^#]/ { printf ".%s ", $$1; print; \
++			   printf "=%s ", $$3; print; \
++			   if ($$4 != "") { \
++			     split($$4, grmems, ","); \
++			     for (memidx in grmems) { \
++			       mem=grmems[memidx]; \
++			       if (members[mem] == "") \
++				 members[mem]=$$3; \
++			       else \
++				 members[mem]=members[mem] "," $$3; \
++			     } \
++			     delete grmems; } } \
++		 END { for (mem in members) \
++			 printf ":%s %s %s\n", mem, mem, members[mem]; }' $^ | \
++	$(MAKEDB) -o $@ -
++	@echo "done."
++
++$(VAR_DB)/ethers.db: @libc_cv_sysconfdir@/ethers
++	@echo -n "$(patsubst %.db,%,$(@F))... "
++	@$(AWK) '/^[ \t]*$$/ { next } \
++		 /^[ \t]*#/ { next } \
++		 /^[^#]/ { printf ".%s ", $$1; print; \
++			   printf "=%s ", $$2; print }' $^ | \
++	$(MAKEDB) -o $@ -
++	@echo "done."
++
++$(VAR_DB)/protocols.db: @libc_cv_sysconfdir@/protocols
++	@echo -n "$(patsubst %.db,%,$(@F))... "
++	@$(AWK) '/^[ \t]*$$/ { next } \
++		 /^[ \t]*#/ { next } \
++		 /^[^#]/ { printf ".%s ", $$1; print; \
++			   printf "=%s ", $$2; print; \
++			   for (i = 3; i <= NF && !($$i ~ /^#/); ++i) \
++			     { printf ".%s ", $$i; print } }' $^ | \
++	$(MAKEDB) -o $@ -
++	@echo "done."
++
++$(VAR_DB)/rpc.db: @libc_cv_sysconfdir@/rpc
++	@echo -n "$(patsubst %.db,%,$(@F))... "
++	@$(AWK) '/^[ \t]*$$/ { next } \
++		 /^[ \t]*#/ { next } \
++		 /^[^#]/ { printf ".%s ", $$1; print; \
++			   printf "=%s ", $$2; print; \
++			   for (i = 3; i <= NF && !($$i ~ /^#/); ++i) \
++			     { printf ".%s ", $$i; print } }' $^ | \
++	$(MAKEDB) -o $@ -
++	@echo "done."
++
++$(VAR_DB)/services.db: @libc_cv_sysconfdir@/services
++	@echo -n "$(patsubst %.db,%,$(@F))... "
++	@$(AWK) 'BEGIN { FS="[ \t/]+" } \
++		 /^[ \t]*$$/ { next } \
++		 /^[ \t]*#/ { next } \
++		 /^[^#]/ { sub(/[ \t]*#.*$$/, "");\
++			   printf ":%s/%s ", $$1, $$3; print; \
++			   printf ":%s/ ", $$1; print; \
++			   printf "=%s/%s ", $$2, $$3; print; \
++			   printf "=%s/ ", $$2; print; \
++			   for (i = 4; i <= NF && !($$i ~ /^#/); ++i) \
++			     { printf ":%s/%s ", $$i, $$3; print; \
++			       printf ":%s/ ", $$i; print } }' $^ | \
++	$(MAKEDB) -o $@ -
++	@echo "done."
++
++$(VAR_DB)/shadow.db: @libc_cv_sysconfdir@/shadow
++	@echo -n "$(patsubst %.db,%,$(@F))... "
++	@$(AWK) 'BEGIN { FS=":"; OFS=":" } \
++		 /^[ \t]*$$/ { next } \
++		 /^[ \t]*#/ { next } \
++		 /^[^#]/ { printf ".%s ", $$1; print }' $^ | \
++	(umask 077 && $(MAKEDB) -o $@ -)
++	@echo "done."
++	@if chgrp shadow $@ 2>/dev/null; then \
++	  chmod g+r $@; \
++	else \
++	  chown 0 $@; chgrp 0 $@; chmod 600 $@; \
++	  echo; \
++	  echo "Warning: The shadow password database $@"; \
++	  echo "has been set to be readable only by root.  You may want"; \
++	  echo "to make it readable by the \`shadow' group depending"; \
++	  echo "on your configuration."; \
++	  echo; \
++	fi
++
++$(VAR_DB)/gshadow.db: @libc_cv_sysconfdir@/gshadow
++	@echo -n "$(patsubst %.db,%,$(@F))... "
++	@$(AWK) 'BEGIN { FS=":"; OFS=":" } \
++		 /^[ \t]*$$/ { next } \
++		 /^[ \t]*#/ { next } \
++		 /^[^#]/ { printf ".%s ", $$1; print }' $^ | \
++	(umask 077 && $(MAKEDB) -o $@ -)
++	@echo "done."
++	@if chgrp shadow $@ 2>/dev/null; then \
++	  chmod g+r $@; \
++	else \
++	  chown 0 $@; chgrp 0 $@; chmod 600 $@; \
++	  echo; \
++	  echo "Warning: The shadow group database $@"; \
++	  echo "has been set to be readable only by root.  You may want"; \
++	  echo "to make it readable by the \`shadow' group depending"; \
++	  echo "on your configuration."; \
++	  echo; \
++	fi
++
++$(VAR_DB)/netgroup.db: @libc_cv_sysconfdir@/netgroup
++	@echo -n "$(patsubst %.db,%,$(@F))... "
++	@$(AWK) 'BEGIN { ini=1 } \
++		 /^[ \t]*$$/ { next } \
++		 /^[ \t]*#/ { next } \
++		 /^[^#]/ { if (sub(/[ \t]*\\$$/, " ") == 0) end="\n"; \
++			   else end=""; \
++			   gsub(/[ \t]+/, " "); \
++			   sub(/^[ \t]*/, ""); \
++			   if (ini == 0) printf "%s%s", $$0, end; \
++			   else printf ".%s %s%s", $$1, $$0, end; \
++			   ini=end == "" ? 0 : 1; } \
++			   END { if (ini==0) printf "\n" }' $^ | \
++	$(MAKEDB) -o $@ -
++	@echo "done."
+Index: glibc-2.20/resolv/netdb.h
+===================================================================
+--- glibc-2.20.orig/resolv/netdb.h
++++ /dev/null
+@@ -1,715 +0,0 @@
+-  /* Copyright (C) 1996-2014 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-/* All data returned by the network data base library are supplied in
+-   host order and returned in network order (suitable for use in
+-   system calls).  */
+-
+-#ifndef	_NETDB_H
+-#define	_NETDB_H	1
+-
+-#include <features.h>
+-
+-#include <netinet/in.h>
+-#include <stdint.h>
+-#ifdef __USE_MISC
+-/* This is necessary to make this include file properly replace the
+-   Sun version.  */
+-# include <rpc/netdb.h>
+-#endif
+-
+-#ifdef __USE_GNU
+-# define __need_sigevent_t
+-# include <bits/siginfo.h>
+-# define __need_timespec
+-# include <time.h>
+-#endif
+-
+-#include <bits/netdb.h>
+-
+-/* Absolute file name for network data base files.  */
+-#define	_PATH_HEQUIV		"/etc/hosts.equiv"
+-#define	_PATH_HOSTS		"/etc/hosts"
+-#define	_PATH_NETWORKS		"/etc/networks"
+-#define	_PATH_NSSWITCH_CONF	"/etc/nsswitch.conf"
+-#define	_PATH_PROTOCOLS		"/etc/protocols"
+-#define	_PATH_SERVICES		"/etc/services"
+-
+-
+-__BEGIN_DECLS
+-
+-#if defined __USE_MISC || !defined __USE_XOPEN2K8
+-/* Error status for non-reentrant lookup functions.
+-   We use a macro to access always the thread-specific `h_errno' variable.  */
+-# define h_errno (*__h_errno_location ())
+-
+-/* Function to get address of global `h_errno' variable.  */
+-extern int *__h_errno_location (void) __THROW __attribute__ ((__const__));
+-
+-
+-/* Possible values left in `h_errno'.  */
+-# define HOST_NOT_FOUND	1	/* Authoritative Answer Host not found.  */
+-# define TRY_AGAIN	2	/* Non-Authoritative Host not found,
+-				   or SERVERFAIL.  */
+-# define NO_RECOVERY	3	/* Non recoverable errors, FORMERR, REFUSED,
+-				   NOTIMP.  */
+-# define NO_DATA	4	/* Valid name, no data record of requested
+-				   type.  */
+-#endif
+-#ifdef __USE_MISC
+-# define NETDB_INTERNAL	-1	/* See errno.  */
+-# define NETDB_SUCCESS	0	/* No problem.  */
+-# define NO_ADDRESS	NO_DATA	/* No address, look for MX record.  */
+-#endif
+-
+-#if defined __USE_XOPEN2K || defined __USE_XOPEN_EXTENDED
+-/* Highest reserved Internet port number.  */
+-# define IPPORT_RESERVED	1024
+-#endif
+-
+-#ifdef __USE_GNU
+-/* Scope delimiter for getaddrinfo(), getnameinfo().  */
+-# define SCOPE_DELIMITER	'%'
+-#endif
+-
+-#ifdef __USE_MISC
+-/* Print error indicated by `h_errno' variable on standard error.  STR
+-   if non-null is printed before the error string.  */
+-extern void herror (const char *__str) __THROW;
+-
+-/* Return string associated with error ERR_NUM.  */
+-extern const char *hstrerror (int __err_num) __THROW;
+-#endif
+-
+-
+-/* Description of data base entry for a single host.  */
+-struct hostent
+-{
+-  char *h_name;			/* Official name of host.  */
+-  char **h_aliases;		/* Alias list.  */
+-  int h_addrtype;		/* Host address type.  */
+-  int h_length;			/* Length of address.  */
+-  char **h_addr_list;		/* List of addresses from name server.  */
+-#ifdef __USE_MISC
+-# define	h_addr	h_addr_list[0] /* Address, for backward compatibility.*/
+-#endif
+-};
+-
+-/* Open host data base files and mark them as staying open even after
+-   a later search if STAY_OPEN is non-zero.
+-
+-   This function is a possible cancellation point and therefore not
+-   marked with __THROW.  */
+-extern void sethostent (int __stay_open);
+-
+-/* Close host data base files and clear `stay open' flag.
+-
+-   This function is a possible cancellation point and therefore not
+-   marked with __THROW.  */
+-extern void endhostent (void);
+-
+-/* Get next entry from host data base file.  Open data base if
+-   necessary.
+-
+-   This function is a possible cancellation point and therefore not
+-   marked with __THROW.  */
+-extern struct hostent *gethostent (void);
+-
+-/* Return entry from host data base which address match ADDR with
+-   length LEN and type TYPE.
+-
+-   This function is a possible cancellation point and therefore not
+-   marked with __THROW.  */
+-extern struct hostent *gethostbyaddr (const void *__addr, __socklen_t __len,
+-				      int __type);
+-
+-/* Return entry from host data base for host with NAME.
+-
+-   This function is a possible cancellation point and therefore not
+-   marked with __THROW.  */
+-extern struct hostent *gethostbyname (const char *__name);
+-
+-#ifdef __USE_MISC
+-/* Return entry from host data base for host with NAME.  AF must be
+-   set to the address type which is `AF_INET' for IPv4 or `AF_INET6'
+-   for IPv6.
+-
+-   This function is not part of POSIX and therefore no official
+-   cancellation point.  But due to similarity with an POSIX interface
+-   or due to the implementation it is a cancellation point and
+-   therefore not marked with __THROW.  */
+-extern struct hostent *gethostbyname2 (const char *__name, int __af);
+-
+-/* Reentrant versions of the functions above.  The additional
+-   arguments specify a buffer of BUFLEN starting at BUF.  The last
+-   argument is a pointer to a variable which gets the value which
+-   would be stored in the global variable `herrno' by the
+-   non-reentrant functions.
+-
+-   These functions are not part of POSIX and therefore no official
+-   cancellation point.  But due to similarity with an POSIX interface
+-   or due to the implementation they are cancellation points and
+-   therefore not marked with __THROW.  */
+-extern int gethostent_r (struct hostent *__restrict __result_buf,
+-			 char *__restrict __buf, size_t __buflen,
+-			 struct hostent **__restrict __result,
+-			 int *__restrict __h_errnop);
+-
+-extern int gethostbyaddr_r (const void *__restrict __addr, __socklen_t __len,
+-			    int __type,
+-			    struct hostent *__restrict __result_buf,
+-			    char *__restrict __buf, size_t __buflen,
+-			    struct hostent **__restrict __result,
+-			    int *__restrict __h_errnop);
+-
+-extern int gethostbyname_r (const char *__restrict __name,
+-			    struct hostent *__restrict __result_buf,
+-			    char *__restrict __buf, size_t __buflen,
+-			    struct hostent **__restrict __result,
+-			    int *__restrict __h_errnop);
+-
+-extern int gethostbyname2_r (const char *__restrict __name, int __af,
+-			     struct hostent *__restrict __result_buf,
+-			     char *__restrict __buf, size_t __buflen,
+-			     struct hostent **__restrict __result,
+-			     int *__restrict __h_errnop);
+-#endif	/* misc */
+-
+-
+-/* Open network data base files and mark them as staying open even
+-   after a later search if STAY_OPEN is non-zero.
+-
+-   This function is a possible cancellation point and therefore not
+-   marked with __THROW.  */
+-extern void setnetent (int __stay_open);
+-
+-/* Close network data base files and clear `stay open' flag.
+-
+-   This function is a possible cancellation point and therefore not
+-   marked with __THROW.  */
+-extern void endnetent (void);
+-
+-/* Get next entry from network data base file.  Open data base if
+-   necessary.
+-
+-   This function is a possible cancellation point and therefore not
+-   marked with __THROW.  */
+-extern struct netent *getnetent (void);
+-
+-/* Return entry from network data base which address match NET and
+-   type TYPE.
+-
+-   This function is a possible cancellation point and therefore not
+-   marked with __THROW.  */
+-extern struct netent *getnetbyaddr (uint32_t __net, int __type);
+-
+-/* Return entry from network data base for network with NAME.
+-
+-   This function is a possible cancellation point and therefore not
+-   marked with __THROW.  */
+-extern struct netent *getnetbyname (const char *__name);
+-
+-#ifdef	__USE_MISC
+-/* Reentrant versions of the functions above.  The additional
+-   arguments specify a buffer of BUFLEN starting at BUF.  The last
+-   argument is a pointer to a variable which gets the value which
+-   would be stored in the global variable `herrno' by the
+-   non-reentrant functions.
+-
+-   These functions are not part of POSIX and therefore no official
+-   cancellation point.  But due to similarity with an POSIX interface
+-   or due to the implementation they are cancellation points and
+-   therefore not marked with __THROW.  */
+-extern int getnetent_r (struct netent *__restrict __result_buf,
+-			char *__restrict __buf, size_t __buflen,
+-			struct netent **__restrict __result,
+-			int *__restrict __h_errnop);
+-
+-extern int getnetbyaddr_r (uint32_t __net, int __type,
+-			   struct netent *__restrict __result_buf,
+-			   char *__restrict __buf, size_t __buflen,
+-			   struct netent **__restrict __result,
+-			   int *__restrict __h_errnop);
+-
+-extern int getnetbyname_r (const char *__restrict __name,
+-			   struct netent *__restrict __result_buf,
+-			   char *__restrict __buf, size_t __buflen,
+-			   struct netent **__restrict __result,
+-			   int *__restrict __h_errnop);
+-#endif	/* misc */
+-
+-
+-/* Description of data base entry for a single service.  */
+-struct servent
+-{
+-  char *s_name;			/* Official service name.  */
+-  char **s_aliases;		/* Alias list.  */
+-  int s_port;			/* Port number.  */
+-  char *s_proto;		/* Protocol to use.  */
+-};
+-
+-/* Open service data base files and mark them as staying open even
+-   after a later search if STAY_OPEN is non-zero.
+-
+-   This function is a possible cancellation point and therefore not
+-   marked with __THROW.  */
+-extern void setservent (int __stay_open);
+-
+-/* Close service data base files and clear `stay open' flag.
+-
+-   This function is a possible cancellation point and therefore not
+-   marked with __THROW.  */
+-extern void endservent (void);
+-
+-/* Get next entry from service data base file.  Open data base if
+-   necessary.
+-
+-   This function is a possible cancellation point and therefore not
+-   marked with __THROW.  */
+-extern struct servent *getservent (void);
+-
+-/* Return entry from network data base for network with NAME and
+-   protocol PROTO.
+-
+-   This function is a possible cancellation point and therefore not
+-   marked with __THROW.  */
+-extern struct servent *getservbyname (const char *__name, const char *__proto);
+-
+-/* Return entry from service data base which matches port PORT and
+-   protocol PROTO.
+-
+-   This function is a possible cancellation point and therefore not
+-   marked with __THROW.  */
+-extern struct servent *getservbyport (int __port, const char *__proto);
+-
+-
+-#ifdef	__USE_MISC
+-/* Reentrant versions of the functions above.  The additional
+-   arguments specify a buffer of BUFLEN starting at BUF.
+-
+-   These functions are not part of POSIX and therefore no official
+-   cancellation point.  But due to similarity with an POSIX interface
+-   or due to the implementation they are cancellation points and
+-   therefore not marked with __THROW.  */
+-extern int getservent_r (struct servent *__restrict __result_buf,
+-			 char *__restrict __buf, size_t __buflen,
+-			 struct servent **__restrict __result);
+-
+-extern int getservbyname_r (const char *__restrict __name,
+-			    const char *__restrict __proto,
+-			    struct servent *__restrict __result_buf,
+-			    char *__restrict __buf, size_t __buflen,
+-			    struct servent **__restrict __result);
+-
+-extern int getservbyport_r (int __port, const char *__restrict __proto,
+-			    struct servent *__restrict __result_buf,
+-			    char *__restrict __buf, size_t __buflen,
+-			    struct servent **__restrict __result);
+-#endif	/* misc */
+-
+-
+-/* Description of data base entry for a single service.  */
+-struct protoent
+-{
+-  char *p_name;			/* Official protocol name.  */
+-  char **p_aliases;		/* Alias list.  */
+-  int p_proto;			/* Protocol number.  */
+-};
+-
+-/* Open protocol data base files and mark them as staying open even
+-   after a later search if STAY_OPEN is non-zero.
+-
+-   This function is a possible cancellation point and therefore not
+-   marked with __THROW.  */
+-extern void setprotoent (int __stay_open);
+-
+-/* Close protocol data base files and clear `stay open' flag.
+-
+-   This function is a possible cancellation point and therefore not
+-   marked with __THROW.  */
+-extern void endprotoent (void);
+-
+-/* Get next entry from protocol data base file.  Open data base if
+-   necessary.
+-
+-   This function is a possible cancellation point and therefore not
+-   marked with __THROW.  */
+-extern struct protoent *getprotoent (void);
+-
+-/* Return entry from protocol data base for network with NAME.
+-
+-   This function is a possible cancellation point and therefore not
+-   marked with __THROW.  */
+-extern struct protoent *getprotobyname (const char *__name);
+-
+-/* Return entry from protocol data base which number is PROTO.
+-
+-   This function is a possible cancellation point and therefore not
+-   marked with __THROW.  */
+-extern struct protoent *getprotobynumber (int __proto);
+-
+-
+-#ifdef	__USE_MISC
+-/* Reentrant versions of the functions above.  The additional
+-   arguments specify a buffer of BUFLEN starting at BUF.
+-
+-   These functions are not part of POSIX and therefore no official
+-   cancellation point.  But due to similarity with an POSIX interface
+-   or due to the implementation they are cancellation points and
+-   therefore not marked with __THROW.  */
+-extern int getprotoent_r (struct protoent *__restrict __result_buf,
+-			  char *__restrict __buf, size_t __buflen,
+-			  struct protoent **__restrict __result);
+-
+-extern int getprotobyname_r (const char *__restrict __name,
+-			     struct protoent *__restrict __result_buf,
+-			     char *__restrict __buf, size_t __buflen,
+-			     struct protoent **__restrict __result);
+-
+-extern int getprotobynumber_r (int __proto,
+-			       struct protoent *__restrict __result_buf,
+-			       char *__restrict __buf, size_t __buflen,
+-			       struct protoent **__restrict __result);
+-
+-
+-/* Establish network group NETGROUP for enumeration.
+-
+-   This function is not part of POSIX and therefore no official
+-   cancellation point.  But due to similarity with an POSIX interface
+-   or due to the implementation it is a cancellation point and
+-   therefore not marked with __THROW.  */
+-extern int setnetgrent (const char *__netgroup);
+-
+-/* Free all space allocated by previous `setnetgrent' call.
+-
+-   This function is not part of POSIX and therefore no official
+-   cancellation point.  But due to similarity with an POSIX interface
+-   or due to the implementation it is a cancellation point and
+-   therefore not marked with __THROW.  */
+-extern void endnetgrent (void);
+-
+-/* Get next member of netgroup established by last `setnetgrent' call
+-   and return pointers to elements in HOSTP, USERP, and DOMAINP.
+-
+-   This function is not part of POSIX and therefore no official
+-   cancellation point.  But due to similarity with an POSIX interface
+-   or due to the implementation it is a cancellation point and
+-   therefore not marked with __THROW.  */
+-extern int getnetgrent (char **__restrict __hostp,
+-			char **__restrict __userp,
+-			char **__restrict __domainp);
+-
+-
+-/* Test whether NETGROUP contains the triple (HOST,USER,DOMAIN).
+-
+-   This function is not part of POSIX and therefore no official
+-   cancellation point.  But due to similarity with an POSIX interface
+-   or due to the implementation it is a cancellation point and
+-   therefore not marked with __THROW.  */
+-extern int innetgr (const char *__netgroup, const char *__host,
+-		    const char *__user, const char *__domain);
+-
+-/* Reentrant version of `getnetgrent' where result is placed in BUFFER.
+-
+-   This function is not part of POSIX and therefore no official
+-   cancellation point.  But due to similarity with an POSIX interface
+-   or due to the implementation it is a cancellation point and
+-   therefore not marked with __THROW.  */
+-extern int getnetgrent_r (char **__restrict __hostp,
+-			  char **__restrict __userp,
+-			  char **__restrict __domainp,
+-			  char *__restrict __buffer, size_t __buflen);
+-#endif	/* misc */
+-
+-
+-#ifdef __USE_MISC
+-/* Call `rshd' at port RPORT on remote machine *AHOST to execute CMD.
+-   The local user is LOCUSER, on the remote machine the command is
+-   executed as REMUSER.  In *FD2P the descriptor to the socket for the
+-   connection is returned.  The caller must have the right to use a
+-   reserved port.  When the function returns *AHOST contains the
+-   official host name.
+-
+-   This function is not part of POSIX and therefore no official
+-   cancellation point.  But due to similarity with an POSIX interface
+-   or due to the implementation it is a cancellation point and
+-   therefore not marked with __THROW.  */
+-extern int rcmd (char **__restrict __ahost, unsigned short int __rport,
+-		 const char *__restrict __locuser,
+-		 const char *__restrict __remuser,
+-		 const char *__restrict __cmd, int *__restrict __fd2p);
+-
+-/* This is the equivalent function where the protocol can be selected
+-   and which therefore can be used for IPv6.
+-
+-   This function is not part of POSIX and therefore no official
+-   cancellation point.  But due to similarity with an POSIX interface
+-   or due to the implementation it is a cancellation point and
+-   therefore not marked with __THROW.  */
+-extern int rcmd_af (char **__restrict __ahost, unsigned short int __rport,
+-		    const char *__restrict __locuser,
+-		    const char *__restrict __remuser,
+-		    const char *__restrict __cmd, int *__restrict __fd2p,
+-		    sa_family_t __af);
+-
+-/* Call `rexecd' at port RPORT on remote machine *AHOST to execute
+-   CMD.  The process runs at the remote machine using the ID of user
+-   NAME whose cleartext password is PASSWD.  In *FD2P the descriptor
+-   to the socket for the connection is returned.  When the function
+-   returns *AHOST contains the official host name.
+-
+-   This function is not part of POSIX and therefore no official
+-   cancellation point.  But due to similarity with an POSIX interface
+-   or due to the implementation it is a cancellation point and
+-   therefore not marked with __THROW.  */
+-extern int rexec (char **__restrict __ahost, int __rport,
+-		  const char *__restrict __name,
+-		  const char *__restrict __pass,
+-		  const char *__restrict __cmd, int *__restrict __fd2p);
+-
+-/* This is the equivalent function where the protocol can be selected
+-   and which therefore can be used for IPv6.
+-
+-   This function is not part of POSIX and therefore no official
+-   cancellation point.  But due to similarity with an POSIX interface
+-   or due to the implementation it is a cancellation point and
+-   therefore not marked with __THROW.  */
+-extern int rexec_af (char **__restrict __ahost, int __rport,
+-		     const char *__restrict __name,
+-		     const char *__restrict __pass,
+-		     const char *__restrict __cmd, int *__restrict __fd2p,
+-		     sa_family_t __af);
+-
+-/* Check whether user REMUSER on system RHOST is allowed to login as LOCUSER.
+-   If SUSER is not zero the user tries to become superuser.  Return 0 if
+-   it is possible.
+-
+-   This function is not part of POSIX and therefore no official
+-   cancellation point.  But due to similarity with an POSIX interface
+-   or due to the implementation it is a cancellation point and
+-   therefore not marked with __THROW.  */
+-extern int ruserok (const char *__rhost, int __suser,
+-		    const char *__remuser, const char *__locuser);
+-
+-/* This is the equivalent function where the protocol can be selected
+-   and which therefore can be used for IPv6.
+-
+-   This function is not part of POSIX and therefore no official
+-   cancellation point.  But due to similarity with an POSIX interface
+-   or due to the implementation it is a cancellation point and
+-   therefore not marked with __THROW.  */
+-extern int ruserok_af (const char *__rhost, int __suser,
+-		       const char *__remuser, const char *__locuser,
+-		       sa_family_t __af);
+-
+-/* Check whether user REMUSER on system indicated by IPv4 address
+-   RADDR is allowed to login as LOCUSER.  Non-IPv4 (e.g., IPv6) are
+-   not supported.  If SUSER is not zero the user tries to become
+-   superuser.  Return 0 if it is possible.
+-
+-   This function is not part of POSIX and therefore no official
+-   cancellation point.  But due to similarity with an POSIX interface
+-   or due to the implementation it is a cancellation point and
+-   therefore not marked with __THROW.  */
+-extern int iruserok (uint32_t __raddr, int __suser,
+-		     const char *__remuser, const char *__locuser);
+-
+-/* This is the equivalent function where the pfamiliy if the address
+-   pointed to by RADDR is determined by the value of AF.  It therefore
+-   can be used for IPv6
+-
+-   This function is not part of POSIX and therefore no official
+-   cancellation point.  But due to similarity with an POSIX interface
+-   or due to the implementation it is a cancellation point and
+-   therefore not marked with __THROW.  */
+-extern int iruserok_af (const void *__raddr, int __suser,
+-			const char *__remuser, const char *__locuser,
+-			sa_family_t __af);
+-
+-/* Try to allocate reserved port, returning a descriptor for a socket opened
+-   at this port or -1 if unsuccessful.  The search for an available port
+-   will start at ALPORT and continues with lower numbers.
+-
+-   This function is not part of POSIX and therefore no official
+-   cancellation point.  But due to similarity with an POSIX interface
+-   or due to the implementation it is a cancellation point and
+-   therefore not marked with __THROW.  */
+-extern int rresvport (int *__alport);
+-
+-/* This is the equivalent function where the protocol can be selected
+-   and which therefore can be used for IPv6.
+-
+-   This function is not part of POSIX and therefore no official
+-   cancellation point.  But due to similarity with an POSIX interface
+-   or due to the implementation it is a cancellation point and
+-   therefore not marked with __THROW.  */
+-extern int rresvport_af (int *__alport, sa_family_t __af);
+-#endif
+-
+-
+-/* Extension from POSIX.1g.  */
+-#ifdef	__USE_POSIX
+-/* Structure to contain information about address of a service provider.  */
+-struct addrinfo
+-{
+-  int ai_flags;			/* Input flags.  */
+-  int ai_family;		/* Protocol family for socket.  */
+-  int ai_socktype;		/* Socket type.  */
+-  int ai_protocol;		/* Protocol for socket.  */
+-  socklen_t ai_addrlen;		/* Length of socket address.  */
+-  struct sockaddr *ai_addr;	/* Socket address for socket.  */
+-  char *ai_canonname;		/* Canonical name for service location.  */
+-  struct addrinfo *ai_next;	/* Pointer to next in list.  */
+-};
+-
+-# ifdef __USE_GNU
+-/* Structure used as control block for asynchronous lookup.  */
+-struct gaicb
+-{
+-  const char *ar_name;		/* Name to look up.  */
+-  const char *ar_service;	/* Service name.  */
+-  const struct addrinfo *ar_request; /* Additional request specification.  */
+-  struct addrinfo *ar_result;	/* Pointer to result.  */
+-  /* The following are internal elements.  */
+-  int __return;
+-  int __glibc_reserved[5];
+-};
+-
+-/* Lookup mode.  */
+-#  define GAI_WAIT	0
+-#  define GAI_NOWAIT	1
+-# endif
+-
+-/* Possible values for `ai_flags' field in `addrinfo' structure.  */
+-# define AI_PASSIVE	0x0001	/* Socket address is intended for `bind'.  */
+-# define AI_CANONNAME	0x0002	/* Request for canonical name.  */
+-# define AI_NUMERICHOST	0x0004	/* Don't use name resolution.  */
+-# define AI_V4MAPPED	0x0008	/* IPv4 mapped addresses are acceptable.  */
+-# define AI_ALL		0x0010	/* Return IPv4 mapped and IPv6 addresses.  */
+-# define AI_ADDRCONFIG	0x0020	/* Use configuration of this host to choose
+-				   returned address type..  */
+-# ifdef __USE_GNU
+-#  define AI_IDN	0x0040	/* IDN encode input (assuming it is encoded
+-				   in the current locale's character set)
+-				   before looking it up. */
+-#  define AI_CANONIDN	0x0080	/* Translate canonical name from IDN format. */
+-#  define AI_IDN_ALLOW_UNASSIGNED 0x0100 /* Don't reject unassigned Unicode
+-					    code points.  */
+-#  define AI_IDN_USE_STD3_ASCII_RULES 0x0200 /* Validate strings according to
+-						STD3 rules.  */
+-# endif
+-# define AI_NUMERICSERV	0x0400	/* Don't use name resolution.  */
+-
+-/* Error values for `getaddrinfo' function.  */
+-# define EAI_BADFLAGS	  -1	/* Invalid value for `ai_flags' field.  */
+-# define EAI_NONAME	  -2	/* NAME or SERVICE is unknown.  */
+-# define EAI_AGAIN	  -3	/* Temporary failure in name resolution.  */
+-# define EAI_FAIL	  -4	/* Non-recoverable failure in name res.  */
+-# define EAI_FAMILY	  -6	/* `ai_family' not supported.  */
+-# define EAI_SOCKTYPE	  -7	/* `ai_socktype' not supported.  */
+-# define EAI_SERVICE	  -8	/* SERVICE not supported for `ai_socktype'.  */
+-# define EAI_MEMORY	  -10	/* Memory allocation failure.  */
+-# define EAI_SYSTEM	  -11	/* System error returned in `errno'.  */
+-# define EAI_OVERFLOW	  -12	/* Argument buffer overflow.  */
+-# ifdef __USE_GNU
+-#  define EAI_NODATA	  -5	/* No address associated with NAME.  */
+-#  define EAI_ADDRFAMILY  -9	/* Address family for NAME not supported.  */
+-#  define EAI_INPROGRESS  -100	/* Processing request in progress.  */
+-#  define EAI_CANCELED	  -101	/* Request canceled.  */
+-#  define EAI_NOTCANCELED -102	/* Request not canceled.  */
+-#  define EAI_ALLDONE	  -103	/* All requests done.  */
+-#  define EAI_INTR	  -104	/* Interrupted by a signal.  */
+-#  define EAI_IDN_ENCODE  -105	/* IDN encoding failed.  */
+-# endif
+-
+-# ifdef __USE_MISC
+-#  define NI_MAXHOST      1025
+-#  define NI_MAXSERV      32
+-# endif
+-
+-# define NI_NUMERICHOST	1	/* Don't try to look up hostname.  */
+-# define NI_NUMERICSERV 2	/* Don't convert port number to name.  */
+-# define NI_NOFQDN	4	/* Only return nodename portion.  */
+-# define NI_NAMEREQD	8	/* Don't return numeric addresses.  */
+-# define NI_DGRAM	16	/* Look up UDP service rather than TCP.  */
+-# ifdef __USE_GNU
+-#  define NI_IDN	32	/* Convert name from IDN format.  */
+-#  define NI_IDN_ALLOW_UNASSIGNED 64 /* Don't reject unassigned Unicode
+-					code points.  */
+-#  define NI_IDN_USE_STD3_ASCII_RULES 128 /* Validate strings according to
+-					     STD3 rules.  */
+-# endif
+-
+-/* Translate name of a service location and/or a service name to set of
+-   socket addresses.
+-
+-   This function is a possible cancellation point and therefore not
+-   marked with __THROW.  */
+-extern int getaddrinfo (const char *__restrict __name,
+-			const char *__restrict __service,
+-			const struct addrinfo *__restrict __req,
+-			struct addrinfo **__restrict __pai);
+-
+-/* Free `addrinfo' structure AI including associated storage.  */
+-extern void freeaddrinfo (struct addrinfo *__ai) __THROW;
+-
+-/* Convert error return from getaddrinfo() to a string.  */
+-extern const char *gai_strerror (int __ecode) __THROW;
+-
+-/* Translate a socket address to a location and service name.
+-
+-   This function is a possible cancellation point and therefore not
+-   marked with __THROW.  */
+-extern int getnameinfo (const struct sockaddr *__restrict __sa,
+-			socklen_t __salen, char *__restrict __host,
+-			socklen_t __hostlen, char *__restrict __serv,
+-			socklen_t __servlen, int __flags);
+-#endif	/* POSIX */
+-
+-#ifdef __USE_GNU
+-/* Enqueue ENT requests from the LIST.  If MODE is GAI_WAIT wait until all
+-   requests are handled.  If WAIT is GAI_NOWAIT return immediately after
+-   queueing the requests and signal completion according to SIG.
+-
+-   This function is not part of POSIX and therefore no official
+-   cancellation point.  But due to similarity with an POSIX interface
+-   or due to the implementation it is a cancellation point and
+-   therefore not marked with __THROW.  */
+-extern int getaddrinfo_a (int __mode, struct gaicb *__list[__restrict_arr],
+-			  int __ent, struct sigevent *__restrict __sig);
+-
+-/* Suspend execution of the thread until at least one of the ENT requests
+-   in LIST is handled.  If TIMEOUT is not a null pointer it specifies the
+-   longest time the function keeps waiting before returning with an error.
+-
+-   This function is not part of POSIX and therefore no official
+-   cancellation point.  But due to similarity with an POSIX interface
+-   or due to the implementation it is a cancellation point and
+-   therefore not marked with __THROW.  */
+-extern int gai_suspend (const struct gaicb *const __list[], int __ent,
+-			const struct timespec *__timeout);
+-
+-/* Get the error status of the request REQ.  */
+-extern int gai_error (struct gaicb *__req) __THROW;
+-
+-/* Cancel the requests associated with GAICBP.  */
+-extern int gai_cancel (struct gaicb *__gaicbp) __THROW;
+-#endif	/* GNU */
+-
+-__END_DECLS
+-
+-#endif	/* netdb.h */
+Index: glibc-2.20/resolv/resolv.h
+===================================================================
+--- glibc-2.20.orig/resolv/resolv.h
++++ /dev/null
+@@ -1,389 +0,0 @@
+-/*
+- * Copyright (c) 1983, 1987, 1989
+- *    The Regents of the University of California.  All rights reserved.
+- *
+- * Redistribution and use in source and binary forms, with or without
+- * modification, are permitted provided that the following conditions
+- * are met:
+- * 1. Redistributions of source code must retain the above copyright
+- *    notice, this list of conditions and the following disclaimer.
+- * 2. Redistributions in binary form must reproduce the above copyright
+- *    notice, this list of conditions and the following disclaimer in the
+- *    documentation and/or other materials provided with the distribution.
+- * 4. Neither the name of the University nor the names of its contributors
+- *    may be used to endorse or promote products derived from this software
+- *    without specific prior written permission.
+- *
+- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+- * SUCH DAMAGE.
+- */
+-
+-/*
+- * Portions Copyright (c) 1996-1999 by Internet Software Consortium.
+- *
+- * Permission to use, copy, modify, and distribute this software for any
+- * purpose with or without fee is hereby granted, provided that the above
+- * copyright notice and this permission notice appear in all copies.
+- *
+- * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
+- * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
+- * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
+- * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+- * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+- * SOFTWARE.
+- */
+-
+-/*
+- *	@(#)resolv.h	8.1 (Berkeley) 6/2/93
+- *	$BINDId: resolv.h,v 8.31 2000/03/30 20:16:50 vixie Exp $
+- */
+-
+-#ifndef _RESOLV_H_
+-
+-/* These headers are needed for types used in the `struct res_state'
+-   declaration.  */
+-#include <sys/types.h>
+-#include <netinet/in.h>
+-
+-#ifndef __need_res_state
+-# define _RESOLV_H_
+-
+-# include <sys/param.h>
+-# include <sys/cdefs.h>
+-# include <stdio.h>
+-# include <arpa/nameser.h>
+-#endif
+-
+-#ifndef __res_state_defined
+-# define __res_state_defined
+-
+-typedef enum { res_goahead, res_nextns, res_modified, res_done, res_error }
+-	res_sendhookact;
+-
+-typedef res_sendhookact (*res_send_qhook) (struct sockaddr_in * const *__ns,
+-					   const u_char **__query,
+-					   int *__querylen,
+-					   u_char *__ans,
+-					   int __anssiz,
+-					   int *__resplen);
+-
+-typedef res_sendhookact (*res_send_rhook) (const struct sockaddr_in *__ns,
+-					   const u_char *__query,
+-					   int __querylen,
+-					   u_char *__ans,
+-					   int __anssiz,
+-					   int *__resplen);
+-
+-/*
+- * Global defines and variables for resolver stub.
+- */
+-# define MAXNS			3	/* max # name servers we'll track */
+-# define MAXDFLSRCH		3	/* # default domain levels to try */
+-# define MAXDNSRCH		6	/* max # domains in search path */
+-# define LOCALDOMAINPARTS	2	/* min levels in name that is "local" */
+-
+-# define RES_TIMEOUT		5	/* min. seconds between retries */
+-# define MAXRESOLVSORT		10	/* number of net to sort on */
+-# define RES_MAXNDOTS		15	/* should reflect bit field size */
+-# define RES_MAXRETRANS		30	/* only for resolv.conf/RES_OPTIONS */
+-# define RES_MAXRETRY		5	/* only for resolv.conf/RES_OPTIONS */
+-# define RES_DFLRETRY		2	/* Default #/tries. */
+-# define RES_MAXTIME		65535	/* Infinity, in milliseconds. */
+-
+-struct __res_state {
+-	int	retrans;		/* retransmition time interval */
+-	int	retry;			/* number of times to retransmit */
+-	u_long	options;		/* option flags - see below. */
+-	int	nscount;		/* number of name servers */
+-	struct sockaddr_in
+-		nsaddr_list[MAXNS];	/* address of name server */
+-# define nsaddr	nsaddr_list[0]		/* for backward compatibility */
+-	u_short	id;			/* current message id */
+-	/* 2 byte hole here.  */
+-	char	*dnsrch[MAXDNSRCH+1];	/* components of domain to search */
+-	char	defdname[256];		/* default domain (deprecated) */
+-	u_long	pfcode;			/* RES_PRF_ flags - see below. */
+-	unsigned ndots:4;		/* threshold for initial abs. query */
+-	unsigned nsort:4;		/* number of elements in sort_list[] */
+-	unsigned ipv6_unavail:1;	/* connecting to IPv6 server failed */
+-	unsigned unused:23;
+-	struct {
+-		struct in_addr	addr;
+-		u_int32_t	mask;
+-	} sort_list[MAXRESOLVSORT];
+-	/* 4 byte hole here on 64-bit architectures.  */
+-	res_send_qhook qhook;		/* query hook */
+-	res_send_rhook rhook;		/* response hook */
+-	int	res_h_errno;		/* last one set for this context */
+-	int	_vcsock;		/* PRIVATE: for res_send VC i/o */
+-	u_int	_flags;			/* PRIVATE: see below */
+-	/* 4 byte hole here on 64-bit architectures.  */
+-	union {
+-		char	pad[52];	/* On an i386 this means 512b total. */
+-		struct {
+-			u_int16_t		nscount;
+-			u_int16_t		nsmap[MAXNS];
+-			int			nssocks[MAXNS];
+-			u_int16_t		nscount6;
+-			u_int16_t		nsinit;
+-			struct sockaddr_in6	*nsaddrs[MAXNS];
+-#ifdef _LIBC
+-			unsigned long long int	initstamp
+-			  __attribute__((packed));
+-#else
+-			unsigned int		_initstamp[2];
+-#endif
+-		} _ext;
+-	} _u;
+-};
+-
+-typedef struct __res_state *res_state;
+-# undef __need_res_state
+-#endif
+-
+-#ifdef _RESOLV_H_
+-/*
+- * Revision information.  This is the release date in YYYYMMDD format.
+- * It can change every day so the right thing to do with it is use it
+- * in preprocessor commands such as "#if (__RES > 19931104)".  Do not
+- * compare for equality; rather, use it to determine whether your resolver
+- * is new enough to contain a certain feature.
+- */
+-
+-#define	__RES	19991006
+-
+-/*
+- * Resolver configuration file.
+- * Normally not present, but may contain the address of the
+- * inital name server(s) to query and the domain search list.
+- */
+-
+-#ifndef _PATH_RESCONF
+-#define _PATH_RESCONF        "/etc/resolv.conf"
+-#endif
+-
+-struct res_sym {
+-	int	number;		/* Identifying number, like T_MX */
+-	char *	name;		/* Its symbolic name, like "MX" */
+-	char *	humanname;	/* Its fun name, like "mail exchanger" */
+-};
+-
+-/*
+- * Resolver flags (used to be discrete per-module statics ints).
+- */
+-#define	RES_F_VC	0x00000001	/* socket is TCP */
+-#define	RES_F_CONN	0x00000002	/* socket is connected */
+-#define RES_F_EDNS0ERR	0x00000004	/* EDNS0 caused errors */
+-
+-/* res_findzonecut() options */
+-#define	RES_EXHAUSTIVE	0x00000001	/* always do all queries */
+-
+-/*
+- * Resolver options (keep these in synch with res_debug.c, please)
+- */
+-#define RES_INIT	0x00000001	/* address initialized */
+-#define RES_DEBUG	0x00000002	/* print debug messages */
+-#define RES_AAONLY	0x00000004	/* authoritative answers only (!IMPL)*/
+-#define RES_USEVC	0x00000008	/* use virtual circuit */
+-#define RES_PRIMARY	0x00000010	/* query primary server only (!IMPL) */
+-#define RES_IGNTC	0x00000020	/* ignore trucation errors */
+-#define RES_RECURSE	0x00000040	/* recursion desired */
+-#define RES_DEFNAMES	0x00000080	/* use default domain name */
+-#define RES_STAYOPEN	0x00000100	/* Keep TCP socket open */
+-#define RES_DNSRCH	0x00000200	/* search up local domain tree */
+-#define	RES_INSECURE1	0x00000400	/* type 1 security disabled */
+-#define	RES_INSECURE2	0x00000800	/* type 2 security disabled */
+-#define	RES_NOALIASES	0x00001000	/* shuts off HOSTALIASES feature */
+-#define	RES_USE_INET6	0x00002000	/* use/map IPv6 in gethostbyname() */
+-#define RES_ROTATE	0x00004000	/* rotate ns list after each query */
+-#define	RES_NOCHECKNAME	0x00008000	/* do not check names for sanity (!IMPL) */
+-#define	RES_KEEPTSIG	0x00010000	/* do not strip TSIG records */
+-#define	RES_BLAST	0x00020000	/* blast all recursive servers */
+-#define RES_USEBSTRING	0x00040000	/* IPv6 reverse lookup with byte
+-					   strings */
+-#define RES_NOIP6DOTINT	0x00080000	/* Do not use .ip6.int in IPv6
+-					   reverse lookup */
+-#define RES_USE_EDNS0	0x00100000	/* Use EDNS0.  */
+-#define RES_SNGLKUP	0x00200000	/* one outstanding request at a time */
+-#define RES_SNGLKUPREOP	0x00400000	/* -"-, but open new socket for each
+-					   request */
+-#define RES_USE_DNSSEC	0x00800000	/* use DNSSEC using OK bit in OPT */
+-#define RES_NOTLDQUERY	0x01000000	/* Do not look up unqualified name
+-					   as a TLD.  */
+-
+-#define RES_DEFAULT	(RES_RECURSE|RES_DEFNAMES|RES_DNSRCH|RES_NOIP6DOTINT)
+-
+-/*
+- * Resolver "pfcode" values.  Used by dig.
+- */
+-#define RES_PRF_STATS	0x00000001
+-#define RES_PRF_UPDATE	0x00000002
+-#define RES_PRF_CLASS   0x00000004
+-#define RES_PRF_CMD	0x00000008
+-#define RES_PRF_QUES	0x00000010
+-#define RES_PRF_ANS	0x00000020
+-#define RES_PRF_AUTH	0x00000040
+-#define RES_PRF_ADD	0x00000080
+-#define RES_PRF_HEAD1	0x00000100
+-#define RES_PRF_HEAD2	0x00000200
+-#define RES_PRF_TTLID	0x00000400
+-#define RES_PRF_HEADX	0x00000800
+-#define RES_PRF_QUERY	0x00001000
+-#define RES_PRF_REPLY	0x00002000
+-#define RES_PRF_INIT	0x00004000
+-/*			0x00008000	*/
+-
+-/* Things involving an internal (static) resolver context. */
+-__BEGIN_DECLS
+-extern struct __res_state *__res_state(void) __attribute__ ((__const__));
+-__END_DECLS
+-#define _res (*__res_state())
+-
+-#ifndef __BIND_NOSTATIC
+-#define fp_nquery		__fp_nquery
+-#define fp_query		__fp_query
+-#define hostalias		__hostalias
+-#define p_query			__p_query
+-#define res_close		__res_close
+-#define res_init		__res_init
+-#define res_isourserver		__res_isourserver
+-#define res_mkquery		__res_mkquery
+-#define res_query		__res_query
+-#define res_querydomain		__res_querydomain
+-#define res_search		__res_search
+-#define res_send		__res_send
+-
+-__BEGIN_DECLS
+-void		fp_nquery (const u_char *, int, FILE *) __THROW;
+-void		fp_query (const u_char *, FILE *) __THROW;
+-const char *	hostalias (const char *) __THROW;
+-void		p_query (const u_char *) __THROW;
+-void		res_close (void) __THROW;
+-int		res_init (void) __THROW;
+-int		res_isourserver (const struct sockaddr_in *) __THROW;
+-int		res_mkquery (int, const char *, int, int, const u_char *,
+-			     int, const u_char *, u_char *, int) __THROW;
+-int		res_query (const char *, int, int, u_char *, int) __THROW;
+-int		res_querydomain (const char *, const char *, int, int,
+-				 u_char *, int) __THROW;
+-int		res_search (const char *, int, int, u_char *, int) __THROW;
+-int		res_send (const u_char *, int, u_char *, int) __THROW;
+-__END_DECLS
+-#endif
+-
+-#define b64_ntop		__b64_ntop
+-#define b64_pton		__b64_pton
+-#define dn_comp			__dn_comp
+-#define dn_count_labels		__dn_count_labels
+-#define dn_expand		__dn_expand
+-#define dn_skipname		__dn_skipname
+-#define fp_resstat		__fp_resstat
+-#define loc_aton		__loc_aton
+-#define loc_ntoa		__loc_ntoa
+-#define p_cdname		__p_cdname
+-#define p_cdnname		__p_cdnname
+-#define p_class			__p_class
+-#define p_fqname		__p_fqname
+-#define p_fqnname		__p_fqnname
+-#define p_option		__p_option
+-#define p_secstodate		__p_secstodate
+-#define p_section		__p_section
+-#define p_time			__p_time
+-#define p_type			__p_type
+-#define p_rcode			__p_rcode
+-#define putlong			__putlong
+-#define putshort		__putshort
+-#define res_dnok		__res_dnok
+-#define res_hnok		__res_hnok
+-#define res_hostalias		__res_hostalias
+-#define res_mailok		__res_mailok
+-#define res_nameinquery		__res_nameinquery
+-#define res_nclose		__res_nclose
+-#define res_ninit		__res_ninit
+-#define res_nmkquery		__res_nmkquery
+-#define res_npquery		__res_npquery
+-#define res_nquery		__res_nquery
+-#define res_nquerydomain	__res_nquerydomain
+-#define res_nsearch		__res_nsearch
+-#define res_nsend		__res_nsend
+-#define res_nisourserver	__res_nisourserver
+-#define res_ownok		__res_ownok
+-#define res_queriesmatch	__res_queriesmatch
+-#define res_randomid		__res_randomid
+-#define sym_ntop		__sym_ntop
+-#define sym_ntos		__sym_ntos
+-#define sym_ston		__sym_ston
+-__BEGIN_DECLS
+-int		res_hnok (const char *) __THROW;
+-int		res_ownok (const char *) __THROW;
+-int		res_mailok (const char *) __THROW;
+-int		res_dnok (const char *) __THROW;
+-int		sym_ston (const struct res_sym *, const char *, int *) __THROW;
+-const char *	sym_ntos (const struct res_sym *, int, int *) __THROW;
+-const char *	sym_ntop (const struct res_sym *, int, int *) __THROW;
+-int		b64_ntop (u_char const *, size_t, char *, size_t) __THROW;
+-int		b64_pton (char const *, u_char *, size_t) __THROW;
+-int		loc_aton (const char *__ascii, u_char *__binary) __THROW;
+-const char *	loc_ntoa (const u_char *__binary, char *__ascii) __THROW;
+-int		dn_skipname (const u_char *, const u_char *) __THROW;
+-void		putlong (u_int32_t, u_char *) __THROW;
+-void		putshort (u_int16_t, u_char *) __THROW;
+-const char *	p_class (int) __THROW;
+-const char *	p_time (u_int32_t) __THROW;
+-const char *	p_type (int) __THROW;
+-const char *	p_rcode (int) __THROW;
+-const u_char *	p_cdnname (const u_char *, const u_char *, int, FILE *)
+-     __THROW;
+-const u_char *	p_cdname (const u_char *, const u_char *, FILE *) __THROW;
+-const u_char *	p_fqnname (const u_char *__cp, const u_char *__msg,
+-			   int, char *, int) __THROW;
+-const u_char *	p_fqname (const u_char *, const u_char *, FILE *) __THROW;
+-const char *	p_option (u_long __option) __THROW;
+-char *		p_secstodate (u_long) __THROW;
+-int		dn_count_labels (const char *) __THROW;
+-int		dn_comp (const char *, u_char *, int, u_char **, u_char **)
+-     __THROW;
+-int		dn_expand (const u_char *, const u_char *, const u_char *,
+-			   char *, int) __THROW;
+-u_int		res_randomid (void) __THROW;
+-int		res_nameinquery (const char *, int, int,
+-				 const u_char *, const u_char *) __THROW;
+-int		res_queriesmatch (const u_char *, const u_char *,
+-				  const u_char *, const u_char *) __THROW;
+-const char *	p_section (int __section, int __opcode) __THROW;
+-/* Things involving a resolver context. */
+-int		res_ninit (res_state) __THROW;
+-int		res_nisourserver (const res_state,
+-				  const struct sockaddr_in *) __THROW;
+-void		fp_resstat (const res_state, FILE *) __THROW;
+-void		res_npquery (const res_state, const u_char *, int, FILE *)
+-     __THROW;
+-const char *	res_hostalias (const res_state, const char *, char *, size_t)
+-     __THROW;
+-int		res_nquery (res_state, const char *, int, int, u_char *, int)
+-     __THROW;
+-int		res_nsearch (res_state, const char *, int, int, u_char *, int)
+-     __THROW;
+-int		res_nquerydomain (res_state, const char *, const char *, int,
+-				  int, u_char *, int) __THROW;
+-int		res_nmkquery (res_state, int, const char *, int, int,
+-			      const u_char *, int, const u_char *, u_char *,
+-			      int) __THROW;
+-int		res_nsend (res_state, const u_char *, int, u_char *, int)
+-     __THROW;
+-void		res_nclose (res_state) __THROW;
+-__END_DECLS
+-#endif
+-
+-#endif /* !_RESOLV_H_ */
+Index: glibc-2.20/shadow/Makefile
+===================================================================
+--- glibc-2.20.orig/shadow/Makefile
++++ glibc-2.20/shadow/Makefile
+@@ -36,5 +36,6 @@ CFLAGS-fgetspent_r.c = -fexceptions $(li
+ CFLAGS-putspent.c = -fexceptions $(libio-mtsafe)
+ CFLAGS-getspnam.c = -fexceptions
+ CFLAGS-getspnam_r.c = -fexceptions
++CPPFLAGS-lckpwdf.c = -DSYSCONFDIR='"$(sysconfdir)"'
+ 
+ include ../Rules
+Index: glibc-2.20/shadow/lckpwdf.c
+===================================================================
+--- glibc-2.20.orig/shadow/lckpwdf.c
++++ glibc-2.20/shadow/lckpwdf.c
+@@ -29,7 +29,7 @@
+ 
+ 
+ /* Name of the lock file.  */
+-#define PWD_LOCKFILE "/etc/.pwd.lock"
++#define PWD_LOCKFILE SYSCONFDIR "/.pwd.lock"
+ 
+ /* How long to wait for getting the lock before returning with an
+    error.  */
+Index: glibc-2.20/configure.ac
+===================================================================
+--- glibc-2.20.orig/configure.ac
++++ glibc-2.20/configure.ac
+@@ -2038,7 +2038,7 @@ RELEASE=`sed -n -e 's/^#define RELEASE "
+ AC_SUBST(VERSION)
+ AC_SUBST(RELEASE)
+ 
+-AC_CONFIG_FILES([config.make Makefile])
++AC_CONFIG_FILES([config.make Makefile nss/db-Makefile resolv/netdb.h resolv/resolv.h])
+ AC_CONFIG_COMMANDS([default],[[
+ case $CONFIG_FILES in *config.make*)
+ echo "$config_vars" >> config.make;;
+Index: glibc-2.20/resolv/netdb.h.in
+===================================================================
+--- /dev/null
++++ glibc-2.20/resolv/netdb.h.in
+@@ -0,0 +1,715 @@
++  /* Copyright (C) 1996-2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++/* All data returned by the network data base library are supplied in
++   host order and returned in network order (suitable for use in
++   system calls).  */
++
++#ifndef	_NETDB_H
++#define	_NETDB_H	1
++
++#include <features.h>
++
++#include <netinet/in.h>
++#include <stdint.h>
++#ifdef __USE_MISC
++/* This is necessary to make this include file properly replace the
++   Sun version.  */
++# include <rpc/netdb.h>
++#endif
++
++#ifdef __USE_GNU
++# define __need_sigevent_t
++# include <bits/siginfo.h>
++# define __need_timespec
++# include <time.h>
++#endif
++
++#include <bits/netdb.h>
++
++/* Absolute file name for network data base files.  */
++#define	_PATH_HEQUIV		"@libc_cv_sysconfdir@/hosts.equiv"
++#define	_PATH_HOSTS		"@libc_cv_sysconfdir@/hosts"
++#define	_PATH_NETWORKS		"@libc_cv_sysconfdir@/networks"
++#define	_PATH_NSSWITCH_CONF	"@libc_cv_sysconfdir@/nsswitch.conf"
++#define	_PATH_PROTOCOLS		"@libc_cv_sysconfdir@/protocols"
++#define	_PATH_SERVICES		"@libc_cv_sysconfdir@/services"
++
++
++__BEGIN_DECLS
++
++#if defined __USE_MISC || !defined __USE_XOPEN2K8
++/* Error status for non-reentrant lookup functions.
++   We use a macro to access always the thread-specific `h_errno' variable.  */
++# define h_errno (*__h_errno_location ())
++
++/* Function to get address of global `h_errno' variable.  */
++extern int *__h_errno_location (void) __THROW __attribute__ ((__const__));
++
++
++/* Possible values left in `h_errno'.  */
++# define HOST_NOT_FOUND	1	/* Authoritative Answer Host not found.  */
++# define TRY_AGAIN	2	/* Non-Authoritative Host not found,
++				   or SERVERFAIL.  */
++# define NO_RECOVERY	3	/* Non recoverable errors, FORMERR, REFUSED,
++				   NOTIMP.  */
++# define NO_DATA	4	/* Valid name, no data record of requested
++				   type.  */
++#endif
++#ifdef __USE_MISC
++# define NETDB_INTERNAL	-1	/* See errno.  */
++# define NETDB_SUCCESS	0	/* No problem.  */
++# define NO_ADDRESS	NO_DATA	/* No address, look for MX record.  */
++#endif
++
++#if defined __USE_XOPEN2K || defined __USE_XOPEN_EXTENDED
++/* Highest reserved Internet port number.  */
++# define IPPORT_RESERVED	1024
++#endif
++
++#ifdef __USE_GNU
++/* Scope delimiter for getaddrinfo(), getnameinfo().  */
++# define SCOPE_DELIMITER	'%'
++#endif
++
++#ifdef __USE_MISC
++/* Print error indicated by `h_errno' variable on standard error.  STR
++   if non-null is printed before the error string.  */
++extern void herror (const char *__str) __THROW;
++
++/* Return string associated with error ERR_NUM.  */
++extern const char *hstrerror (int __err_num) __THROW;
++#endif
++
++
++/* Description of data base entry for a single host.  */
++struct hostent
++{
++  char *h_name;			/* Official name of host.  */
++  char **h_aliases;		/* Alias list.  */
++  int h_addrtype;		/* Host address type.  */
++  int h_length;			/* Length of address.  */
++  char **h_addr_list;		/* List of addresses from name server.  */
++#ifdef __USE_MISC
++# define	h_addr	h_addr_list[0] /* Address, for backward compatibility.*/
++#endif
++};
++
++/* Open host data base files and mark them as staying open even after
++   a later search if STAY_OPEN is non-zero.
++
++   This function is a possible cancellation point and therefore not
++   marked with __THROW.  */
++extern void sethostent (int __stay_open);
++
++/* Close host data base files and clear `stay open' flag.
++
++   This function is a possible cancellation point and therefore not
++   marked with __THROW.  */
++extern void endhostent (void);
++
++/* Get next entry from host data base file.  Open data base if
++   necessary.
++
++   This function is a possible cancellation point and therefore not
++   marked with __THROW.  */
++extern struct hostent *gethostent (void);
++
++/* Return entry from host data base which address match ADDR with
++   length LEN and type TYPE.
++
++   This function is a possible cancellation point and therefore not
++   marked with __THROW.  */
++extern struct hostent *gethostbyaddr (const void *__addr, __socklen_t __len,
++				      int __type);
++
++/* Return entry from host data base for host with NAME.
++
++   This function is a possible cancellation point and therefore not
++   marked with __THROW.  */
++extern struct hostent *gethostbyname (const char *__name);
++
++#ifdef __USE_MISC
++/* Return entry from host data base for host with NAME.  AF must be
++   set to the address type which is `AF_INET' for IPv4 or `AF_INET6'
++   for IPv6.
++
++   This function is not part of POSIX and therefore no official
++   cancellation point.  But due to similarity with an POSIX interface
++   or due to the implementation it is a cancellation point and
++   therefore not marked with __THROW.  */
++extern struct hostent *gethostbyname2 (const char *__name, int __af);
++
++/* Reentrant versions of the functions above.  The additional
++   arguments specify a buffer of BUFLEN starting at BUF.  The last
++   argument is a pointer to a variable which gets the value which
++   would be stored in the global variable `herrno' by the
++   non-reentrant functions.
++
++   These functions are not part of POSIX and therefore no official
++   cancellation point.  But due to similarity with an POSIX interface
++   or due to the implementation they are cancellation points and
++   therefore not marked with __THROW.  */
++extern int gethostent_r (struct hostent *__restrict __result_buf,
++			 char *__restrict __buf, size_t __buflen,
++			 struct hostent **__restrict __result,
++			 int *__restrict __h_errnop);
++
++extern int gethostbyaddr_r (const void *__restrict __addr, __socklen_t __len,
++			    int __type,
++			    struct hostent *__restrict __result_buf,
++			    char *__restrict __buf, size_t __buflen,
++			    struct hostent **__restrict __result,
++			    int *__restrict __h_errnop);
++
++extern int gethostbyname_r (const char *__restrict __name,
++			    struct hostent *__restrict __result_buf,
++			    char *__restrict __buf, size_t __buflen,
++			    struct hostent **__restrict __result,
++			    int *__restrict __h_errnop);
++
++extern int gethostbyname2_r (const char *__restrict __name, int __af,
++			     struct hostent *__restrict __result_buf,
++			     char *__restrict __buf, size_t __buflen,
++			     struct hostent **__restrict __result,
++			     int *__restrict __h_errnop);
++#endif	/* misc */
++
++
++/* Open network data base files and mark them as staying open even
++   after a later search if STAY_OPEN is non-zero.
++
++   This function is a possible cancellation point and therefore not
++   marked with __THROW.  */
++extern void setnetent (int __stay_open);
++
++/* Close network data base files and clear `stay open' flag.
++
++   This function is a possible cancellation point and therefore not
++   marked with __THROW.  */
++extern void endnetent (void);
++
++/* Get next entry from network data base file.  Open data base if
++   necessary.
++
++   This function is a possible cancellation point and therefore not
++   marked with __THROW.  */
++extern struct netent *getnetent (void);
++
++/* Return entry from network data base which address match NET and
++   type TYPE.
++
++   This function is a possible cancellation point and therefore not
++   marked with __THROW.  */
++extern struct netent *getnetbyaddr (uint32_t __net, int __type);
++
++/* Return entry from network data base for network with NAME.
++
++   This function is a possible cancellation point and therefore not
++   marked with __THROW.  */
++extern struct netent *getnetbyname (const char *__name);
++
++#ifdef	__USE_MISC
++/* Reentrant versions of the functions above.  The additional
++   arguments specify a buffer of BUFLEN starting at BUF.  The last
++   argument is a pointer to a variable which gets the value which
++   would be stored in the global variable `herrno' by the
++   non-reentrant functions.
++
++   These functions are not part of POSIX and therefore no official
++   cancellation point.  But due to similarity with an POSIX interface
++   or due to the implementation they are cancellation points and
++   therefore not marked with __THROW.  */
++extern int getnetent_r (struct netent *__restrict __result_buf,
++			char *__restrict __buf, size_t __buflen,
++			struct netent **__restrict __result,
++			int *__restrict __h_errnop);
++
++extern int getnetbyaddr_r (uint32_t __net, int __type,
++			   struct netent *__restrict __result_buf,
++			   char *__restrict __buf, size_t __buflen,
++			   struct netent **__restrict __result,
++			   int *__restrict __h_errnop);
++
++extern int getnetbyname_r (const char *__restrict __name,
++			   struct netent *__restrict __result_buf,
++			   char *__restrict __buf, size_t __buflen,
++			   struct netent **__restrict __result,
++			   int *__restrict __h_errnop);
++#endif	/* misc */
++
++
++/* Description of data base entry for a single service.  */
++struct servent
++{
++  char *s_name;			/* Official service name.  */
++  char **s_aliases;		/* Alias list.  */
++  int s_port;			/* Port number.  */
++  char *s_proto;		/* Protocol to use.  */
++};
++
++/* Open service data base files and mark them as staying open even
++   after a later search if STAY_OPEN is non-zero.
++
++   This function is a possible cancellation point and therefore not
++   marked with __THROW.  */
++extern void setservent (int __stay_open);
++
++/* Close service data base files and clear `stay open' flag.
++
++   This function is a possible cancellation point and therefore not
++   marked with __THROW.  */
++extern void endservent (void);
++
++/* Get next entry from service data base file.  Open data base if
++   necessary.
++
++   This function is a possible cancellation point and therefore not
++   marked with __THROW.  */
++extern struct servent *getservent (void);
++
++/* Return entry from network data base for network with NAME and
++   protocol PROTO.
++
++   This function is a possible cancellation point and therefore not
++   marked with __THROW.  */
++extern struct servent *getservbyname (const char *__name, const char *__proto);
++
++/* Return entry from service data base which matches port PORT and
++   protocol PROTO.
++
++   This function is a possible cancellation point and therefore not
++   marked with __THROW.  */
++extern struct servent *getservbyport (int __port, const char *__proto);
++
++
++#ifdef	__USE_MISC
++/* Reentrant versions of the functions above.  The additional
++   arguments specify a buffer of BUFLEN starting at BUF.
++
++   These functions are not part of POSIX and therefore no official
++   cancellation point.  But due to similarity with an POSIX interface
++   or due to the implementation they are cancellation points and
++   therefore not marked with __THROW.  */
++extern int getservent_r (struct servent *__restrict __result_buf,
++			 char *__restrict __buf, size_t __buflen,
++			 struct servent **__restrict __result);
++
++extern int getservbyname_r (const char *__restrict __name,
++			    const char *__restrict __proto,
++			    struct servent *__restrict __result_buf,
++			    char *__restrict __buf, size_t __buflen,
++			    struct servent **__restrict __result);
++
++extern int getservbyport_r (int __port, const char *__restrict __proto,
++			    struct servent *__restrict __result_buf,
++			    char *__restrict __buf, size_t __buflen,
++			    struct servent **__restrict __result);
++#endif	/* misc */
++
++
++/* Description of data base entry for a single service.  */
++struct protoent
++{
++  char *p_name;			/* Official protocol name.  */
++  char **p_aliases;		/* Alias list.  */
++  int p_proto;			/* Protocol number.  */
++};
++
++/* Open protocol data base files and mark them as staying open even
++   after a later search if STAY_OPEN is non-zero.
++
++   This function is a possible cancellation point and therefore not
++   marked with __THROW.  */
++extern void setprotoent (int __stay_open);
++
++/* Close protocol data base files and clear `stay open' flag.
++
++   This function is a possible cancellation point and therefore not
++   marked with __THROW.  */
++extern void endprotoent (void);
++
++/* Get next entry from protocol data base file.  Open data base if
++   necessary.
++
++   This function is a possible cancellation point and therefore not
++   marked with __THROW.  */
++extern struct protoent *getprotoent (void);
++
++/* Return entry from protocol data base for network with NAME.
++
++   This function is a possible cancellation point and therefore not
++   marked with __THROW.  */
++extern struct protoent *getprotobyname (const char *__name);
++
++/* Return entry from protocol data base which number is PROTO.
++
++   This function is a possible cancellation point and therefore not
++   marked with __THROW.  */
++extern struct protoent *getprotobynumber (int __proto);
++
++
++#ifdef	__USE_MISC
++/* Reentrant versions of the functions above.  The additional
++   arguments specify a buffer of BUFLEN starting at BUF.
++
++   These functions are not part of POSIX and therefore no official
++   cancellation point.  But due to similarity with an POSIX interface
++   or due to the implementation they are cancellation points and
++   therefore not marked with __THROW.  */
++extern int getprotoent_r (struct protoent *__restrict __result_buf,
++			  char *__restrict __buf, size_t __buflen,
++			  struct protoent **__restrict __result);
++
++extern int getprotobyname_r (const char *__restrict __name,
++			     struct protoent *__restrict __result_buf,
++			     char *__restrict __buf, size_t __buflen,
++			     struct protoent **__restrict __result);
++
++extern int getprotobynumber_r (int __proto,
++			       struct protoent *__restrict __result_buf,
++			       char *__restrict __buf, size_t __buflen,
++			       struct protoent **__restrict __result);
++
++
++/* Establish network group NETGROUP for enumeration.
++
++   This function is not part of POSIX and therefore no official
++   cancellation point.  But due to similarity with an POSIX interface
++   or due to the implementation it is a cancellation point and
++   therefore not marked with __THROW.  */
++extern int setnetgrent (const char *__netgroup);
++
++/* Free all space allocated by previous `setnetgrent' call.
++
++   This function is not part of POSIX and therefore no official
++   cancellation point.  But due to similarity with an POSIX interface
++   or due to the implementation it is a cancellation point and
++   therefore not marked with __THROW.  */
++extern void endnetgrent (void);
++
++/* Get next member of netgroup established by last `setnetgrent' call
++   and return pointers to elements in HOSTP, USERP, and DOMAINP.
++
++   This function is not part of POSIX and therefore no official
++   cancellation point.  But due to similarity with an POSIX interface
++   or due to the implementation it is a cancellation point and
++   therefore not marked with __THROW.  */
++extern int getnetgrent (char **__restrict __hostp,
++			char **__restrict __userp,
++			char **__restrict __domainp);
++
++
++/* Test whether NETGROUP contains the triple (HOST,USER,DOMAIN).
++
++   This function is not part of POSIX and therefore no official
++   cancellation point.  But due to similarity with an POSIX interface
++   or due to the implementation it is a cancellation point and
++   therefore not marked with __THROW.  */
++extern int innetgr (const char *__netgroup, const char *__host,
++		    const char *__user, const char *__domain);
++
++/* Reentrant version of `getnetgrent' where result is placed in BUFFER.
++
++   This function is not part of POSIX and therefore no official
++   cancellation point.  But due to similarity with an POSIX interface
++   or due to the implementation it is a cancellation point and
++   therefore not marked with __THROW.  */
++extern int getnetgrent_r (char **__restrict __hostp,
++			  char **__restrict __userp,
++			  char **__restrict __domainp,
++			  char *__restrict __buffer, size_t __buflen);
++#endif	/* misc */
++
++
++#ifdef __USE_MISC
++/* Call `rshd' at port RPORT on remote machine *AHOST to execute CMD.
++   The local user is LOCUSER, on the remote machine the command is
++   executed as REMUSER.  In *FD2P the descriptor to the socket for the
++   connection is returned.  The caller must have the right to use a
++   reserved port.  When the function returns *AHOST contains the
++   official host name.
++
++   This function is not part of POSIX and therefore no official
++   cancellation point.  But due to similarity with an POSIX interface
++   or due to the implementation it is a cancellation point and
++   therefore not marked with __THROW.  */
++extern int rcmd (char **__restrict __ahost, unsigned short int __rport,
++		 const char *__restrict __locuser,
++		 const char *__restrict __remuser,
++		 const char *__restrict __cmd, int *__restrict __fd2p);
++
++/* This is the equivalent function where the protocol can be selected
++   and which therefore can be used for IPv6.
++
++   This function is not part of POSIX and therefore no official
++   cancellation point.  But due to similarity with an POSIX interface
++   or due to the implementation it is a cancellation point and
++   therefore not marked with __THROW.  */
++extern int rcmd_af (char **__restrict __ahost, unsigned short int __rport,
++		    const char *__restrict __locuser,
++		    const char *__restrict __remuser,
++		    const char *__restrict __cmd, int *__restrict __fd2p,
++		    sa_family_t __af);
++
++/* Call `rexecd' at port RPORT on remote machine *AHOST to execute
++   CMD.  The process runs at the remote machine using the ID of user
++   NAME whose cleartext password is PASSWD.  In *FD2P the descriptor
++   to the socket for the connection is returned.  When the function
++   returns *AHOST contains the official host name.
++
++   This function is not part of POSIX and therefore no official
++   cancellation point.  But due to similarity with an POSIX interface
++   or due to the implementation it is a cancellation point and
++   therefore not marked with __THROW.  */
++extern int rexec (char **__restrict __ahost, int __rport,
++		  const char *__restrict __name,
++		  const char *__restrict __pass,
++		  const char *__restrict __cmd, int *__restrict __fd2p);
++
++/* This is the equivalent function where the protocol can be selected
++   and which therefore can be used for IPv6.
++
++   This function is not part of POSIX and therefore no official
++   cancellation point.  But due to similarity with an POSIX interface
++   or due to the implementation it is a cancellation point and
++   therefore not marked with __THROW.  */
++extern int rexec_af (char **__restrict __ahost, int __rport,
++		     const char *__restrict __name,
++		     const char *__restrict __pass,
++		     const char *__restrict __cmd, int *__restrict __fd2p,
++		     sa_family_t __af);
++
++/* Check whether user REMUSER on system RHOST is allowed to login as LOCUSER.
++   If SUSER is not zero the user tries to become superuser.  Return 0 if
++   it is possible.
++
++   This function is not part of POSIX and therefore no official
++   cancellation point.  But due to similarity with an POSIX interface
++   or due to the implementation it is a cancellation point and
++   therefore not marked with __THROW.  */
++extern int ruserok (const char *__rhost, int __suser,
++		    const char *__remuser, const char *__locuser);
++
++/* This is the equivalent function where the protocol can be selected
++   and which therefore can be used for IPv6.
++
++   This function is not part of POSIX and therefore no official
++   cancellation point.  But due to similarity with an POSIX interface
++   or due to the implementation it is a cancellation point and
++   therefore not marked with __THROW.  */
++extern int ruserok_af (const char *__rhost, int __suser,
++		       const char *__remuser, const char *__locuser,
++		       sa_family_t __af);
++
++/* Check whether user REMUSER on system indicated by IPv4 address
++   RADDR is allowed to login as LOCUSER.  Non-IPv4 (e.g., IPv6) are
++   not supported.  If SUSER is not zero the user tries to become
++   superuser.  Return 0 if it is possible.
++
++   This function is not part of POSIX and therefore no official
++   cancellation point.  But due to similarity with an POSIX interface
++   or due to the implementation it is a cancellation point and
++   therefore not marked with __THROW.  */
++extern int iruserok (uint32_t __raddr, int __suser,
++		     const char *__remuser, const char *__locuser);
++
++/* This is the equivalent function where the pfamiliy if the address
++   pointed to by RADDR is determined by the value of AF.  It therefore
++   can be used for IPv6
++
++   This function is not part of POSIX and therefore no official
++   cancellation point.  But due to similarity with an POSIX interface
++   or due to the implementation it is a cancellation point and
++   therefore not marked with __THROW.  */
++extern int iruserok_af (const void *__raddr, int __suser,
++			const char *__remuser, const char *__locuser,
++			sa_family_t __af);
++
++/* Try to allocate reserved port, returning a descriptor for a socket opened
++   at this port or -1 if unsuccessful.  The search for an available port
++   will start at ALPORT and continues with lower numbers.
++
++   This function is not part of POSIX and therefore no official
++   cancellation point.  But due to similarity with an POSIX interface
++   or due to the implementation it is a cancellation point and
++   therefore not marked with __THROW.  */
++extern int rresvport (int *__alport);
++
++/* This is the equivalent function where the protocol can be selected
++   and which therefore can be used for IPv6.
++
++   This function is not part of POSIX and therefore no official
++   cancellation point.  But due to similarity with an POSIX interface
++   or due to the implementation it is a cancellation point and
++   therefore not marked with __THROW.  */
++extern int rresvport_af (int *__alport, sa_family_t __af);
++#endif
++
++
++/* Extension from POSIX.1g.  */
++#ifdef	__USE_POSIX
++/* Structure to contain information about address of a service provider.  */
++struct addrinfo
++{
++  int ai_flags;			/* Input flags.  */
++  int ai_family;		/* Protocol family for socket.  */
++  int ai_socktype;		/* Socket type.  */
++  int ai_protocol;		/* Protocol for socket.  */
++  socklen_t ai_addrlen;		/* Length of socket address.  */
++  struct sockaddr *ai_addr;	/* Socket address for socket.  */
++  char *ai_canonname;		/* Canonical name for service location.  */
++  struct addrinfo *ai_next;	/* Pointer to next in list.  */
++};
++
++# ifdef __USE_GNU
++/* Structure used as control block for asynchronous lookup.  */
++struct gaicb
++{
++  const char *ar_name;		/* Name to look up.  */
++  const char *ar_service;	/* Service name.  */
++  const struct addrinfo *ar_request; /* Additional request specification.  */
++  struct addrinfo *ar_result;	/* Pointer to result.  */
++  /* The following are internal elements.  */
++  int __return;
++  int __glibc_reserved[5];
++};
++
++/* Lookup mode.  */
++#  define GAI_WAIT	0
++#  define GAI_NOWAIT	1
++# endif
++
++/* Possible values for `ai_flags' field in `addrinfo' structure.  */
++# define AI_PASSIVE	0x0001	/* Socket address is intended for `bind'.  */
++# define AI_CANONNAME	0x0002	/* Request for canonical name.  */
++# define AI_NUMERICHOST	0x0004	/* Don't use name resolution.  */
++# define AI_V4MAPPED	0x0008	/* IPv4 mapped addresses are acceptable.  */
++# define AI_ALL		0x0010	/* Return IPv4 mapped and IPv6 addresses.  */
++# define AI_ADDRCONFIG	0x0020	/* Use configuration of this host to choose
++				   returned address type..  */
++# ifdef __USE_GNU
++#  define AI_IDN	0x0040	/* IDN encode input (assuming it is encoded
++				   in the current locale's character set)
++				   before looking it up. */
++#  define AI_CANONIDN	0x0080	/* Translate canonical name from IDN format. */
++#  define AI_IDN_ALLOW_UNASSIGNED 0x0100 /* Don't reject unassigned Unicode
++					    code points.  */
++#  define AI_IDN_USE_STD3_ASCII_RULES 0x0200 /* Validate strings according to
++						STD3 rules.  */
++# endif
++# define AI_NUMERICSERV	0x0400	/* Don't use name resolution.  */
++
++/* Error values for `getaddrinfo' function.  */
++# define EAI_BADFLAGS	  -1	/* Invalid value for `ai_flags' field.  */
++# define EAI_NONAME	  -2	/* NAME or SERVICE is unknown.  */
++# define EAI_AGAIN	  -3	/* Temporary failure in name resolution.  */
++# define EAI_FAIL	  -4	/* Non-recoverable failure in name res.  */
++# define EAI_FAMILY	  -6	/* `ai_family' not supported.  */
++# define EAI_SOCKTYPE	  -7	/* `ai_socktype' not supported.  */
++# define EAI_SERVICE	  -8	/* SERVICE not supported for `ai_socktype'.  */
++# define EAI_MEMORY	  -10	/* Memory allocation failure.  */
++# define EAI_SYSTEM	  -11	/* System error returned in `errno'.  */
++# define EAI_OVERFLOW	  -12	/* Argument buffer overflow.  */
++# ifdef __USE_GNU
++#  define EAI_NODATA	  -5	/* No address associated with NAME.  */
++#  define EAI_ADDRFAMILY  -9	/* Address family for NAME not supported.  */
++#  define EAI_INPROGRESS  -100	/* Processing request in progress.  */
++#  define EAI_CANCELED	  -101	/* Request canceled.  */
++#  define EAI_NOTCANCELED -102	/* Request not canceled.  */
++#  define EAI_ALLDONE	  -103	/* All requests done.  */
++#  define EAI_INTR	  -104	/* Interrupted by a signal.  */
++#  define EAI_IDN_ENCODE  -105	/* IDN encoding failed.  */
++# endif
++
++# ifdef __USE_MISC
++#  define NI_MAXHOST      1025
++#  define NI_MAXSERV      32
++# endif
++
++# define NI_NUMERICHOST	1	/* Don't try to look up hostname.  */
++# define NI_NUMERICSERV 2	/* Don't convert port number to name.  */
++# define NI_NOFQDN	4	/* Only return nodename portion.  */
++# define NI_NAMEREQD	8	/* Don't return numeric addresses.  */
++# define NI_DGRAM	16	/* Look up UDP service rather than TCP.  */
++# ifdef __USE_GNU
++#  define NI_IDN	32	/* Convert name from IDN format.  */
++#  define NI_IDN_ALLOW_UNASSIGNED 64 /* Don't reject unassigned Unicode
++					code points.  */
++#  define NI_IDN_USE_STD3_ASCII_RULES 128 /* Validate strings according to
++					     STD3 rules.  */
++# endif
++
++/* Translate name of a service location and/or a service name to set of
++   socket addresses.
++
++   This function is a possible cancellation point and therefore not
++   marked with __THROW.  */
++extern int getaddrinfo (const char *__restrict __name,
++			const char *__restrict __service,
++			const struct addrinfo *__restrict __req,
++			struct addrinfo **__restrict __pai);
++
++/* Free `addrinfo' structure AI including associated storage.  */
++extern void freeaddrinfo (struct addrinfo *__ai) __THROW;
++
++/* Convert error return from getaddrinfo() to a string.  */
++extern const char *gai_strerror (int __ecode) __THROW;
++
++/* Translate a socket address to a location and service name.
++
++   This function is a possible cancellation point and therefore not
++   marked with __THROW.  */
++extern int getnameinfo (const struct sockaddr *__restrict __sa,
++			socklen_t __salen, char *__restrict __host,
++			socklen_t __hostlen, char *__restrict __serv,
++			socklen_t __servlen, int __flags);
++#endif	/* POSIX */
++
++#ifdef __USE_GNU
++/* Enqueue ENT requests from the LIST.  If MODE is GAI_WAIT wait until all
++   requests are handled.  If WAIT is GAI_NOWAIT return immediately after
++   queueing the requests and signal completion according to SIG.
++
++   This function is not part of POSIX and therefore no official
++   cancellation point.  But due to similarity with an POSIX interface
++   or due to the implementation it is a cancellation point and
++   therefore not marked with __THROW.  */
++extern int getaddrinfo_a (int __mode, struct gaicb *__list[__restrict_arr],
++			  int __ent, struct sigevent *__restrict __sig);
++
++/* Suspend execution of the thread until at least one of the ENT requests
++   in LIST is handled.  If TIMEOUT is not a null pointer it specifies the
++   longest time the function keeps waiting before returning with an error.
++
++   This function is not part of POSIX and therefore no official
++   cancellation point.  But due to similarity with an POSIX interface
++   or due to the implementation it is a cancellation point and
++   therefore not marked with __THROW.  */
++extern int gai_suspend (const struct gaicb *const __list[], int __ent,
++			const struct timespec *__timeout);
++
++/* Get the error status of the request REQ.  */
++extern int gai_error (struct gaicb *__req) __THROW;
++
++/* Cancel the requests associated with GAICBP.  */
++extern int gai_cancel (struct gaicb *__gaicbp) __THROW;
++#endif	/* GNU */
++
++__END_DECLS
++
++#endif	/* netdb.h */
+Index: glibc-2.20/resolv/resolv.h.in
+===================================================================
+--- /dev/null
++++ glibc-2.20/resolv/resolv.h.in
+@@ -0,0 +1,389 @@
++/*
++ * Copyright (c) 1983, 1987, 1989
++ *    The Regents of the University of California.  All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the above copyright
++ *    notice, this list of conditions and the following disclaimer.
++ * 2. Redistributions in binary form must reproduce the above copyright
++ *    notice, this list of conditions and the following disclaimer in the
++ *    documentation and/or other materials provided with the distribution.
++ * 4. Neither the name of the University nor the names of its contributors
++ *    may be used to endorse or promote products derived from this software
++ *    without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ */
++
++/*
++ * Portions Copyright (c) 1996-1999 by Internet Software Consortium.
++ *
++ * Permission to use, copy, modify, and distribute this software for any
++ * purpose with or without fee is hereby granted, provided that the above
++ * copyright notice and this permission notice appear in all copies.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
++ * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
++ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
++ * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
++ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
++ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
++ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
++ * SOFTWARE.
++ */
++
++/*
++ *	@(#)resolv.h	8.1 (Berkeley) 6/2/93
++ *	$BINDId: resolv.h,v 8.31 2000/03/30 20:16:50 vixie Exp $
++ */
++
++#ifndef _RESOLV_H_
++
++/* These headers are needed for types used in the `struct res_state'
++   declaration.  */
++#include <sys/types.h>
++#include <netinet/in.h>
++
++#ifndef __need_res_state
++# define _RESOLV_H_
++
++# include <sys/param.h>
++# include <sys/cdefs.h>
++# include <stdio.h>
++# include <arpa/nameser.h>
++#endif
++
++#ifndef __res_state_defined
++# define __res_state_defined
++
++typedef enum { res_goahead, res_nextns, res_modified, res_done, res_error }
++	res_sendhookact;
++
++typedef res_sendhookact (*res_send_qhook) (struct sockaddr_in * const *__ns,
++					   const u_char **__query,
++					   int *__querylen,
++					   u_char *__ans,
++					   int __anssiz,
++					   int *__resplen);
++
++typedef res_sendhookact (*res_send_rhook) (const struct sockaddr_in *__ns,
++					   const u_char *__query,
++					   int __querylen,
++					   u_char *__ans,
++					   int __anssiz,
++					   int *__resplen);
++
++/*
++ * Global defines and variables for resolver stub.
++ */
++# define MAXNS			3	/* max # name servers we'll track */
++# define MAXDFLSRCH		3	/* # default domain levels to try */
++# define MAXDNSRCH		6	/* max # domains in search path */
++# define LOCALDOMAINPARTS	2	/* min levels in name that is "local" */
++
++# define RES_TIMEOUT		5	/* min. seconds between retries */
++# define MAXRESOLVSORT		10	/* number of net to sort on */
++# define RES_MAXNDOTS		15	/* should reflect bit field size */
++# define RES_MAXRETRANS		30	/* only for resolv.conf/RES_OPTIONS */
++# define RES_MAXRETRY		5	/* only for resolv.conf/RES_OPTIONS */
++# define RES_DFLRETRY		2	/* Default #/tries. */
++# define RES_MAXTIME		65535	/* Infinity, in milliseconds. */
++
++struct __res_state {
++	int	retrans;		/* retransmition time interval */
++	int	retry;			/* number of times to retransmit */
++	u_long	options;		/* option flags - see below. */
++	int	nscount;		/* number of name servers */
++	struct sockaddr_in
++		nsaddr_list[MAXNS];	/* address of name server */
++# define nsaddr	nsaddr_list[0]		/* for backward compatibility */
++	u_short	id;			/* current message id */
++	/* 2 byte hole here.  */
++	char	*dnsrch[MAXDNSRCH+1];	/* components of domain to search */
++	char	defdname[256];		/* default domain (deprecated) */
++	u_long	pfcode;			/* RES_PRF_ flags - see below. */
++	unsigned ndots:4;		/* threshold for initial abs. query */
++	unsigned nsort:4;		/* number of elements in sort_list[] */
++	unsigned ipv6_unavail:1;	/* connecting to IPv6 server failed */
++	unsigned unused:23;
++	struct {
++		struct in_addr	addr;
++		u_int32_t	mask;
++	} sort_list[MAXRESOLVSORT];
++	/* 4 byte hole here on 64-bit architectures.  */
++	res_send_qhook qhook;		/* query hook */
++	res_send_rhook rhook;		/* response hook */
++	int	res_h_errno;		/* last one set for this context */
++	int	_vcsock;		/* PRIVATE: for res_send VC i/o */
++	u_int	_flags;			/* PRIVATE: see below */
++	/* 4 byte hole here on 64-bit architectures.  */
++	union {
++		char	pad[52];	/* On an i386 this means 512b total. */
++		struct {
++			u_int16_t		nscount;
++			u_int16_t		nsmap[MAXNS];
++			int			nssocks[MAXNS];
++			u_int16_t		nscount6;
++			u_int16_t		nsinit;
++			struct sockaddr_in6	*nsaddrs[MAXNS];
++#ifdef _LIBC
++			unsigned long long int	initstamp
++			  __attribute__((packed));
++#else
++			unsigned int		_initstamp[2];
++#endif
++		} _ext;
++	} _u;
++};
++
++typedef struct __res_state *res_state;
++# undef __need_res_state
++#endif
++
++#ifdef _RESOLV_H_
++/*
++ * Revision information.  This is the release date in YYYYMMDD format.
++ * It can change every day so the right thing to do with it is use it
++ * in preprocessor commands such as "#if (__RES > 19931104)".  Do not
++ * compare for equality; rather, use it to determine whether your resolver
++ * is new enough to contain a certain feature.
++ */
++
++#define	__RES	19991006
++
++/*
++ * Resolver configuration file.
++ * Normally not present, but may contain the address of the
++ * inital name server(s) to query and the domain search list.
++ */
++
++#ifndef _PATH_RESCONF
++#define _PATH_RESCONF        "@libc_cv_sysconfdir@/resolv.conf"
++#endif
++
++struct res_sym {
++	int	number;		/* Identifying number, like T_MX */
++	char *	name;		/* Its symbolic name, like "MX" */
++	char *	humanname;	/* Its fun name, like "mail exchanger" */
++};
++
++/*
++ * Resolver flags (used to be discrete per-module statics ints).
++ */
++#define	RES_F_VC	0x00000001	/* socket is TCP */
++#define	RES_F_CONN	0x00000002	/* socket is connected */
++#define RES_F_EDNS0ERR	0x00000004	/* EDNS0 caused errors */
++
++/* res_findzonecut() options */
++#define	RES_EXHAUSTIVE	0x00000001	/* always do all queries */
++
++/*
++ * Resolver options (keep these in synch with res_debug.c, please)
++ */
++#define RES_INIT	0x00000001	/* address initialized */
++#define RES_DEBUG	0x00000002	/* print debug messages */
++#define RES_AAONLY	0x00000004	/* authoritative answers only (!IMPL)*/
++#define RES_USEVC	0x00000008	/* use virtual circuit */
++#define RES_PRIMARY	0x00000010	/* query primary server only (!IMPL) */
++#define RES_IGNTC	0x00000020	/* ignore trucation errors */
++#define RES_RECURSE	0x00000040	/* recursion desired */
++#define RES_DEFNAMES	0x00000080	/* use default domain name */
++#define RES_STAYOPEN	0x00000100	/* Keep TCP socket open */
++#define RES_DNSRCH	0x00000200	/* search up local domain tree */
++#define	RES_INSECURE1	0x00000400	/* type 1 security disabled */
++#define	RES_INSECURE2	0x00000800	/* type 2 security disabled */
++#define	RES_NOALIASES	0x00001000	/* shuts off HOSTALIASES feature */
++#define	RES_USE_INET6	0x00002000	/* use/map IPv6 in gethostbyname() */
++#define RES_ROTATE	0x00004000	/* rotate ns list after each query */
++#define	RES_NOCHECKNAME	0x00008000	/* do not check names for sanity (!IMPL) */
++#define	RES_KEEPTSIG	0x00010000	/* do not strip TSIG records */
++#define	RES_BLAST	0x00020000	/* blast all recursive servers */
++#define RES_USEBSTRING	0x00040000	/* IPv6 reverse lookup with byte
++					   strings */
++#define RES_NOIP6DOTINT	0x00080000	/* Do not use .ip6.int in IPv6
++					   reverse lookup */
++#define RES_USE_EDNS0	0x00100000	/* Use EDNS0.  */
++#define RES_SNGLKUP	0x00200000	/* one outstanding request at a time */
++#define RES_SNGLKUPREOP	0x00400000	/* -"-, but open new socket for each
++					   request */
++#define RES_USE_DNSSEC	0x00800000	/* use DNSSEC using OK bit in OPT */
++#define RES_NOTLDQUERY	0x01000000	/* Do not look up unqualified name
++					   as a TLD.  */
++
++#define RES_DEFAULT	(RES_RECURSE|RES_DEFNAMES|RES_DNSRCH|RES_NOIP6DOTINT)
++
++/*
++ * Resolver "pfcode" values.  Used by dig.
++ */
++#define RES_PRF_STATS	0x00000001
++#define RES_PRF_UPDATE	0x00000002
++#define RES_PRF_CLASS   0x00000004
++#define RES_PRF_CMD	0x00000008
++#define RES_PRF_QUES	0x00000010
++#define RES_PRF_ANS	0x00000020
++#define RES_PRF_AUTH	0x00000040
++#define RES_PRF_ADD	0x00000080
++#define RES_PRF_HEAD1	0x00000100
++#define RES_PRF_HEAD2	0x00000200
++#define RES_PRF_TTLID	0x00000400
++#define RES_PRF_HEADX	0x00000800
++#define RES_PRF_QUERY	0x00001000
++#define RES_PRF_REPLY	0x00002000
++#define RES_PRF_INIT	0x00004000
++/*			0x00008000	*/
++
++/* Things involving an internal (static) resolver context. */
++__BEGIN_DECLS
++extern struct __res_state *__res_state(void) __attribute__ ((__const__));
++__END_DECLS
++#define _res (*__res_state())
++
++#ifndef __BIND_NOSTATIC
++#define fp_nquery		__fp_nquery
++#define fp_query		__fp_query
++#define hostalias		__hostalias
++#define p_query			__p_query
++#define res_close		__res_close
++#define res_init		__res_init
++#define res_isourserver		__res_isourserver
++#define res_mkquery		__res_mkquery
++#define res_query		__res_query
++#define res_querydomain		__res_querydomain
++#define res_search		__res_search
++#define res_send		__res_send
++
++__BEGIN_DECLS
++void		fp_nquery (const u_char *, int, FILE *) __THROW;
++void		fp_query (const u_char *, FILE *) __THROW;
++const char *	hostalias (const char *) __THROW;
++void		p_query (const u_char *) __THROW;
++void		res_close (void) __THROW;
++int		res_init (void) __THROW;
++int		res_isourserver (const struct sockaddr_in *) __THROW;
++int		res_mkquery (int, const char *, int, int, const u_char *,
++			     int, const u_char *, u_char *, int) __THROW;
++int		res_query (const char *, int, int, u_char *, int) __THROW;
++int		res_querydomain (const char *, const char *, int, int,
++				 u_char *, int) __THROW;
++int		res_search (const char *, int, int, u_char *, int) __THROW;
++int		res_send (const u_char *, int, u_char *, int) __THROW;
++__END_DECLS
++#endif
++
++#define b64_ntop		__b64_ntop
++#define b64_pton		__b64_pton
++#define dn_comp			__dn_comp
++#define dn_count_labels		__dn_count_labels
++#define dn_expand		__dn_expand
++#define dn_skipname		__dn_skipname
++#define fp_resstat		__fp_resstat
++#define loc_aton		__loc_aton
++#define loc_ntoa		__loc_ntoa
++#define p_cdname		__p_cdname
++#define p_cdnname		__p_cdnname
++#define p_class			__p_class
++#define p_fqname		__p_fqname
++#define p_fqnname		__p_fqnname
++#define p_option		__p_option
++#define p_secstodate		__p_secstodate
++#define p_section		__p_section
++#define p_time			__p_time
++#define p_type			__p_type
++#define p_rcode			__p_rcode
++#define putlong			__putlong
++#define putshort		__putshort
++#define res_dnok		__res_dnok
++#define res_hnok		__res_hnok
++#define res_hostalias		__res_hostalias
++#define res_mailok		__res_mailok
++#define res_nameinquery		__res_nameinquery
++#define res_nclose		__res_nclose
++#define res_ninit		__res_ninit
++#define res_nmkquery		__res_nmkquery
++#define res_npquery		__res_npquery
++#define res_nquery		__res_nquery
++#define res_nquerydomain	__res_nquerydomain
++#define res_nsearch		__res_nsearch
++#define res_nsend		__res_nsend
++#define res_nisourserver	__res_nisourserver
++#define res_ownok		__res_ownok
++#define res_queriesmatch	__res_queriesmatch
++#define res_randomid		__res_randomid
++#define sym_ntop		__sym_ntop
++#define sym_ntos		__sym_ntos
++#define sym_ston		__sym_ston
++__BEGIN_DECLS
++int		res_hnok (const char *) __THROW;
++int		res_ownok (const char *) __THROW;
++int		res_mailok (const char *) __THROW;
++int		res_dnok (const char *) __THROW;
++int		sym_ston (const struct res_sym *, const char *, int *) __THROW;
++const char *	sym_ntos (const struct res_sym *, int, int *) __THROW;
++const char *	sym_ntop (const struct res_sym *, int, int *) __THROW;
++int		b64_ntop (u_char const *, size_t, char *, size_t) __THROW;
++int		b64_pton (char const *, u_char *, size_t) __THROW;
++int		loc_aton (const char *__ascii, u_char *__binary) __THROW;
++const char *	loc_ntoa (const u_char *__binary, char *__ascii) __THROW;
++int		dn_skipname (const u_char *, const u_char *) __THROW;
++void		putlong (u_int32_t, u_char *) __THROW;
++void		putshort (u_int16_t, u_char *) __THROW;
++const char *	p_class (int) __THROW;
++const char *	p_time (u_int32_t) __THROW;
++const char *	p_type (int) __THROW;
++const char *	p_rcode (int) __THROW;
++const u_char *	p_cdnname (const u_char *, const u_char *, int, FILE *)
++     __THROW;
++const u_char *	p_cdname (const u_char *, const u_char *, FILE *) __THROW;
++const u_char *	p_fqnname (const u_char *__cp, const u_char *__msg,
++			   int, char *, int) __THROW;
++const u_char *	p_fqname (const u_char *, const u_char *, FILE *) __THROW;
++const char *	p_option (u_long __option) __THROW;
++char *		p_secstodate (u_long) __THROW;
++int		dn_count_labels (const char *) __THROW;
++int		dn_comp (const char *, u_char *, int, u_char **, u_char **)
++     __THROW;
++int		dn_expand (const u_char *, const u_char *, const u_char *,
++			   char *, int) __THROW;
++u_int		res_randomid (void) __THROW;
++int		res_nameinquery (const char *, int, int,
++				 const u_char *, const u_char *) __THROW;
++int		res_queriesmatch (const u_char *, const u_char *,
++				  const u_char *, const u_char *) __THROW;
++const char *	p_section (int __section, int __opcode) __THROW;
++/* Things involving a resolver context. */
++int		res_ninit (res_state) __THROW;
++int		res_nisourserver (const res_state,
++				  const struct sockaddr_in *) __THROW;
++void		fp_resstat (const res_state, FILE *) __THROW;
++void		res_npquery (const res_state, const u_char *, int, FILE *)
++     __THROW;
++const char *	res_hostalias (const res_state, const char *, char *, size_t)
++     __THROW;
++int		res_nquery (res_state, const char *, int, int, u_char *, int)
++     __THROW;
++int		res_nsearch (res_state, const char *, int, int, u_char *, int)
++     __THROW;
++int		res_nquerydomain (res_state, const char *, const char *, int,
++				  int, u_char *, int) __THROW;
++int		res_nmkquery (res_state, int, const char *, int, int,
++			      const u_char *, int, const u_char *, u_char *,
++			      int) __THROW;
++int		res_nsend (res_state, const u_char *, int, u_char *, int)
++     __THROW;
++void		res_nclose (res_state) __THROW;
++__END_DECLS
++#endif
++
++#endif /* !_RESOLV_H_ */
+Index: glibc-2.20/configure
+===================================================================
+--- glibc-2.20.orig/configure
++++ glibc-2.20/configure
+@@ -7177,7 +7177,7 @@ RELEASE=`sed -n -e 's/^#define RELEASE "
+ 
+ 
+ 
+-ac_config_files="$ac_config_files config.make Makefile"
++ac_config_files="$ac_config_files config.make Makefile nss/db-Makefile resolv/netdb.h resolv/resolv.h"
+ 
+ ac_config_commands="$ac_config_commands default"
+ 
+@@ -7897,6 +7897,9 @@ do
+     "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+     "config.make") CONFIG_FILES="$CONFIG_FILES config.make" ;;
+     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
++    "nss/db-Makefile") CONFIG_FILES="$CONFIG_FILES nss/db-Makefile" ;;
++    "resolv/netdb.h") CONFIG_FILES="$CONFIG_FILES resolv/netdb.h" ;;
++    "resolv/resolv.h") CONFIG_FILES="$CONFIG_FILES resolv/resolv.h" ;;
+     "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
+ 
+   *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;

diff --git a/sys-libs/glibc/files/2.20/glibc-2.20-shadow-prefix.patch b/sys-libs/glibc/files/2.20/glibc-2.20-shadow-prefix.patch
deleted file mode 100644
index e85848f..0000000
--- a/sys-libs/glibc/files/2.20/glibc-2.20-shadow-prefix.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Index: shadow/Makefile
-===================================================================
---- shadow/Makefile.orig
-+++ shadow/Makefile
-@@ -36,5 +36,6 @@ CFLAGS-fgetspent_r.c = -fexceptions $(li
- CFLAGS-putspent.c = -fexceptions $(libio-mtsafe)
- CFLAGS-getspnam.c = -fexceptions
- CFLAGS-getspnam_r.c = -fexceptions
-+CPPFLAGS-lckpwdf.c = -DSYSCONFDIR='"$(sysconfdir)"'
- 
- include ../Rules
-Index: shadow/lckpwdf.c
-===================================================================
---- shadow/lckpwdf.c.orig
-+++ shadow/lckpwdf.c
-@@ -29,7 +29,7 @@
- 
- 
- /* Name of the lock file.  */
--#define PWD_LOCKFILE "/etc/.pwd.lock"
-+#define PWD_LOCKFILE SYSCONFDIR "/.pwd.lock"
- 
- /* How long to wait for getting the lock before returning with an
-    error.  */

diff --git a/sys-libs/glibc/glibc-2.20.ebuild b/sys-libs/glibc/glibc-2.20.ebuild
index dbd20d1..9cdd8cf 100644
--- a/sys-libs/glibc/glibc-2.20.ebuild
+++ b/sys-libs/glibc/glibc-2.20.ebuild
@@ -157,6 +157,8 @@ eblit-src_unpack-pre() {
 }
 
 eblit-src_prepare-post() {
+	eprefixify extra/locale/locale-gen
+
 	cd "${S}"
 
 	if use hardened ; then
@@ -187,23 +189,21 @@ eblit-src_prepare-post() {
 
 	if use rap; then
 		if type -p lsb_release > lsb-loc; then
-			local lsb-id=$(lsb_release -i)
-			local lsb-rel=$(lsb_release -r)
+			local lsb_id=$(lsb_release -i)
+			local lsb_rel=$(lsb_release -r)
 		fi
 
-		if [[ ${lsb-id} == *CentOS ]] || [[ ${lsb-id} == *RedHat* ]]; then
-			if [[ ${lsb-rel} == 5.6 ]]; then
+		if [[ ${lsb_id} == *CentOS ]] || [[ ${lsb_id} == *RedHat* ]]; then
+			if [[ ${lsb_rel} == 5.6 ]]; then
 				elog "Your kernel is known to have vdso bug, disabling this feature"
+				elog "https://bugzilla.redhat.com/show_bug.cgi?id=678613"
 				epatch "${FILESDIR}"/${PV}/${P}-vdso-disable.patch
 			fi
 		fi
 
 		epatch "${FILESDIR}"/2.17/${PN}-2.17-runtime-prefix.patch
-	        eprefixify glibc-compat/nss_{compat/compat-{grp,{,s}pwd},files/files-netgrp}.c \
-			nis/nss_compat/compat-{grp,initgroups,{,s}pwd}.c \
-			nss/{db-Makefile,{bug-erange,nss_files/files-init{,groups}}.c} \
-			resolv/{netdb,resolv}.h sysdeps/{{generic,unix/sysv/linux}/paths.h,posix/system.c} \
+	        eprefixify sysdeps/{{generic,unix/sysv/linux}/paths.h,posix/system.c} \
 			libio/iopopen.c
-		epatch "${FILESDIR}"/${PV}/${P}-shadow-prefix.patch
+		epatch "${FILESDIR}"/${PV}/${P}-configurable-paths.patch
 	fi
 }


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2014-12-04  8:17 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-04  8:17 [gentoo-commits] dev/heroxbd:master commit in: sys-libs/glibc/files/2.17/, sys-libs/glibc/, sys-libs/glibc/files/2.20/ Benda XU

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox