Postfix3.3.1
全て データ構造 ファイル 関数 変数 型定義 マクロ定義
quote_flags.c
[詳解]
1 /*++
2 /* NAME
3 /* quote_flags 3
4 /* SUMMARY
5 /* quote rfc 821/822 local part
6 /* SYNOPSIS
7 /* #include <quote_flags.h>
8 /*
9 /* int quote_flags_from_string(const char *string)
10 /*
11 /* const char *quote_flags_to_string(VSTRING *res_buf, int mask)
12 /* DESCRIPTION
13 /* quote_flags_from_string() converts symbolic flag names into
14 /* the corresponding internal bitmask. This logs a warning and
15 /* returns zero if an unknown symbolic name is specified.
16 /*
17 /* quote_flags_to_string() converts from internal bitmask to
18 /* the corresponding symbolic names. This logs a warning and
19 /* returns a null pointer if an unknown bitmask is specified.
20 /*
21 /* Arguments:
22 /* .IP string
23 /* Symbolic representation of a quote_flags bitmask, for
24 /* example: \fB8bitclean | bare_localpart\fR. The conversion
25 /* is case-insensitive.
26 /* .IP res_buf
27 /* Storage for the quote_flags_to_string() result, which has
28 /* the same form as the string argument. If a null pointer is
29 /* specified, quote_flags_to_string() uses storage that is
30 /* overwritten with each call.
31 /* .IP mask
32 /* Binary representation of quote_flags.
33 /* DIAGNOSTICS
34 /* Fatal error: out of memory; or unknown bitmask name or value.
35 /* LICENSE
36 /* .ad
37 /* .fi
38 /* The Secure Mailer license must be distributed with this software.
39 /* AUTHOR(S)
40 /* Wietse Venema
41 /* Google, Inc.
42 /* 111 8th Avenue
43 /* New York, NY 10011, USA
44 /*--*/
45 
46  /*
47  * System library.
48  */
49 #include <sys_defs.h>
50 
51  /*
52  * Utility library.
53  */
54 #include <name_mask.h>
55 
56  /*
57  * Global library.
58  */
59 #include <quote_flags.h>
60 
61 static const NAME_MASK quote_flags_table[] = {
62  "8bitclean", QUOTE_FLAG_8BITCLEAN,
63  "expose_at", QUOTE_FLAG_EXPOSE_AT,
64  "append", QUOTE_FLAG_APPEND,
65  "bare_localpart", QUOTE_FLAG_BARE_LOCALPART,
66  0,
67 };
68 
69 /* quote_flags_from_string - symbolic quote flags to internal form */
70 
71 int quote_flags_from_string(const char *quote_flags_string)
72 {
73  return (name_mask_delim_opt("quote_flags_from_string", quote_flags_table,
74  quote_flags_string, "|",
76 }
77 
78 /* quote_flags_to_string - internal form to symbolic quote flags */
79 
80 const char *quote_flags_to_string(VSTRING *res_buf, int quote_flags_mask)
81 {
82  static VSTRING *my_buf;
83 
84  if (res_buf == 0 && (res_buf = my_buf) == 0)
85  res_buf = my_buf = vstring_alloc(20);
86  return (str_name_mask_opt(res_buf, "quote_flags_to_string",
87  quote_flags_table, quote_flags_mask,
89 }
#define QUOTE_FLAG_8BITCLEAN
Definition: quote_flags.h:19
const char * quote_flags_to_string(VSTRING *res_buf, int quote_flags_mask)
Definition: quote_flags.c:80
#define QUOTE_FLAG_EXPOSE_AT
Definition: quote_flags.h:20
const char * str_name_mask_opt(VSTRING *buf, const char *context, const NAME_MASK *table, int mask, int flags)
Definition: name_mask.c:265
#define QUOTE_FLAG_BARE_LOCALPART
Definition: quote_flags.h:22
int name_mask_delim_opt(const char *context, const NAME_MASK *table, const char *names, const char *delim, int flags)
Definition: name_mask.c:206
VSTRING * vstring_alloc(ssize_t len)
Definition: vstring.c:353
int quote_flags_from_string(const char *quote_flags_string)
Definition: quote_flags.c:71
#define NAME_MASK_ANY_CASE
Definition: name_mask.h:28
#define NAME_MASK_WARN
Definition: name_mask.h:33
#define NAME_MASK_PIPE
Definition: name_mask.h:31
#define QUOTE_FLAG_APPEND
Definition: quote_flags.h:21