#ifndef _COMPAT_COMMON_H
#define _COMPAT_COMMON_H
#include <nss_common.h>
#include <nss_dbdefs.h>
#include <stdio.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct compat_backend *compat_backend_ptr_t;
typedef nss_status_t (*compat_backend_op_t)(compat_backend_ptr_t, void *);
typedef nss_status_t (*files_do_all_func_t)(const char *, int, void *args);
typedef int (*compat_XY_check_func)(nss_XbyY_args_t *);
typedef const char *(*compat_get_name)(nss_XbyY_args_t *);
typedef int (*compat_merge_func)(compat_backend_ptr_t,
nss_XbyY_args_t *,
const char **fields);
typedef struct setofstrings *strset_t;
struct compat_backend {
compat_backend_op_t *ops;
int n_ops;
const char *filename;
FILE *f;
int minbuf;
char *buf;
int linelen;
nss_db_initf_t db_initf;
nss_db_root_t *db_rootp;
nss_getent_t db_context;
compat_get_name getnamef;
compat_merge_func mergef;
enum {
GETENT_FILE,
GETENT_NETGROUP,
GETENT_ATTRDB,
GETENT_ALL,
GETENT_DONE
} state;
strset_t minuses;
int permit_netgroups;
const char *yp_domain;
nss_backend_t *getnetgrent_backend;
char *netgr_buffer;
int return_string_data;
int (*str2ent_save)();
int (*str2ent_alt)();
void *workarea;
};
#if defined(__STDC__)
extern nss_backend_t *_nss_compat_constr(compat_backend_op_t *ops,
int n_ops,
const char *filename,
int min_bufsize,
nss_db_root_t *rootp,
nss_db_initf_t initf,
int netgroups,
compat_get_name getname_func,
compat_merge_func merge_func);
extern nss_status_t _nss_compat_destr(compat_backend_ptr_t, void *dummy);
extern nss_status_t _nss_compat_setent(compat_backend_ptr_t, void *dummy);
extern nss_status_t _nss_compat_endent(compat_backend_ptr_t, void *dummy);
extern nss_status_t _nss_compat_getent(compat_backend_ptr_t, void *);
extern nss_status_t _nss_compat_XY_all(compat_backend_ptr_t,
nss_XbyY_args_t *args,
compat_XY_check_func check,
nss_dbop_t op_num);
extern nss_status_t _attrdb_compat_XY_all(compat_backend_ptr_t,
nss_XbyY_args_t *args,
int netdb,
compat_XY_check_func check,
nss_dbop_t op_num);
#else
extern nss_backend_t *_nss_compat_constr();
extern nss_status_t _nss_compat_destr();
extern nss_status_t _nss_compat_setent();
extern nss_status_t _nss_compat_endent();
extern nss_status_t _nss_compat_getent();
extern nss_status_t _nss_compat_XY_all();
extern nss_status_t _attrdb_compat_XY_all();
#endif
extern int validate_passwd_ids(char *line, int *linelenp, int buflen,
int extra_chars);
extern int validate_group_ids(char *line, int *linelenp, int buflen,
int extra_chars);
#ifdef __cplusplus
}
#endif
#endif