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