int setnetgrent (const char *group) { int result; __libc_lock_lock (lock); if (__nss_not_use_nscd_netgroup > 0 && ++__nss_not_use_nscd_netgroup > NSS_NSCD_RETRY) __nss_not_use_nscd_netgroup = 0; if (!__nss_not_use_nscd_netgroup && !__nss_database_custom[NSS_DBSIDX_netgroup]) { result = __nscd_setnetgrent (group, &dataset); if (result >= 0) goto out; } result = internal_setnetgrent (group, &dataset); out: __libc_lock_unlock (lock); return result; }
static int nscd_setnetgrent (const char *group) { #ifdef USE_NSCD if (__nss_not_use_nscd_netgroup > 0 && ++__nss_not_use_nscd_netgroup > NSS_NSCD_RETRY) __nss_not_use_nscd_netgroup = 0; if (!__nss_not_use_nscd_netgroup && !__nss_database_custom[NSS_DBSIDX_netgroup]) return __nscd_setnetgrent (group, &dataset); #endif return -1; }