1 /* $NetBSD: mime_detach.h,v 1.3 2022/05/28 10:36:24 andvar 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 * 19 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 * POSSIBILITY OF SUCH DAMAGE. 30 */ 31 32 33 #ifdef MIME_SUPPORT 34 35 #ifndef __MIME_DETACH_H__ 36 #define __MIME_DETACH_H__ 37 38 /* 39 * The fundamental data structure shared by mime_decode.c and mime_detach.c. 40 */ 41 struct mime_info { 42 struct mime_info *mi_blink; 43 struct mime_info *mi_flink; 44 45 /* sendmessage -> decoder -> filter -> pager */ 46 47 FILE *mi_fo; /* output file handle pointing to PAGER */ 48 FILE *mi_pipe_end; /* initial end of pipe */ 49 FILE *mi_head_end; /* close to here at start of body */ 50 51 int mi_ignore_body; /* suppress certain body parts */ 52 53 /* stuff specific to mime_detach */ 54 int mi_partnum; /* part number displayed (if nonzero) */ 55 const char *mi_partstr; /* string to actually display */ 56 const char *mi_msgstr; /* message number in string form */ 57 58 /* strings extracted from MIME header fields */ 59 const char *mi_version; 60 const char *mi_type; 61 const char *mi_subtype; 62 const char *mi_boundary; /* type parameter */ 63 const char *mi_charset; /* type parameter */ 64 const char *mi_encoding; 65 const char *mi_disposition; 66 const char *mi_filename; /* from type or disposition parameter */ 67 68 struct message *mp; /* MP for this message regarded as a part. */ 69 struct { 70 struct mime_info *mip; /* parent of part of multipart message */ 71 struct message *mp; /* the original parent mp before being split! */ 72 } mi_parent; 73 74 int mi_detachall; /* detach unnamed parts */ 75 const char *mi_detachdir; /* directory for detaching attachments */ 76 const char *mi_command_hook; /* alternate command used to process this message */ 77 }; 78 79 80 /* 81 * Routines shared by mime_decode.c and mime_detach.c 82 */ 83 84 /* exported from mime_detach.c */ 85 FILE *mime_detach_parts(struct mime_info *); 86 87 /* These are exported from mime_decode.c */ 88 FILE *pipe_end(struct mime_info *); 89 void run_decoder(struct mime_info *mip, void(*fn)(FILE*, FILE*, void *)); 90 91 #endif /* __MIME_DETACH_H__ */ 92 #endif /* MIME_SUPPORT */ 93