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