recipient_list.h revision 1.1.1.1
1/*	$NetBSD: recipient_list.h,v 1.1.1.1 2009/06/23 10:08:47 tron Exp $	*/
2
3#ifndef _RECIPIENT_LIST_H_INCLUDED_
4#define _RECIPIENT_LIST_H_INCLUDED_
5
6/*++
7/* NAME
8/*	recipient_list 3h
9/* SUMMARY
10/*	recipient list structures
11/* SYNOPSIS
12/*	#include <recipient_list.h>
13/* DESCRIPTION
14/* .nf
15
16 /*
17  * Information about a recipient is kept in this structure. The file offset
18  * tells us the position of the REC_TYPE_RCPT byte in the message queue
19  * file, This byte is replaced by REC_TYPE_DONE when the delivery status to
20  * that recipient is established.
21  *
22  * Rather than bothering with subclasses that extend this structure with
23  * application-specific fields we just add them here.
24  */
25typedef struct RECIPIENT {
26    long    offset;			/* REC_TYPE_RCPT byte */
27    const char *dsn_orcpt;		/* DSN original recipient */
28    int     dsn_notify;			/* DSN notify flags */
29    const char *orig_addr;		/* null or original recipient */
30    const char *address;		/* complete address */
31    union {				/* Application specific. */
32	int     status;			/* SMTP client */
33	struct QMGR_QUEUE *queue;	/* Queue manager */
34	const char *addr_type;		/* DSN */
35    }       u;
36} RECIPIENT;
37
38#define RECIPIENT_ASSIGN(rcpt, offs, orcpt, notify, orig, addr) do { \
39    (rcpt)->offset = (offs); \
40    (rcpt)->dsn_orcpt = (orcpt); \
41    (rcpt)->dsn_notify = (notify); \
42    (rcpt)->orig_addr = (orig); \
43    (rcpt)->address = (addr); \
44    (rcpt)->u.status = (0); \
45} while (0)
46
47#define RECIPIENT_UPDATE(ptr, new) do { \
48    myfree((char *) (ptr)); (ptr) = mystrdup(new); \
49} while (0)
50
51typedef struct RECIPIENT_LIST {
52    RECIPIENT *info;
53    int     len;
54    int     avail;
55    int     variant;
56} RECIPIENT_LIST;
57
58extern void recipient_list_init(RECIPIENT_LIST *, int);
59extern void recipient_list_add(RECIPIENT_LIST *, long, const char *, int, const char *, const char *);
60extern void recipient_list_swap(RECIPIENT_LIST *, RECIPIENT_LIST *);
61extern void recipient_list_free(RECIPIENT_LIST *);
62
63#define RCPT_LIST_INIT_STATUS	1
64#define RCPT_LIST_INIT_QUEUE	2
65#define RCPT_LIST_INIT_ADDR	3
66
67/* LICENSE
68/* .ad
69/* .fi
70/*	The Secure Mailer license must be distributed with this software.
71/* AUTHOR(S)
72/*	Wietse Venema
73/*	IBM T.J. Watson Research
74/*	P.O. Box 704
75/*	Yorktown Heights, NY 10598, USA
76/*--*/
77
78#endif
79