1 /*	$NetBSD: dsn_print.c,v 1.1.1.1 2009/06/23 10:08:45 tron Exp $	*/
2 
3 /*++
4 /* NAME
5 /*	dsn_print
6 /* SUMMARY
7 /*	write DSN structure to stream
8 /* SYNOPSIS
9 /*	#include <dsn_print.h>
10 /*
11 /*	int	dsn_print(print_fn, stream, flags, ptr)
12 /*	ATTR_PRINT_MASTER_FN print_fn;
13 /*	VSTREAM *stream;
14 /*	int	flags;
15 /*	void	*ptr;
16 /* DESCRIPTION
17 /*	dsn_print() writes a DSN structure to the named stream using
18 /*	the specified attribute print routine. dsn_print() is meant
19 /*	to be passed as a call-back to attr_print(), thusly:
20 /*
21 /*	... ATTR_TYPE_FUNC, dsn_print, (void *) dsn, ...
22 /* DIAGNOSTICS
23 /*	Fatal: out of memory.
24 /* LICENSE
25 /* .ad
26 /* .fi
27 /*	The Secure Mailer license must be distributed with this software.
28 /* AUTHOR(S)
29 /*	Wietse Venema
30 /*	IBM T.J. Watson Research
31 /*	P.O. Box 704
32 /*	Yorktown Heights, NY 10598, USA
33 /*--*/
34 
35 /* System library. */
36 
37 #include <sys_defs.h>
38 
39 /* Utility library. */
40 
41 #include <attr.h>
42 
43 /* Global library. */
44 
45 #include <mail_proto.h>
46 #include <dsn_print.h>
47 
48 /* dsn_print - write DSN to stream */
49 
50 int     dsn_print(ATTR_PRINT_MASTER_FN print_fn, VSTREAM *fp,
51 		          int flags, void *ptr)
52 {
53     DSN    *dsn = (DSN *) ptr;
54     int     ret;
55 
56     /*
57      * The attribute order is determined by backwards compatibility. It can
58      * be sanitized after all the ad-hoc DSN read/write code is replaced.
59      */
60     ret = print_fn(fp, flags | ATTR_FLAG_MORE,
61 		   ATTR_TYPE_STR, MAIL_ATTR_DSN_STATUS, dsn->status,
62 		   ATTR_TYPE_STR, MAIL_ATTR_DSN_DTYPE, dsn->dtype,
63 		   ATTR_TYPE_STR, MAIL_ATTR_DSN_DTEXT, dsn->dtext,
64 		   ATTR_TYPE_STR, MAIL_ATTR_DSN_MTYPE, dsn->mtype,
65 		   ATTR_TYPE_STR, MAIL_ATTR_DSN_MNAME, dsn->mname,
66 		   ATTR_TYPE_STR, MAIL_ATTR_DSN_ACTION, dsn->action,
67 		   ATTR_TYPE_STR, MAIL_ATTR_WHY, dsn->reason,
68 		   ATTR_TYPE_END);
69     return (ret);
70 }
71