1 /** 2 * @file 3 * Handling of email attachments 4 * 5 * @authors 6 * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org> 7 * 8 * @copyright 9 * This program is free software: you can redistribute it and/or modify it under 10 * the terms of the GNU General Public License as published by the Free Software 11 * Foundation, either version 2 of the License, or (at your option) any later 12 * version. 13 * 14 * This program is distributed in the hope that it will be useful, but WITHOUT 15 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 16 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 17 * details. 18 * 19 * You should have received a copy of the GNU General Public License along with 20 * this program. If not, see <http://www.gnu.org/licenses/>. 21 */ 22 23 /* common protos for compose / attach menus */ 24 25 #ifndef MUTT_ATTACH_MUTT_ATTACH_H 26 #define MUTT_ATTACH_MUTT_ATTACH_H 27 28 #include <stdbool.h> 29 #include <stdio.h> 30 31 struct AttachCtx; 32 struct Body; 33 struct ConfigSubset; 34 struct Email; 35 struct Menu; 36 struct MuttWindow; 37 38 /** 39 * enum ViewAttachMode - Options for mutt_view_attachment() 40 */ 41 enum ViewAttachMode 42 { 43 MUTT_VA_REGULAR = 1, ///< View using default method 44 MUTT_VA_MAILCAP, ///< Force viewing using mailcap entry 45 MUTT_VA_AS_TEXT, ///< Force viewing as text 46 MUTT_VA_PAGER, ///< View attachment in pager using copiousoutput mailcap 47 }; 48 49 /** 50 * enum SaveAttach - Options for saving attachments 51 * 52 * @sa mutt_save_attachment(), mutt_decode_save_attachment(), 53 * save_attachment_open(), mutt_check_overwrite() 54 */ 55 enum SaveAttach 56 { 57 MUTT_SAVE_NO_FLAGS = 0, ///< No flags set 58 MUTT_SAVE_APPEND, ///< Append to existing file 59 MUTT_SAVE_OVERWRITE, ///< Overwrite existing file 60 }; 61 62 int mutt_attach_display_loop(struct ConfigSubset *sub, struct Menu *menu, int op, 63 struct Email *e, struct AttachCtx *actx, bool recv); 64 65 void mutt_save_attachment_list(struct AttachCtx *actx, FILE *fp, bool tag, 66 struct Body *top, struct Email *e, struct Menu *menu); 67 void mutt_pipe_attachment_list(struct AttachCtx *actx, FILE *fp, bool tag, 68 struct Body *top, bool filter); 69 void mutt_print_attachment_list(struct AttachCtx *actx, FILE *fp, bool tag, 70 struct Body *top); 71 72 int mutt_view_attachment(FILE *fp, struct Body *a, enum ViewAttachMode mode, struct Email *e, struct AttachCtx *actx, struct MuttWindow *win); 73 74 void mutt_check_lookup_list(struct Body *b, char *type, size_t len); 75 int mutt_compose_attachment(struct Body *a); 76 int mutt_decode_save_attachment(FILE *fp, struct Body *m, const char *path, int displaying, enum SaveAttach opt); 77 int mutt_edit_attachment(struct Body *a); 78 int mutt_get_tmp_attachment(struct Body *a); 79 int mutt_pipe_attachment(FILE *fp, struct Body *b, const char *path, char *outfile); 80 int mutt_print_attachment(FILE *fp, struct Body *a); 81 int mutt_save_attachment(FILE *fp, struct Body *m, const char *path, enum SaveAttach opt, struct Email *e); 82 83 /* small helper functions to handle temporary attachment files */ 84 void mutt_add_temp_attachment(const char *filename); 85 void mutt_unlink_temp_attachments(void); 86 87 #endif /* MUTT_ATTACH_MUTT_ATTACH_H */ 88