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