Postfix3.3.1
name_mask.h
[詳解]
1 #ifndef _NAME_MASK_H_INCLUDED_
2 #define _NAME_MASK_H_INCLUDED_
3 
4 /*++
5 /* NAME
6 /* name_mask 3h
7 /* SUMMARY
8 /* map names to bit mask
9 /* SYNOPSIS
10 /* #include <name_mask.h>
11 /* DESCRIPTION
12 /* .nf
13 
14  /*
15  * Utility library.
16  */
17 #include <vstring.h>
18 
19  /*
20  * External interface.
21  */
22 typedef struct {
23  const char *name;
24  int mask;
25 } NAME_MASK;
26 
27 #define NAME_MASK_FATAL (1<<0)
28 #define NAME_MASK_ANY_CASE (1<<1)
29 #define NAME_MASK_RETURN (1<<2)
30 #define NAME_MASK_COMMA (1<<3)
31 #define NAME_MASK_PIPE (1<<4)
32 #define NAME_MASK_NUMBER (1<<5)
33 #define NAME_MASK_WARN (1<<6)
34 #define NAME_MASK_IGNORE (1<<7)
35 
36 #define NAME_MASK_REQUIRED \
37  (NAME_MASK_FATAL | NAME_MASK_RETURN | NAME_MASK_WARN | NAME_MASK_IGNORE)
38 #define STR_NAME_MASK_REQUIRED (NAME_MASK_REQUIRED | NAME_MASK_NUMBER)
39 
40 #define NAME_MASK_MATCH_REQ NAME_MASK_FATAL
41 
42 #define NAME_MASK_NONE 0
43 #define NAME_MASK_DEFAULT (NAME_MASK_FATAL)
44 #define NAME_MASK_DEFAULT_DELIM ", \t\r\n"
45 
46 #define name_mask_opt(tag, table, str, flags) \
47  name_mask_delim_opt((tag), (table), (str), \
48  NAME_MASK_DEFAULT_DELIM, (flags))
49 #define name_mask(tag, table, str) \
50  name_mask_opt((tag), (table), (str), NAME_MASK_DEFAULT)
51 #define str_name_mask(tag, table, mask) \
52  str_name_mask_opt(((VSTRING *) 0), (tag), (table), (mask), NAME_MASK_DEFAULT)
53 
54 extern int name_mask_delim_opt(const char *, const NAME_MASK *, const char *, const char *, int);
55 extern const char *str_name_mask_opt(VSTRING *, const char *, const NAME_MASK *, int, int);
56 
57  /*
58  * "long" API
59  */
60 typedef struct {
61  const char *name;
62  long mask;
64 
65 #define long_name_mask_opt(tag, table, str, flags) \
66  long_name_mask_delim_opt((tag), (table), (str), NAME_MASK_DEFAULT_DELIM, (flags))
67 #define long_name_mask(tag, table, str) \
68  long_name_mask_opt((tag), (table), (str), NAME_MASK_DEFAULT)
69 #define str_long_name_mask(tag, table, mask) \
70  str_long_name_mask_opt(((VSTRING *) 0), (tag), (table), (mask), NAME_MASK_DEFAULT)
71 
72 extern long long_name_mask_delim_opt(const char *, const LONG_NAME_MASK *, const char *, const char *, int);
73 extern const char *str_long_name_mask_opt(VSTRING *, const char *, const LONG_NAME_MASK *, long, int);
74 
75 /* LICENSE
76 /* .ad
77 /* .fi
78 /* The Secure Mailer license must be distributed with this software.
79 /* AUTHOR(S)
80 /* Wietse Venema
81 /* IBM T.J. Watson Research
82 /* P.O. Box 704
83 /* Yorktown Heights, NY 10598, USA
84 /*--*/
85 
86 #endif
const char * str_name_mask_opt(VSTRING *, const char *, const NAME_MASK *, int, int)
Definition: name_mask.c:265
int name_mask_delim_opt(const char *, const NAME_MASK *, const char *, const char *, int)
Definition: name_mask.c:206
long long_name_mask_delim_opt(const char *, const LONG_NAME_MASK *, const char *, const char *, int)
Definition: name_mask.c:318
const char * name
Definition: name_mask.h:23
const char * name
Definition: name_mask.h:61
const char * str_long_name_mask_opt(VSTRING *, const char *, const LONG_NAME_MASK *, long, int)
Definition: name_mask.c:380
int mask
Definition: name_mask.h:24