*ni = nss_parse_service_list (defconfig ?: "compat [NOTFOUND=return] files");
if (*ni == NULL) *ni = nss_parse_service_list (defconfig ?: "compat [NOTFOUND=return] files");
__nss_database_lookup (const char *database, const char *defconfig,		       service_user **ni){  /* Prevent multiple threads to change the service table.  */  __libc_lock_lock (lock);  /* Reconsider database variable in case some other thread called     `__nss_configure_lookup' while we waited for the lock.  */  if (*ni != NULL)    return 0;  if (nss_initialized == 0 && service_table == NULL)    /* Read config file.  */    service_table = nss_parse_file (_PATH_NSSWITCH_CONF);  /* Test whether configuration data is available.  */  if (service_table != NULL)    {      /* Return first `service_user' entry for DATABASE.  */      name_database_entry *entry;      /* XXX Could use some faster mechanism here.  But each database is	 only requested once and so this might not be critical.  */      for (entry = service_table->entry; entry != NULL; entry = entry->next)	if (strcmp (database, entry->name) == 0)	  {	    *ni = entry->service;	    return 0;	  }    }  /* No configuration data is available, either because nsswitch.conf     doesn't exist or because it doesn't has a line for this database.     DEFCONFIG specifies the default service list for this database,     or null to use the most common default.  */  *ni = nss_parse_service_list (defconfig ?: "compat [NOTFOUND=return] files");  __libc_lock_unlock (lock);  return 0;}