* support extra two arguments to nsdispatch():

const char *method		/* method name for dynamic linking */
	const ns_src defaults[]		/* list of defaults */
* bring ns_src into the public arena for above
* make NS_xxx_CB() expand to nothing instead of { src, NULL } - makes
  the tables smaller
* convert 'typedef struct xyz { ... } xyz' -> 'typedef struct { ... } xyz'
  (which is how it used to be before i experimented with (and ditched) TAILQs)
This commit is contained in:
lukem 1999-01-19 07:55:14 +00:00
parent c014ce1d6e
commit ecaf658368
1 changed files with 28 additions and 21 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: nsswitch.h,v 1.4 1999/01/18 01:01:27 lukem Exp $ */
/* $NetBSD: nsswitch.h,v 1.5 1999/01/19 07:55:14 lukem Exp $ */
/*-
* Copyright (c) 1997, 1998, 1999 The NetBSD Foundation, Inc.
@ -104,7 +104,7 @@
* ns_dtab - `nsswitch dispatch table'
* contains an entry for each source and the appropriate function to call
*/
typedef struct ns_dtab {
typedef struct {
const char *src;
int (*callback)(void *retval, void *cb_data, va_list ap);
void *cb_data;
@ -113,26 +113,43 @@ typedef struct ns_dtab {
/*
* macros to help build an ns_dtab[]
*/
#define NS_FILES_CB(F,C) { NSSRC_FILES, F, C }
#define NS_FILES_CB(F,C) { NSSRC_FILES, F, C },
#ifdef HESIOD
# define NS_DNS_CB(F,C) { NSSRC_DNS, F, C }
# define NS_DNS_CB(F,C) { NSSRC_DNS, F, C },
#else
# define NS_DNS_CB(F,C) { NSSRC_DNS, NULL, NULL }
# define NS_DNS_CB(F,C)
#endif
#ifdef YP
# define NS_NIS_CB(F,C) { NSSRC_NIS, F, C }
# define NS_NIS_CB(F,C) { NSSRC_NIS, F, C },
#else
# define NS_NIS_CB(F,C) { NSSRC_NIS, NULL, NULL }
# define NS_NIS_CB(F,C)
#endif
#if defined(HESIOD) || defined(YP)
# define NS_COMPAT_CB(F,C) { NSSRC_COMPAT, F, C }
# define NS_COMPAT_CB(F,C) { NSSRC_COMPAT, F, C },
#else
# define NS_COMPAT_CB(F,C) { NSSRC_COMPAT, NULL, NULL }
# define NS_COMPAT_CB(F,C)
#endif
/*
* ns_src - `nsswitch source'
* used by the nsparser routines to store a mapping between a source
* and its dispatch control flags for a given database.
*/
typedef struct {
const char *name;
u_int32_t flags;
} ns_src;
/*
* default sourcelist (if nsswitch.conf is missing, corrupt,
* or the requested database doesn't have an entry.
*/
extern const ns_src __nsdefaultsrc[];
#ifdef _NS_PRIVATE
@ -140,22 +157,12 @@ typedef struct ns_dtab {
* private data structures for back-end nsswitch implementation
*/
/*
* ns_src - `nsswitch source'
* used by the nsparser routines to store a mapping between a source
* and its dispatch control flags for a given database.
*/
typedef struct ns_src {
const char *name;
u_int32_t flags;
} ns_src;
/*
* ns_dbt - `nsswitch database thang'
* for each database in /etc/nsswitch.conf there is a ns_dbt, with its
* name and a list of ns_src's containing the source information.
*/
typedef struct ns_dbt {
typedef struct {
const char *name; /* name of database */
ns_src *srclist; /* list of sources */
int srclistsize; /* size of srclist */
@ -168,7 +175,7 @@ typedef struct ns_dbt {
__BEGIN_DECLS
extern int nsdispatch __P((void *, const ns_dtab [], const char *,
...));
const char *, const ns_src [], ...));
#ifdef _NS_PRIVATE
extern void _nsdbtaddsrc __P((ns_dbt *, const ns_src *));