Wed Jun 26 01:58:49 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
authorroland <roland>
Wed, 26 Jun 1996 15:29:07 +0000 (15:29 +0000)
committerroland <roland>
Wed, 26 Jun 1996 15:29:07 +0000 (15:29 +0000)
* nss/nsswitch.c (nss_parse_file): Call __getline, not getline.
(service_alias): Variable removed.
(nss_parse_service_list): New function, broken out of nss_getline.
Remove alias conversion; we will just use symlinks.
(__nss_database_lookup): Take new string arg DEFCONFIG.
If no entry exists, make one with service list parsed from that.
* nss/nsswitch.h: Update protocol for __nss_database_lookup.
* nss/XXX-lookup.c (DEFAULT_CONFIG): New macro, set to 0 if undefined.
(DB_LOOKUP_FCT): Pass it to _nss_database_lookup.

nss/XXX-lookup.c
nss/nsswitch.h

index 1f8cbbf..4a2d25c 100644 (file)
@@ -25,6 +25,10 @@ Boston, MA 02111-1307, USA.  */
 |* DATABASE_NAME - name of the database the function accesses     *|
 |*                (e.g., hosts, servicess, ...)                   *|
 |*                                                                *|
+|* One additional symbol may optionally be defined:               *|
+|*                                                                *|
+|* DEFAULT_CONFIG - string for default conf (e.g. "dns files")    *|
+|*                                                                *|
 \*******************************************************************/
 
 #define DB_LOOKUP_FCT CONCAT3_1 (__nss_, DATABASE_NAME, _lookup)
@@ -35,6 +39,9 @@ Boston, MA 02111-1307, USA.  */
 #define STRINGIFY1(Name) STRINGIFY2 (Name)
 #define STRINGIFY2(Name) #Name
 
+#ifndef DEFAULT_CONFIG
+#define DEFAULT_CONFIG 0
+#endif
 
 static service_user *database = NULL;
 
@@ -42,7 +49,8 @@ int
 DB_LOOKUP_FCT (service_user **ni, const char *fct_name, void **fctp)
 {
   if (database == NULL
-      && __nss_database_lookup (DATABASE_NAME_STRING, &database) < 0)
+      && __nss_database_lookup (DATABASE_NAME_STRING, DEFAULT_CONFIG,
+                               &database) < 0)
     return -1;
 
   *ni = database;
index f597a58..d95d432 100644 (file)
@@ -108,9 +108,12 @@ typedef struct name_database
 
 /* Interface functions for NSS.  */
 
-/* Get the data structure representing the specified database.  More
+/* Get the data structure representing the specified database.
+   If there is no configuration for this database in the file,
+   parse a service list from DEFCONFIG and use that.  More
    than one function can use the database.  */
-int __nss_database_lookup (const char *database, service_user **ni);
+int __nss_database_lookup (const char *database, const char *defconfig,
+                          service_user **ni);
 
 
 /* Put first function with name FCT_NAME for SERVICE in FCTP.  The