From a91dc2df80a0130748b49df7cc24e8f259feb131 Mon Sep 17 00:00:00 2001 From: don Date: Sat, 21 Jan 2012 21:40:05 +0000 Subject: [PATCH] update to 0.48 --- debian/changelog | 6 ++++++ nscd.c | 27 ++++++++++++++++++++++----- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/debian/changelog b/debian/changelog index 0edf035..b532baf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +unscd (0.48-1) UNRELEASED; urgency=low + + * New upstream release + + -- Don Armstrong Sat, 21 Jan 2012 13:36:59 -0800 + unscd (0.47-3) unstable; urgency=low * Only indicate that the cache is being invalidated when in debug mode diff --git a/nscd.c b/nscd.c index 1af5b7a..1a8d60d 100644 --- a/nscd.c +++ b/nscd.c @@ -139,8 +139,9 @@ vda.linux@googlemail.com * thanks to Sebastian Krahmer (krahmer AT suse.de) * 0.46 fix a case when we forgot to remove a future entry on worker failure * 0.47 fix nscd without -d to not bump debug level + * 0.48 fix for changes in __nss_disable_nscd API in glibc-2.15 */ -#define PROGRAM_VERSION "0.47" +#define PROGRAM_VERSION "0.48" #define DEBUG_BUILD 1 @@ -2097,7 +2098,7 @@ static const struct option longopt[] = { }; static const char *const help[] = { - "Do not daemonize; log to stderr", + "Do not daemonize; log to stderr (-dd: more verbosity)", "File to read configuration from", "Invalidate cache", "Shut the server down", @@ -2347,6 +2348,7 @@ static char* user_to_env_U(const char *user) /* not static - don't inline me, compiler! */ +void readlink_self_exe(void); void readlink_self_exe(void) { char buf[PATH_MAX + 1]; @@ -2397,9 +2399,24 @@ static void special_op(const char *arg) } +/* Callback for glibc-2.15 */ +struct traced_file; +static void do_nothing(size_t dbidx, struct traced_file *finfo) +{ + /* nscd from glibc-2.15 does something like this: + if (!dbs[dbidx].enabled || !dbs[dbidx].check_file) + return; + add_file_to_watch_list(finfo->fname); + */ +} + /* This internal glibc function is called to disable trying to contact nscd. - * We _are_ nscd, so we need to do the lookups, and not recurse. */ -void __nss_disable_nscd(void); + * We _are_ nscd, so we need to do the lookups, and not recurse. + * Until 2.14, this function was taking no parameters. + * In 2.15, it takes a function pointer from hell. + */ +void __nss_disable_nscd(void (*hell)(size_t, struct traced_file*)); + int main(int argc, char **argv) { @@ -2409,7 +2426,7 @@ int main(int argc, char **argv) const char *conffile; /* make sure we don't get recursive calls */ - __nss_disable_nscd(); + __nss_disable_nscd(do_nothing); if (argv[0][0] == 'w') /* "worker_nscd" */ worker(argv[1]); -- 2.39.2