xref: /netbsd-src/external/ibm-public/postfix/dist/src/util/match_list.h (revision e89934bbf778a6d6d6894877c4da59d0c7835b0f)
1 /*	$NetBSD: match_list.h,v 1.2 2017/02/14 01:16:49 christos Exp $	*/
2 
3 #ifndef _MATCH_LIST_H_INCLUDED_
4 #define _MATCH_LIST_H_INCLUDED_
5 
6 /*++
7 /* NAME
8 /*	match_list 3h
9 /* SUMMARY
10 /*	generic list-based pattern matching
11 /* SYNOPSIS
12 /*	#include <match_list.h>
13 /* DESCRIPTION
14 /* .nf
15 
16  /*
17   * Utility library.
18   */
19 #include <argv.h>
20 #include <vstring.h>
21 
22  /*
23   * External interface.
24   */
25 typedef struct MATCH_LIST MATCH_LIST;
26 
27 typedef int (*MATCH_LIST_FN) (MATCH_LIST *, const char *, const char *);
28 
29 struct MATCH_LIST {
30     char   *pname;			/* used in error messages */
31     int     flags;			/* processing options */
32     ARGV   *patterns;			/* one pattern each */
33     int     match_count;		/* match function/argument count */
34     MATCH_LIST_FN *match_func;		/* match functions */
35     const char **match_args;		/* match arguments */
36     VSTRING *fold_buf;			/* case-folded pattern string */
37     int     error;			/* last operation */
38 };
39 
40 #define MATCH_FLAG_NONE		0
41 #define MATCH_FLAG_PARENT	(1<<0)
42 #define MATCH_FLAG_RETURN	(1<<1)
43 #define MATCH_FLAG_ALL		(MATCH_FLAG_PARENT | MATCH_FLAG_RETURN)
44 
45 extern MATCH_LIST *match_list_init(const char *, int, const char *, int,...);
46 extern int match_list_match(MATCH_LIST *,...);
47 extern void match_list_free(MATCH_LIST *);
48 
49  /*
50   * The following functions are not part of the public interface. These
51   * functions may be called only through match_list_match().
52   */
53 extern int match_string(MATCH_LIST *, const char *, const char *);
54 extern int match_hostname(MATCH_LIST *, const char *, const char *);
55 extern int match_hostaddr(MATCH_LIST *, const char *, const char *);
56 
57 /* LICENSE
58 /* .ad
59 /* .fi
60 /*	The Secure Mailer license must be distributed with this software.
61 /* AUTHOR(S)
62 /*	Wietse Venema
63 /*	IBM T.J. Watson Research
64 /*	P.O. Box 704
65 /*	Yorktown Heights, NY 10598, USA
66 /*--*/
67 
68 #endif
69