Patrick Welche <prlw1@cam.ac.uk>
[netbsd-mini2440.git] / external / ibm-public / postfix / dist / src / global / recipient_list.h
blobc712157f46e717da99b4ccb8e784e180e3c456db
1 /* $NetBSD$ */
3 #ifndef _RECIPIENT_LIST_H_INCLUDED_
4 #define _RECIPIENT_LIST_H_INCLUDED_
6 /*++
7 /* NAME
8 /* recipient_list 3h
9 /* SUMMARY
10 /* recipient list structures
11 /* SYNOPSIS
12 /* #include <recipient_list.h>
13 /* DESCRIPTION
14 /* .nf
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.
22 * Rather than bothering with subclasses that extend this structure with
23 * application-specific fields we just add them here.
25 typedef 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;
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)
47 #define RECIPIENT_UPDATE(ptr, new) do { \
48 myfree((char *) (ptr)); (ptr) = mystrdup(new); \
49 } while (0)
51 typedef struct RECIPIENT_LIST {
52 RECIPIENT *info;
53 int len;
54 int avail;
55 int variant;
56 } RECIPIENT_LIST;
58 extern void recipient_list_init(RECIPIENT_LIST *, int);
59 extern void recipient_list_add(RECIPIENT_LIST *, long, const char *, int, const char *, const char *);
60 extern void recipient_list_swap(RECIPIENT_LIST *, RECIPIENT_LIST *);
61 extern void recipient_list_free(RECIPIENT_LIST *);
63 #define RCPT_LIST_INIT_STATUS 1
64 #define RCPT_LIST_INIT_QUEUE 2
65 #define RCPT_LIST_INIT_ADDR 3
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 /*--*/
78 #endif