xref: /netbsd-src/external/ibm-public/postfix/dist/src/util/byte_mask.h (revision 33881f779a77dce6440bdc44610d94de75bebefe)
1*33881f77Schristos /*	$NetBSD: byte_mask.h,v 1.2 2020/03/18 19:05:21 christos Exp $	*/
2f3bc92a4Schristos 
3f3bc92a4Schristos #ifndef _BYTE_MASK_H_INCLUDED_
4f3bc92a4Schristos #define _BYTE_MASK_H_INCLUDED_
5f3bc92a4Schristos 
6f3bc92a4Schristos /*++
7f3bc92a4Schristos /* NAME
8f3bc92a4Schristos /*	byte_mask 3h
9f3bc92a4Schristos /* SUMMARY
10f3bc92a4Schristos /*	map names to bit mask
11f3bc92a4Schristos /* SYNOPSIS
12f3bc92a4Schristos /*	#include <byte_mask.h>
13f3bc92a4Schristos /* DESCRIPTION
14f3bc92a4Schristos /* .nf
15f3bc92a4Schristos 
16f3bc92a4Schristos  /*
17f3bc92a4Schristos   * Utility library.
18f3bc92a4Schristos   */
19f3bc92a4Schristos #include <vstring.h>
20f3bc92a4Schristos 
21f3bc92a4Schristos  /*
22f3bc92a4Schristos   * External interface.
23f3bc92a4Schristos   */
24f3bc92a4Schristos typedef struct {
25f3bc92a4Schristos     int     byte_val;
26f3bc92a4Schristos     int     mask;
27f3bc92a4Schristos } BYTE_MASK;
28f3bc92a4Schristos 
29f3bc92a4Schristos #define BYTE_MASK_FATAL		(1<<0)
30f3bc92a4Schristos #define BYTE_MASK_ANY_CASE	(1<<1)
31f3bc92a4Schristos #define BYTE_MASK_RETURN	(1<<2)
32f3bc92a4Schristos #define BYTE_MASK_WARN		(1<<6)
33f3bc92a4Schristos #define BYTE_MASK_IGNORE	(1<<7)
34f3bc92a4Schristos 
35f3bc92a4Schristos #define BYTE_MASK_REQUIRED \
36f3bc92a4Schristos     (BYTE_MASK_FATAL | BYTE_MASK_RETURN | BYTE_MASK_WARN | BYTE_MASK_IGNORE)
37f3bc92a4Schristos #define STR_BYTE_MASK_REQUIRED	(BYTE_MASK_REQUIRED)
38f3bc92a4Schristos 
39f3bc92a4Schristos #define BYTE_MASK_NONE		0
40f3bc92a4Schristos #define BYTE_MASK_DEFAULT	(BYTE_MASK_FATAL)
41f3bc92a4Schristos 
42f3bc92a4Schristos #define byte_mask(tag, table, str) \
43f3bc92a4Schristos 	byte_mask_opt((tag), (table), (str), BYTE_MASK_DEFAULT)
44f3bc92a4Schristos #define str_byte_mask(tag, table, mask) \
45f3bc92a4Schristos 	str_byte_mask_opt(((VSTRING *) 0), (tag), (table), (mask), BYTE_MASK_DEFAULT)
46f3bc92a4Schristos 
47f3bc92a4Schristos extern int byte_mask_opt(const char *, const BYTE_MASK *, const char *, int);
48f3bc92a4Schristos extern const char *str_byte_mask_opt(VSTRING *, const char *, const BYTE_MASK *, int, int);
49f3bc92a4Schristos 
50f3bc92a4Schristos /* LICENSE
51f3bc92a4Schristos /* .ad
52f3bc92a4Schristos /* .fi
53f3bc92a4Schristos /*	The Secure Mailer license must be distributed with this software.
54f3bc92a4Schristos /* AUTHOR(S)
55f3bc92a4Schristos /*	Wietse Venema
56f3bc92a4Schristos /*	IBM T.J. Watson Research
57f3bc92a4Schristos /*	P.O. Box 704
58f3bc92a4Schristos /*	Yorktown Heights, NY 10598, USA
59f3bc92a4Schristos /*
60f3bc92a4Schristos /*	Wietse Venema
61f3bc92a4Schristos /*	Google, Inc.
62f3bc92a4Schristos /*	111 8th Avenue
63f3bc92a4Schristos /*	New York, NY 10011, USA
64f3bc92a4Schristos /*--*/
65f3bc92a4Schristos 
66f3bc92a4Schristos #endif
67