Home | History | Annotate | Line # | Download | only in util
      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