1 /* $NetBSD: mime_detach.h,v 1.1 2006/11/28 18:45:32 christos Exp $ */ 2 3 /*- 4 * Copyright (c) 2006 The NetBSD Foundation, Inc. 5 * All rights reserved. 6 * 7 * This code is derived from software contributed to The NetBSD Foundation 8 * by Anon Ymous. 9 * 10 * Redistribution and use in source and binary forms, with or without 11 * modification, are permitted provided that the following conditions 12 * are met: 13 * 1. Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 2. Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in the 17 * documentation and/or other materials provided with the distribution. 18 * 3. All advertising materials mentioning features or use of this software 19 * must display the following acknowledgement: 20 * This product includes software developed by the NetBSD 21 * Foundation, Inc. and its contributors. 22 * 4. Neither the name of The NetBSD Foundation nor the names of its 23 * contributors may be used to endorse or promote products derived 24 * from this software without specific prior written permission. 25 * 26 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 27 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 28 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 29 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 30 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 31 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 32 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 33 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 34 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 35 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 36 * POSSIBILITY OF SUCH DAMAGE. 37 */ 38 39 40 #ifdef MIME_SUPPORT 41 42 #ifndef __MIME_DETACH_H__ 43 #define __MIME_DETACH_H__ 44 45 /* 46 * The fundametal data structure shared by mime_decode.c and mime_detach.c. 47 */ 48 struct mime_info { 49 struct mime_info *mi_blink; 50 struct mime_info *mi_flink; 51 52 /* sendmessage -> decoder -> filter -> pager */ 53 54 FILE *mi_fo; /* output file handle pointing to PAGER */ 55 FILE *mi_pipe_end; /* initial end of pipe */ 56 FILE *mi_head_end; /* close to here at start of body */ 57 58 int mi_ignore_body; /* suppress certain body parts */ 59 60 /* stuff specific to mime_detach */ 61 int mi_partnum; /* part number displayed (if nonzero) */ 62 const char *mi_partstr; /* string to actually display */ 63 const char *mi_msgstr; /* message number in string form */ 64 65 /* strings extracted from MIME header fields */ 66 const char *mi_version; 67 const char *mi_type; 68 const char *mi_subtype; 69 const char *mi_boundary; /* type parameter */ 70 const char *mi_charset; /* type parameter */ 71 const char *mi_encoding; 72 const char *mi_disposition; 73 const char *mi_filename; /* from type or disposition parameter */ 74 75 struct message *mp; /* MP for this message regarded as a part. */ 76 struct { 77 struct mime_info *mip; /* parent of part of multipart message */ 78 struct message *mp; /* the original parent mp before being split! */ 79 } mi_parent; 80 81 int mi_detachall; /* detach unnamed parts */ 82 const char *mi_detachdir; /* directory for detaching attachments */ 83 const char *mi_command_hook; /* alternate command used to process this message */ 84 }; 85 86 87 /* 88 * Routines shared by mime_decode.c and mime_detach.c 89 */ 90 91 /* exported from mime_detach.c */ 92 FILE *mime_detach_parts(struct mime_info *); 93 94 /* These are exported from mime_decode.c */ 95 FILE *pipe_end(struct mime_info *); 96 void run_decoder(struct mime_info *mip, void(*fn)(FILE*, FILE*, void *)); 97 98 #endif /* __MIME_DETACH_H__ */ 99 #endif /* MIME_SUPPORT */ 100