1/***********************************************************************
2*                                                                      *
3*               This software is part of the ast package               *
4*          Copyright (c) 1985-2011 AT&T Intellectual Property          *
5*                      and is licensed under the                       *
6*                 Eclipse Public License, Version 1.0                  *
7*                    by AT&T Intellectual Property                     *
8*                                                                      *
9*                A copy of the License is available at                 *
10*          http://www.eclipse.org/org/documents/epl-v10.html           *
11*         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
12*                                                                      *
13*              Information and Software Systems Research               *
14*                            AT&T Research                             *
15*                           Florham Park NJ                            *
16*                                                                      *
17*                 Glenn Fowler <gsf@research.att.com>                  *
18*                  David Korn <dgk@research.att.com>                   *
19*                   Phong Vo <kpv@research.att.com>                    *
20*                                                                      *
21***********************************************************************/
22#pragma prototyped
23/*
24 * Glenn Fowler
25 * AT&T Research
26 *
27 * fast find interface definitions
28 */
29
30#ifndef _FIND_H
31#define _FIND_H
32
33#define FIND_VERSION	19980301L
34
35#ifndef FIND_CODES
36#define FIND_CODES	"lib/find/codes"
37#endif
38
39#define FIND_CODES_ENV	"FINDCODES"
40
41#define FIND_GENERATE	(1<<0)		/* generate new codes		*/
42#define FIND_ICASE	(1<<1)		/* ignore case in match		*/
43#define FIND_GNU	(1<<2)		/* generate gnu format codes	*/
44#define FIND_OLD	(1<<3)		/* generate old format codes	*/
45#define FIND_TYPE	(1<<4)		/* generate type with codes	*/
46#define FIND_VERIFY	(1<<5)		/* verify the dir hierarchy	*/
47
48#define FIND_USER	(1L<<16)	/* first user flag bit		*/
49
50struct Find_s;
51struct Finddisc_s;
52
53typedef int (*Findverify_f)(struct Find_s*, const char*, size_t, struct Finddisc_s*);
54
55typedef struct Finddisc_s
56{
57	unsigned long	version;	/* interface version		*/
58	unsigned long	flags;		/* FIND_* flags			*/
59	Error_f		errorf;		/* error function		*/
60	Findverify_f	verifyf;	/* dir verify function		*/
61	char**		dirs;		/* dir prefixes to search	*/
62} Finddisc_t;
63
64typedef struct Find_s
65{
66	const char*	id;		/* library id string		*/
67	unsigned long	stamp;		/* codes time stamp		*/
68
69#ifdef _FIND_PRIVATE_
70	_FIND_PRIVATE_
71#endif
72
73} Find_t;
74
75#if _BLD_ast && defined(__EXPORT__)
76#define extern		__EXPORT__
77#endif
78
79extern Find_t*		findopen(const char*, const char*, const char*, Finddisc_t*);
80extern char*		findread(Find_t*);
81extern int		findwrite(Find_t*, const char*, size_t, const char*);
82extern int		findclose(Find_t*);
83
84#undef	extern
85
86#endif
87