Home | History | Annotate | Line # | Download | only in global
      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   */
     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;
     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 
     51 typedef struct RECIPIENT_LIST {
     52     RECIPIENT *info;
     53     int     len;
     54     int     avail;
     55     int     variant;
     56 } RECIPIENT_LIST;
     57 
     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 *);
     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