xref: /freebsd/contrib/sendmail/include/libsmdb/smdb.h (revision 4026605903c0ab8df33c4ae8c419acdb2b652af8)
106f25ae9SGregory Neil Shapiro /*
240266059SGregory Neil Shapiro  * Copyright (c) 1999-2001 Sendmail, Inc. and its suppliers.
340266059SGregory Neil Shapiro  *	All rights reserved.
440266059SGregory Neil Shapiro  *
540266059SGregory Neil Shapiro  * By using this file, you agree to the terms and conditions set
640266059SGregory Neil Shapiro  * forth in the LICENSE file which can be found at the top level of
740266059SGregory Neil Shapiro  * the sendmail distribution.
840266059SGregory Neil Shapiro  *
940266059SGregory Neil Shapiro  *	$Id: smdb.h,v 8.38 2001/11/19 19:30:03 gshapiro Exp $
1040266059SGregory Neil Shapiro  *
1106f25ae9SGregory Neil Shapiro  */
1206f25ae9SGregory Neil Shapiro 
1306f25ae9SGregory Neil Shapiro #ifndef _SMDB_H_
1406f25ae9SGregory Neil Shapiro # define _SMDB_H_
1506f25ae9SGregory Neil Shapiro 
1606f25ae9SGregory Neil Shapiro # include <sys/types.h>
1706f25ae9SGregory Neil Shapiro # include <sys/stat.h>
1840266059SGregory Neil Shapiro # include <sm/gen.h>
1940266059SGregory Neil Shapiro # include <sm/errstring.h>
2006f25ae9SGregory Neil Shapiro 
2106f25ae9SGregory Neil Shapiro # ifdef NDBM
2206f25ae9SGregory Neil Shapiro #  include <ndbm.h>
2306f25ae9SGregory Neil Shapiro # endif /* NDBM */
2406f25ae9SGregory Neil Shapiro 
2506f25ae9SGregory Neil Shapiro # ifdef NEWDB
2606f25ae9SGregory Neil Shapiro #  include <db.h>
2706f25ae9SGregory Neil Shapiro #  ifndef DB_VERSION_MAJOR
2806f25ae9SGregory Neil Shapiro #   define DB_VERSION_MAJOR 1
2906f25ae9SGregory Neil Shapiro #  endif /* ! DB_VERSION_MAJOR */
3006f25ae9SGregory Neil Shapiro # endif /* NEWDB */
3106f25ae9SGregory Neil Shapiro 
3206f25ae9SGregory Neil Shapiro /*
3306f25ae9SGregory Neil Shapiro **  Some size constants
3406f25ae9SGregory Neil Shapiro */
3540266059SGregory Neil Shapiro 
3606f25ae9SGregory Neil Shapiro #define SMDB_MAX_USER_NAME_LEN	1024
3706f25ae9SGregory Neil Shapiro #define SMDB_MAX_NAME_LEN	1024
3806f25ae9SGregory Neil Shapiro 
3906f25ae9SGregory Neil Shapiro /*
4006f25ae9SGregory Neil Shapiro **  This file defines the abstraction for database lookups. It is pretty
4106f25ae9SGregory Neil Shapiro **  much a copy of the db2 interface with the exception that every function
4206f25ae9SGregory Neil Shapiro **  returns 0 on success and non-zero on failure. The non-zero return code
4306f25ae9SGregory Neil Shapiro **  is meaningful.
4406f25ae9SGregory Neil Shapiro **
4506f25ae9SGregory Neil Shapiro **  I'm going to put the function comments in this file since the interface
4606f25ae9SGregory Neil Shapiro **  MUST be the same for all inheritors of this interface.
4706f25ae9SGregory Neil Shapiro */
4806f25ae9SGregory Neil Shapiro 
4906f25ae9SGregory Neil Shapiro typedef struct database_struct SMDB_DATABASE;
5006f25ae9SGregory Neil Shapiro typedef struct cursor_struct SMDB_CURSOR;
51193538b7SGregory Neil Shapiro typedef struct entry_struct SMDB_DBENT;
5206f25ae9SGregory Neil Shapiro 
5306f25ae9SGregory Neil Shapiro /*
5406f25ae9SGregory Neil Shapiro **  DB_CLOSE_FUNC -- close the database
5506f25ae9SGregory Neil Shapiro **
5606f25ae9SGregory Neil Shapiro **	Parameters:
5706f25ae9SGregory Neil Shapiro **		db -- The database to close.
5806f25ae9SGregory Neil Shapiro **
5906f25ae9SGregory Neil Shapiro **	Returns:
6006f25ae9SGregory Neil Shapiro **		0 - Success, otherwise errno.
6106f25ae9SGregory Neil Shapiro **
6206f25ae9SGregory Neil Shapiro */
6340266059SGregory Neil Shapiro 
6406f25ae9SGregory Neil Shapiro typedef int (*db_close_func) __P((SMDB_DATABASE *db));
6506f25ae9SGregory Neil Shapiro 
6606f25ae9SGregory Neil Shapiro /*
6706f25ae9SGregory Neil Shapiro **  DB_DEL_FUNC -- removes a key and data pair from the database
6806f25ae9SGregory Neil Shapiro **
6906f25ae9SGregory Neil Shapiro **	Parameters:
7006f25ae9SGregory Neil Shapiro **		db -- The database to close.
7106f25ae9SGregory Neil Shapiro **		key -- The key to remove.
7206f25ae9SGregory Neil Shapiro **		flags -- delete options. There are currently no defined
7306f25ae9SGregory Neil Shapiro **			 flags for delete.
7406f25ae9SGregory Neil Shapiro **
7506f25ae9SGregory Neil Shapiro **	Returns:
7606f25ae9SGregory Neil Shapiro **		0 - Success, otherwise errno.
7706f25ae9SGregory Neil Shapiro **
7806f25ae9SGregory Neil Shapiro */
7940266059SGregory Neil Shapiro 
8006f25ae9SGregory Neil Shapiro typedef int (*db_del_func) __P((SMDB_DATABASE *db,
8140266059SGregory Neil Shapiro 			   SMDB_DBENT *key, unsigned int flags));
8206f25ae9SGregory Neil Shapiro 
8306f25ae9SGregory Neil Shapiro /*
8406f25ae9SGregory Neil Shapiro **  DB_FD_FUNC -- Returns a pointer to a file used for the database.
8506f25ae9SGregory Neil Shapiro **
8606f25ae9SGregory Neil Shapiro **	Parameters:
8706f25ae9SGregory Neil Shapiro **		db -- The database to close.
8806f25ae9SGregory Neil Shapiro **		fd -- A pointer to store the returned fd in.
8906f25ae9SGregory Neil Shapiro **
9006f25ae9SGregory Neil Shapiro **	Returns:
9106f25ae9SGregory Neil Shapiro **		0 - Success, otherwise errno.
9206f25ae9SGregory Neil Shapiro **
9306f25ae9SGregory Neil Shapiro */
9440266059SGregory Neil Shapiro 
9506f25ae9SGregory Neil Shapiro typedef int (*db_fd_func) __P((SMDB_DATABASE *db, int* fd));
9606f25ae9SGregory Neil Shapiro 
9706f25ae9SGregory Neil Shapiro /*
9806f25ae9SGregory Neil Shapiro **  DB_GET_FUNC -- Gets the data associated with a key.
9906f25ae9SGregory Neil Shapiro **
10006f25ae9SGregory Neil Shapiro **	Parameters:
10106f25ae9SGregory Neil Shapiro **		db -- The database to close.
10206f25ae9SGregory Neil Shapiro **		key -- The key to access.
10306f25ae9SGregory Neil Shapiro **		data -- A place to store the returned data.
10406f25ae9SGregory Neil Shapiro **		flags -- get options. There are currently no defined
10506f25ae9SGregory Neil Shapiro **			 flags for get.
10606f25ae9SGregory Neil Shapiro **
10706f25ae9SGregory Neil Shapiro **	Returns:
10806f25ae9SGregory Neil Shapiro **		0 - Success, otherwise errno.
10906f25ae9SGregory Neil Shapiro **
11006f25ae9SGregory Neil Shapiro */
11140266059SGregory Neil Shapiro 
11206f25ae9SGregory Neil Shapiro typedef int (*db_get_func) __P((SMDB_DATABASE *db,
11306f25ae9SGregory Neil Shapiro 			   SMDB_DBENT *key,
11440266059SGregory Neil Shapiro 			   SMDB_DBENT *data, unsigned int flags));
11506f25ae9SGregory Neil Shapiro 
11606f25ae9SGregory Neil Shapiro /*
11706f25ae9SGregory Neil Shapiro **  DB_PUT_FUNC -- Sets some data according to the key.
11806f25ae9SGregory Neil Shapiro **
11906f25ae9SGregory Neil Shapiro **	Parameters:
12006f25ae9SGregory Neil Shapiro **		db -- The database to close.
12106f25ae9SGregory Neil Shapiro **		key -- The key to use.
12206f25ae9SGregory Neil Shapiro **		data -- The data to store.
12306f25ae9SGregory Neil Shapiro **		flags -- put options:
12406f25ae9SGregory Neil Shapiro **			SMDBF_NO_OVERWRITE - Return an error if key alread
12506f25ae9SGregory Neil Shapiro **					     exists.
12606f25ae9SGregory Neil Shapiro **			SMDBF_ALLOW_DUP - Allow duplicates in btree maps.
12706f25ae9SGregory Neil Shapiro **
12806f25ae9SGregory Neil Shapiro **	Returns:
12906f25ae9SGregory Neil Shapiro **		0 - Success, otherwise errno.
13006f25ae9SGregory Neil Shapiro **
13106f25ae9SGregory Neil Shapiro */
13240266059SGregory Neil Shapiro 
13306f25ae9SGregory Neil Shapiro typedef int (*db_put_func) __P((SMDB_DATABASE *db,
13406f25ae9SGregory Neil Shapiro 			   SMDB_DBENT *key,
13540266059SGregory Neil Shapiro 			   SMDB_DBENT *data, unsigned int flags));
13606f25ae9SGregory Neil Shapiro 
13706f25ae9SGregory Neil Shapiro /*
13806f25ae9SGregory Neil Shapiro **  DB_SYNC_FUNC -- Flush any cached information to disk.
13906f25ae9SGregory Neil Shapiro **
14006f25ae9SGregory Neil Shapiro **	Parameters:
14106f25ae9SGregory Neil Shapiro **		db -- The database to sync.
14206f25ae9SGregory Neil Shapiro **		flags -- sync options:
14306f25ae9SGregory Neil Shapiro **
14406f25ae9SGregory Neil Shapiro **	Returns:
14506f25ae9SGregory Neil Shapiro **		0 - Success, otherwise errno.
14606f25ae9SGregory Neil Shapiro **
14706f25ae9SGregory Neil Shapiro */
14806f25ae9SGregory Neil Shapiro 
14940266059SGregory Neil Shapiro typedef int (*db_sync_func) __P((SMDB_DATABASE *db, unsigned int flags));
15040266059SGregory Neil Shapiro 
15106f25ae9SGregory Neil Shapiro /*
15206f25ae9SGregory Neil Shapiro **  DB_SET_OWNER_FUNC -- Set the owner and group of the database files.
15306f25ae9SGregory Neil Shapiro **
15406f25ae9SGregory Neil Shapiro **	Parameters:
15506f25ae9SGregory Neil Shapiro **		db -- The database to set.
15606f25ae9SGregory Neil Shapiro **		uid -- The UID for the new owner (-1 for no change)
15706f25ae9SGregory Neil Shapiro **		gid -- The GID for the new owner (-1 for no change)
15806f25ae9SGregory Neil Shapiro **
15906f25ae9SGregory Neil Shapiro **	Returns:
16006f25ae9SGregory Neil Shapiro **		0 - Success, otherwise errno.
16106f25ae9SGregory Neil Shapiro **
16206f25ae9SGregory Neil Shapiro */
16306f25ae9SGregory Neil Shapiro 
16440266059SGregory Neil Shapiro typedef int (*db_set_owner_func) __P((SMDB_DATABASE *db, uid_t uid, gid_t gid));
16540266059SGregory Neil Shapiro 
16606f25ae9SGregory Neil Shapiro /*
16706f25ae9SGregory Neil Shapiro **  DB_CURSOR -- Obtain a cursor for sequential access
16806f25ae9SGregory Neil Shapiro **
16906f25ae9SGregory Neil Shapiro **	Parameters:
17006f25ae9SGregory Neil Shapiro **		db -- The database to use.
17106f25ae9SGregory Neil Shapiro **		cursor -- The address of a cursor pointer.
17206f25ae9SGregory Neil Shapiro **		flags -- sync options:
17306f25ae9SGregory Neil Shapiro **
17406f25ae9SGregory Neil Shapiro **	Returns:
17506f25ae9SGregory Neil Shapiro **		0 - Success, otherwise errno.
17606f25ae9SGregory Neil Shapiro **
17706f25ae9SGregory Neil Shapiro */
17840266059SGregory Neil Shapiro 
17906f25ae9SGregory Neil Shapiro typedef int (*db_cursor_func) __P((SMDB_DATABASE *db,
18040266059SGregory Neil Shapiro 			      SMDB_CURSOR **cursor, unsigned int flags));
18106f25ae9SGregory Neil Shapiro 
18242e5d165SGregory Neil Shapiro typedef int (*db_lockfd_func) __P((SMDB_DATABASE *db));
18306f25ae9SGregory Neil Shapiro 
18406f25ae9SGregory Neil Shapiro struct database_struct
18506f25ae9SGregory Neil Shapiro {
18606f25ae9SGregory Neil Shapiro 	db_close_func		smdb_close;
18706f25ae9SGregory Neil Shapiro 	db_del_func		smdb_del;
18806f25ae9SGregory Neil Shapiro 	db_fd_func		smdb_fd;
18906f25ae9SGregory Neil Shapiro 	db_get_func		smdb_get;
19006f25ae9SGregory Neil Shapiro 	db_put_func		smdb_put;
19106f25ae9SGregory Neil Shapiro 	db_sync_func		smdb_sync;
19206f25ae9SGregory Neil Shapiro 	db_set_owner_func	smdb_set_owner;
19306f25ae9SGregory Neil Shapiro 	db_cursor_func		smdb_cursor;
19442e5d165SGregory Neil Shapiro 	db_lockfd_func		smdb_lockfd;
19506f25ae9SGregory Neil Shapiro 	void			*smdb_impl;
19606f25ae9SGregory Neil Shapiro };
19706f25ae9SGregory Neil Shapiro /*
19806f25ae9SGregory Neil Shapiro **  DB_CURSOR_CLOSE -- Close a cursor
19906f25ae9SGregory Neil Shapiro **
20006f25ae9SGregory Neil Shapiro **	Parameters:
20106f25ae9SGregory Neil Shapiro **		cursor -- The cursor to close.
20206f25ae9SGregory Neil Shapiro **
20306f25ae9SGregory Neil Shapiro **	Returns:
20406f25ae9SGregory Neil Shapiro **		0 - Success, otherwise errno.
20506f25ae9SGregory Neil Shapiro **
20606f25ae9SGregory Neil Shapiro */
20740266059SGregory Neil Shapiro 
20806f25ae9SGregory Neil Shapiro typedef int (*db_cursor_close_func) __P((SMDB_CURSOR *cursor));
20906f25ae9SGregory Neil Shapiro 
21006f25ae9SGregory Neil Shapiro /*
21106f25ae9SGregory Neil Shapiro **  DB_CURSOR_DEL -- Delete the key/value pair of this cursor
21206f25ae9SGregory Neil Shapiro **
21306f25ae9SGregory Neil Shapiro **	Parameters:
21406f25ae9SGregory Neil Shapiro **		cursor -- The cursor.
21506f25ae9SGregory Neil Shapiro **		flags -- flags
21606f25ae9SGregory Neil Shapiro **
21706f25ae9SGregory Neil Shapiro **	Returns:
21806f25ae9SGregory Neil Shapiro **		0 - Success, otherwise errno.
21906f25ae9SGregory Neil Shapiro **
22006f25ae9SGregory Neil Shapiro */
22106f25ae9SGregory Neil Shapiro 
22240266059SGregory Neil Shapiro typedef int (*db_cursor_del_func) __P((SMDB_CURSOR *cursor,
22340266059SGregory Neil Shapiro 					unsigned int flags));
22440266059SGregory Neil Shapiro 
22506f25ae9SGregory Neil Shapiro /*
22606f25ae9SGregory Neil Shapiro **  DB_CURSOR_GET -- Get the key/value of this cursor.
22706f25ae9SGregory Neil Shapiro **
22806f25ae9SGregory Neil Shapiro **	Parameters:
22906f25ae9SGregory Neil Shapiro **		cursor -- The cursor.
23006f25ae9SGregory Neil Shapiro **		key -- The current key.
23106f25ae9SGregory Neil Shapiro **		value -- The current value
23206f25ae9SGregory Neil Shapiro **		flags -- flags
23306f25ae9SGregory Neil Shapiro **
23406f25ae9SGregory Neil Shapiro **	Returns:
23506f25ae9SGregory Neil Shapiro **		0 - Success, otherwise errno.
23606f25ae9SGregory Neil Shapiro **		SMDBE_LAST_ENTRY - This is a success condition that
23706f25ae9SGregory Neil Shapiro **				   gets returned when the end of the
23806f25ae9SGregory Neil Shapiro **				   database is hit.
23906f25ae9SGregory Neil Shapiro **
24006f25ae9SGregory Neil Shapiro */
24140266059SGregory Neil Shapiro 
24206f25ae9SGregory Neil Shapiro typedef int (*db_cursor_get_func) __P((SMDB_CURSOR *cursor,
24306f25ae9SGregory Neil Shapiro 				  SMDB_DBENT *key,
24406f25ae9SGregory Neil Shapiro 				  SMDB_DBENT *data,
24540266059SGregory Neil Shapiro 				  unsigned int flags));
24606f25ae9SGregory Neil Shapiro 
24706f25ae9SGregory Neil Shapiro /*
24806f25ae9SGregory Neil Shapiro **  Flags for DB_CURSOR_GET
24906f25ae9SGregory Neil Shapiro */
25040266059SGregory Neil Shapiro 
25106f25ae9SGregory Neil Shapiro #define SMDB_CURSOR_GET_FIRST	0
25206f25ae9SGregory Neil Shapiro #define SMDB_CURSOR_GET_LAST	1
25306f25ae9SGregory Neil Shapiro #define SMDB_CURSOR_GET_NEXT	2
25406f25ae9SGregory Neil Shapiro #define SMDB_CURSOR_GET_RANGE	3
25506f25ae9SGregory Neil Shapiro 
25606f25ae9SGregory Neil Shapiro /*
25706f25ae9SGregory Neil Shapiro **  DB_CURSOR_PUT -- Put the key/value at this cursor.
25806f25ae9SGregory Neil Shapiro **
25906f25ae9SGregory Neil Shapiro **	Parameters:
26006f25ae9SGregory Neil Shapiro **		cursor -- The cursor.
26106f25ae9SGregory Neil Shapiro **		key -- The current key.
26206f25ae9SGregory Neil Shapiro **		value -- The current value
26306f25ae9SGregory Neil Shapiro **		flags -- flags
26406f25ae9SGregory Neil Shapiro **
26506f25ae9SGregory Neil Shapiro **	Returns:
26606f25ae9SGregory Neil Shapiro **		0 - Success, otherwise errno.
26706f25ae9SGregory Neil Shapiro **
26806f25ae9SGregory Neil Shapiro */
26940266059SGregory Neil Shapiro 
27006f25ae9SGregory Neil Shapiro typedef int (*db_cursor_put_func) __P((SMDB_CURSOR *cursor,
27106f25ae9SGregory Neil Shapiro 				  SMDB_DBENT *key,
27206f25ae9SGregory Neil Shapiro 				  SMDB_DBENT *data,
27340266059SGregory Neil Shapiro 				  unsigned int flags));
27406f25ae9SGregory Neil Shapiro 
27506f25ae9SGregory Neil Shapiro 
27606f25ae9SGregory Neil Shapiro 
27706f25ae9SGregory Neil Shapiro struct cursor_struct
27806f25ae9SGregory Neil Shapiro {
27906f25ae9SGregory Neil Shapiro 	db_cursor_close_func	smdbc_close;
28006f25ae9SGregory Neil Shapiro 	db_cursor_del_func	smdbc_del;
28106f25ae9SGregory Neil Shapiro 	db_cursor_get_func	smdbc_get;
28206f25ae9SGregory Neil Shapiro 	db_cursor_put_func	smdbc_put;
28306f25ae9SGregory Neil Shapiro 	void			*smdbc_impl;
28406f25ae9SGregory Neil Shapiro };
28506f25ae9SGregory Neil Shapiro 
28606f25ae9SGregory Neil Shapiro 
28706f25ae9SGregory Neil Shapiro struct database_params_struct
28806f25ae9SGregory Neil Shapiro {
28940266059SGregory Neil Shapiro 	unsigned int	smdbp_num_elements;
29040266059SGregory Neil Shapiro 	unsigned int	smdbp_cache_size;
29106f25ae9SGregory Neil Shapiro 	bool		smdbp_allow_dup;
29206f25ae9SGregory Neil Shapiro };
29306f25ae9SGregory Neil Shapiro 
29406f25ae9SGregory Neil Shapiro typedef struct database_params_struct SMDB_DBPARAMS;
29506f25ae9SGregory Neil Shapiro 
29606f25ae9SGregory Neil Shapiro struct database_user_struct
29706f25ae9SGregory Neil Shapiro {
29806f25ae9SGregory Neil Shapiro 	uid_t	smdbu_id;
29906f25ae9SGregory Neil Shapiro 	gid_t	smdbu_group_id;
30006f25ae9SGregory Neil Shapiro 	char	smdbu_name[SMDB_MAX_USER_NAME_LEN];
30106f25ae9SGregory Neil Shapiro };
30206f25ae9SGregory Neil Shapiro 
30306f25ae9SGregory Neil Shapiro typedef struct database_user_struct SMDB_USER_INFO;
30406f25ae9SGregory Neil Shapiro 
305193538b7SGregory Neil Shapiro struct entry_struct
30606f25ae9SGregory Neil Shapiro {
307193538b7SGregory Neil Shapiro 	void	*data;
30806f25ae9SGregory Neil Shapiro 	size_t	size;
30906f25ae9SGregory Neil Shapiro };
31006f25ae9SGregory Neil Shapiro 
31106f25ae9SGregory Neil Shapiro typedef char *SMDB_DBTYPE;
31240266059SGregory Neil Shapiro typedef unsigned int SMDB_FLAG;
31306f25ae9SGregory Neil Shapiro 
31406f25ae9SGregory Neil Shapiro /*
31506f25ae9SGregory Neil Shapiro **  These are types of databases.
31606f25ae9SGregory Neil Shapiro */
31706f25ae9SGregory Neil Shapiro 
31806f25ae9SGregory Neil Shapiro # define SMDB_TYPE_DEFAULT	NULL
31906f25ae9SGregory Neil Shapiro # define SMDB_TYPE_DEFAULT_LEN	0
32006f25ae9SGregory Neil Shapiro # define SMDB_TYPE_HASH		"hash"
32106f25ae9SGregory Neil Shapiro # define SMDB_TYPE_HASH_LEN	5
32206f25ae9SGregory Neil Shapiro # define SMDB_TYPE_BTREE	"btree"
32306f25ae9SGregory Neil Shapiro # define SMDB_TYPE_BTREE_LEN	6
32406f25ae9SGregory Neil Shapiro # define SMDB_TYPE_NDBM		"dbm"
32506f25ae9SGregory Neil Shapiro # define SMDB_TYPE_NDBM_LEN	4
32606f25ae9SGregory Neil Shapiro 
32706f25ae9SGregory Neil Shapiro /*
32806f25ae9SGregory Neil Shapiro **  These are flags
32906f25ae9SGregory Neil Shapiro */
33040266059SGregory Neil Shapiro 
33106f25ae9SGregory Neil Shapiro /* Flags for put */
33206f25ae9SGregory Neil Shapiro # define SMDBF_NO_OVERWRITE	0x00000001
33306f25ae9SGregory Neil Shapiro # define SMDBF_ALLOW_DUP	0x00000002
33406f25ae9SGregory Neil Shapiro 
33506f25ae9SGregory Neil Shapiro 
33606f25ae9SGregory Neil Shapiro extern SMDB_DATABASE	*smdb_malloc_database __P((void));
33706f25ae9SGregory Neil Shapiro extern void		smdb_free_database __P((SMDB_DATABASE *));
33806f25ae9SGregory Neil Shapiro extern int		smdb_open_database __P((SMDB_DATABASE **, char *, int,
33906f25ae9SGregory Neil Shapiro 						int, long, SMDB_DBTYPE,
34006f25ae9SGregory Neil Shapiro 						SMDB_USER_INFO *,
34106f25ae9SGregory Neil Shapiro 						SMDB_DBPARAMS *));
34206f25ae9SGregory Neil Shapiro # ifdef NEWDB
34306f25ae9SGregory Neil Shapiro extern int		smdb_db_open __P((SMDB_DATABASE **, char *, int, int,
34406f25ae9SGregory Neil Shapiro 					  long, SMDB_DBTYPE, SMDB_USER_INFO *,
34506f25ae9SGregory Neil Shapiro 					  SMDB_DBPARAMS *));
34606f25ae9SGregory Neil Shapiro # endif /* NEWDB */
34706f25ae9SGregory Neil Shapiro # ifdef NDBM
34806f25ae9SGregory Neil Shapiro extern int		smdb_ndbm_open __P((SMDB_DATABASE **, char *, int, int,
34906f25ae9SGregory Neil Shapiro 					    long, SMDB_DBTYPE,
35006f25ae9SGregory Neil Shapiro 					    SMDB_USER_INFO *,
35106f25ae9SGregory Neil Shapiro 					    SMDB_DBPARAMS *));
35206f25ae9SGregory Neil Shapiro # endif /* NDBM */
35306f25ae9SGregory Neil Shapiro extern int		smdb_add_extension __P((char *, int, char *, char *));
35406f25ae9SGregory Neil Shapiro extern int		smdb_setup_file __P((char *, char *, int, long,
35506f25ae9SGregory Neil Shapiro 					     SMDB_USER_INFO *, struct stat *));
35606f25ae9SGregory Neil Shapiro extern int		smdb_lock_file __P((int *, char *, int, long, char *));
35706f25ae9SGregory Neil Shapiro extern int		smdb_unlock_file __P((int));
35806f25ae9SGregory Neil Shapiro extern int		smdb_filechanged __P((char *, char *, int,
35906f25ae9SGregory Neil Shapiro 					      struct stat *));
36006f25ae9SGregory Neil Shapiro extern void		smdb_print_available_types __P((void));
36106f25ae9SGregory Neil Shapiro extern char		*smdb_db_definition __P((SMDB_DBTYPE));
36242e5d165SGregory Neil Shapiro extern int		smdb_lock_map __P((SMDB_DATABASE *, int));
36342e5d165SGregory Neil Shapiro extern int		smdb_unlock_map __P((SMDB_DATABASE *));
36406f25ae9SGregory Neil Shapiro #endif /* ! _SMDB_H_ */
365