NeoMutt  2025-12-11-596-g7cc1dd
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
functions.c File Reference

Attachment functions. More...

#include "config.h"
#include <stdbool.h>
#include <stdio.h>
#include "mutt/lib.h"
#include "config/lib.h"
#include "email/lib.h"
#include "core/lib.h"
#include "gui/lib.h"
#include "functions.h"
#include "key/lib.h"
#include "menu/lib.h"
#include "ncrypt/lib.h"
#include "question/lib.h"
#include "send/lib.h"
#include "attach.h"
#include "mutt_attach.h"
#include "private_data.h"
#include "recvattach.h"
#include "recvcmd.h"
+ Include dependency graph for functions.c:

Go to the source code of this file.

Functions

void attach_init_keys (struct SubMenu *sm_generic)
 Initialise the Attach Keybindings - Implements ::init_keys_api.
 
static void attach_collapse (struct AttachCtx *actx, struct Menu *menu)
 Close the tree of the current attachment.
 
static bool check_attach (struct AttachPrivateData *priv)
 Check if in attach-message mode.
 
static bool check_readonly (struct Mailbox *m)
 Check if the Mailbox is readonly.
 
static void recvattach_extract_pgp_keys (struct AttachCtx *actx, struct Menu *menu)
 Extract PGP keys from attachments.
 
static int recvattach_pgp_check_traditional (struct AttachCtx *actx, struct Menu *menu)
 Is the Attachment inline PGP?
 
static int op_attachment_collapse (struct AttachPrivateData *priv, const struct KeyEvent *event)
 toggle display of subparts - Implements attach_function_t -
 
static int op_attachment_delete (struct AttachPrivateData *priv, const struct KeyEvent *event)
 delete the current entry - Implements attach_function_t -
 
static int op_attachment_edit_type (struct AttachPrivateData *priv, const struct KeyEvent *event)
 edit attachment content type - Implements attach_function_t -
 
static int op_attachment_pipe (struct AttachPrivateData *priv, const struct KeyEvent *event)
 pipe message/attachment to a shell command - Implements attach_function_t -
 
static int op_attachment_print (struct AttachPrivateData *priv, const struct KeyEvent *event)
 print the current entry - Implements attach_function_t -
 
static int op_attachment_save (struct AttachPrivateData *priv, const struct KeyEvent *event)
 save message/attachment to a mailbox/file - Implements attach_function_t -
 
static int op_attachment_undelete (struct AttachPrivateData *priv, const struct KeyEvent *event)
 undelete the current entry - Implements attach_function_t -
 
static int op_attachment_view (struct AttachPrivateData *priv, const struct KeyEvent *event)
 view attachment using mailcap entry if necessary - Implements attach_function_t -
 
static int op_attachment_view_mailcap (struct AttachPrivateData *priv, const struct KeyEvent *event)
 force viewing of attachment using mailcap - Implements attach_function_t -
 
static int op_attachment_view_pager (struct AttachPrivateData *priv, const struct KeyEvent *event)
 view attachment in pager using copiousoutput mailcap - Implements attach_function_t -
 
static int op_attachment_view_text (struct AttachPrivateData *priv, const struct KeyEvent *event)
 view attachment as text - Implements attach_function_t -
 
static int op_bounce_message (struct AttachPrivateData *priv, const struct KeyEvent *event)
 remail a message to another user - Implements attach_function_t -
 
static int op_check_traditional (struct AttachPrivateData *priv, const struct KeyEvent *event)
 check for classic PGP - Implements attach_function_t -
 
static int op_compose_to_sender (struct AttachPrivateData *priv, const struct KeyEvent *event)
 compose new message to the current message sender - Implements attach_function_t -
 
static int op_exit (struct AttachPrivateData *priv, const struct KeyEvent *event)
 exit this menu - Implements attach_function_t -
 
static int op_extract_keys (struct AttachPrivateData *priv, const struct KeyEvent *event)
 extract supported public keys - Implements attach_function_t -
 
static int op_forget_passphrase (struct AttachPrivateData *priv, const struct KeyEvent *event)
 wipe passphrases from memory - Implements attach_function_t -
 
static int op_forward_message (struct AttachPrivateData *priv, const struct KeyEvent *event)
 forward a message with comments - Implements attach_function_t -
 
static int op_list_subscribe (struct AttachPrivateData *priv, const struct KeyEvent *event)
 subscribe to a mailing list - Implements attach_function_t -
 
static int op_list_unsubscribe (struct AttachPrivateData *priv, const struct KeyEvent *event)
 unsubscribe from a mailing list - Implements attach_function_t -
 
static int op_reply (struct AttachPrivateData *priv, const struct KeyEvent *event)
 reply to a message - Implements attach_function_t -
 
static int op_resend (struct AttachPrivateData *priv, const struct KeyEvent *event)
 use the current message as a template for a new one - Implements attach_function_t -
 
static int op_followup (struct AttachPrivateData *priv, const struct KeyEvent *event)
 followup to newsgroup - Implements attach_function_t -
 
static int op_forward_to_group (struct AttachPrivateData *priv, const struct KeyEvent *event)
 forward to newsgroup - Implements attach_function_t -
 
int attach_function_dispatcher (struct MuttWindow *win, const struct KeyEvent *event)
 Perform a Attach function - Implements function_dispatcher_t -.
 

Variables

static const char * Function_not_permitted_in_attach_message_mode
 Error message for unavailable functions in attach mode.
 
struct MenuDefinitionMdAttach = NULL
 Attach Menu Definition.
 
static const struct MenuFuncOp OpAttachment []
 Functions for the Attachment Menu.
 
static const struct MenuOpSeq AttachmentDefaultBindings []
 Key bindings for the Attachment Menu.
 
static const struct AttachFunction AttachFunctions []
 All the NeoMutt functions that the Attach supports.
 

Detailed Description

Attachment functions.

Authors
  • Richard Russon
  • Dennis Schön

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Definition in file functions.c.

Function Documentation

◆ attach_init_keys()

void attach_init_keys ( struct SubMenu * sm_generic)

Initialise the Attach Keybindings - Implements ::init_keys_api.

Definition at line 128 of file functions.c.

129{
130 struct MenuDefinition *md = NULL;
131 struct SubMenu *sm = NULL;
132
134 md = km_register_menu(MENU_ATTACH, "attach");
135 km_menu_add_submenu(md, sm);
136 km_menu_add_submenu(md, sm_generic);
138
139 MdAttach = md;
140}
static const struct MenuOpSeq AttachmentDefaultBindings[]
Key bindings for the Attachment Menu.
Definition functions.c:97
struct MenuDefinition * MdAttach
Attach Menu Definition.
Definition functions.c:55
static const struct MenuFuncOp OpAttachment[]
Functions for the Attachment Menu.
Definition functions.c:61
void km_menu_add_submenu(struct MenuDefinition *md, struct SubMenu *sm)
Add a SubMenu to a Menu Definition.
Definition init.c:123
struct SubMenu * km_register_submenu(const struct MenuFuncOp functions[])
Register a submenu.
Definition init.c:91
struct MenuDefinition * km_register_menu(int menu, const char *name)
Register a menu.
Definition init.c:107
void km_menu_add_bindings(struct MenuDefinition *md, const struct MenuOpSeq bindings[])
Add Keybindings to a Menu.
Definition init.c:136
Functions for a Dialog or Window.
Definition menu.h:80
Collection of related functions.
Definition menu.h:68
@ MENU_ATTACH
Select an attachment.
Definition type.h:35
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ attach_collapse()

static void attach_collapse ( struct AttachCtx * actx,
struct Menu * menu )
static

Close the tree of the current attachment.

Parameters
actxAttachment context
menuMenu listing Attachments

Definition at line 147 of file functions.c.

148{
149 int rindex, curlevel;
150
151 struct AttachPtr *cur_att = current_attachment(actx, menu);
152 cur_att->collapsed = !cur_att->collapsed;
153 /* When expanding, expand all the children too */
154 if (cur_att->collapsed)
155 return;
156
157 curlevel = cur_att->level;
158 const int index = menu_get_index(menu);
159 rindex = actx->v2r[index] + 1;
160
161 const bool c_digest_collapse = cs_subset_bool(NeoMutt->sub, "digest_collapse");
162 while ((rindex < actx->idxlen) && (actx->idx[rindex]->level > curlevel))
163 {
164 if (c_digest_collapse && (actx->idx[rindex]->body->type == TYPE_MULTIPART) &&
165 mutt_istr_equal(actx->idx[rindex]->body->subtype, "digest"))
166 {
167 actx->idx[rindex]->collapsed = true;
168 }
169 else
170 {
171 actx->idx[rindex]->collapsed = false;
172 }
173 rindex++;
174 }
175}
bool cs_subset_bool(const struct ConfigSubset *sub, const char *name)
Get a boolean config item by name.
Definition helpers.c:47
int menu_get_index(struct Menu *menu)
Get the current selection in the Menu.
Definition menu.c:164
@ TYPE_MULTIPART
Type: 'multipart/*'.
Definition mime.h:37
bool mutt_istr_equal(const char *a, const char *b)
Compare two strings, ignoring case.
Definition string.c:677
struct AttachPtr * current_attachment(struct AttachCtx *actx, struct Menu *menu)
Get the current attachment.
Definition recvattach.c:71
struct AttachPtr ** idx
Array of attachments.
Definition attach.h:67
short * v2r
Mapping from virtual to real attachment.
Definition attach.h:71
An email to which things will be attached.
Definition attach.h:35
struct Body * body
Attachment.
Definition attach.h:36
bool collapsed
Group is collapsed.
Definition attach.h:44
int level
Nesting depth of attachment.
Definition attach.h:40
char * subtype
content-type subtype
Definition body.h:61
unsigned int type
content-type primary type, ContentType
Definition body.h:40
Container for Accounts, Notifications.
Definition neomutt.h:41
struct ConfigSubset * sub
Inherited config items.
Definition neomutt.h:49
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ check_attach()

static bool check_attach ( struct AttachPrivateData * priv)
static

Check if in attach-message mode.

Parameters
privPrivate Attach data
Return values
trueMailbox is readonly

Definition at line 182 of file functions.c.

183{
184 if (priv->attach_msg)
185 {
188 return true;
189 }
190
191 return false;
192}
static const char * Function_not_permitted_in_attach_message_mode
Error message for unavailable functions in attach mode.
Definition functions.c:51
void mutt_flushinp(void)
Empty all the keyboard buffers.
Definition get.c:65
#define mutt_error(...)
Definition logging2.h:94
#define _(a)
Definition message.h:28
bool attach_msg
Are we in "attach message" mode?
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ check_readonly()

static bool check_readonly ( struct Mailbox * m)
static

Check if the Mailbox is readonly.

Parameters
mMailbox
Return values
trueMailbox is readonly

Definition at line 199 of file functions.c.

200{
201 if (!m || m->readonly)
202 {
204 mutt_error(_("Mailbox is read-only"));
205 return true;
206 }
207
208 return false;
209}
bool readonly
Don't allow changes to the mailbox.
Definition mailbox.h:115
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ recvattach_extract_pgp_keys()

static void recvattach_extract_pgp_keys ( struct AttachCtx * actx,
struct Menu * menu )
static

Extract PGP keys from attachments.

Parameters
actxAttachment context
menuMenu listing attachments

Definition at line 216 of file functions.c.

217{
218 if (menu->tag_prefix)
219 {
220 for (int i = 0; i < actx->idxlen; i++)
221 {
222 if (actx->idx[i]->body->tagged)
223 {
225 }
226 }
227 }
228 else
229 {
230 struct AttachPtr *cur_att = current_attachment(actx, menu);
232 }
233}
void crypt_pgp_extract_key_from_attachment(FILE *fp, struct Body *b)
Wrapper for CryptModuleSpecs::pgp_extract_key_from_attachment()
Definition cryptglue.c:394
short idxlen
Number of attachmentes.
Definition attach.h:68
FILE * fp
Used in the recvattach menu.
Definition attach.h:37
bool tagged
This attachment is tagged.
Definition body.h:90
bool tag_prefix
User has pressed <tag-prefix>
Definition lib.h:86
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ recvattach_pgp_check_traditional()

static int recvattach_pgp_check_traditional ( struct AttachCtx * actx,
struct Menu * menu )
static

Is the Attachment inline PGP?

Parameters
actxAttachment to check
menuMenu listing Attachments
Return values
1The (tagged) Attachment(s) are inline PGP
Note
If the menu->tagprefix is set, all the tagged attachments will be checked.

Definition at line 243 of file functions.c.

244{
245 int rc = 0;
246
247 if (menu->tag_prefix)
248 {
249 for (int i = 0; i < actx->idxlen; i++)
250 if (actx->idx[i]->body->tagged)
251 rc = rc || crypt_pgp_check_traditional(actx->idx[i]->fp, actx->idx[i]->body, true);
252 }
253 else
254 {
255 struct AttachPtr *cur_att = current_attachment(actx, menu);
256 rc = crypt_pgp_check_traditional(cur_att->fp, cur_att->body, true);
257 }
258
259 return rc;
260}
bool crypt_pgp_check_traditional(FILE *fp, struct Body *b, bool just_one)
Wrapper for CryptModuleSpecs::pgp_check_traditional()
Definition cryptglue.c:282
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ Function_not_permitted_in_attach_message_mode

const char* Function_not_permitted_in_attach_message_mode
static
Initial value:
= N_(
"Function not permitted in attach-message mode")
#define N_(a)
Definition message.h:32

Error message for unavailable functions in attach mode.

Definition at line 51 of file functions.c.

◆ MdAttach

struct MenuDefinition* MdAttach = NULL

Attach Menu Definition.

Definition at line 55 of file functions.c.

◆ OpAttachment

const struct MenuFuncOp OpAttachment[]
static

Functions for the Attachment Menu.

Definition at line 61 of file functions.c.

61 { /* map: attachment */
62 { "bounce-message", OP_BOUNCE_MESSAGE },
63 { "check-traditional-pgp", OP_CHECK_TRADITIONAL },
64 { "collapse-parts", OP_ATTACHMENT_COLLAPSE },
65 { "compose-to-sender", OP_COMPOSE_TO_SENDER },
66 { "delete-entry", OP_ATTACHMENT_DELETE },
67 { "display-toggle-weed", OP_DISPLAY_HEADERS },
68 { "edit-type", OP_ATTACHMENT_EDIT_TYPE },
69 { "exit", OP_EXIT },
70 { "extract-keys", OP_EXTRACT_KEYS },
71 { "followup-message", OP_FOLLOWUP },
72 { "forget-passphrase", OP_FORGET_PASSPHRASE },
73 { "forward-message", OP_FORWARD_MESSAGE },
74 { "forward-to-group", OP_FORWARD_TO_GROUP },
75 { "group-chat-reply", OP_GROUP_CHAT_REPLY },
76 { "group-reply", OP_GROUP_REPLY },
77 { "list-reply", OP_LIST_REPLY },
78 { "list-subscribe", OP_LIST_SUBSCRIBE },
79 { "list-unsubscribe", OP_LIST_UNSUBSCRIBE },
80 { "pipe-entry", OP_PIPE },
81 { "pipe-message", OP_PIPE },
82 { "print-entry", OP_ATTACHMENT_PRINT },
83 { "reply", OP_REPLY },
84 { "resend-message", OP_RESEND },
85 { "save-entry", OP_ATTACHMENT_SAVE },
86 { "undelete-entry", OP_ATTACHMENT_UNDELETE },
87 { "view-attach", OP_ATTACHMENT_VIEW },
88 { "view-mailcap", OP_ATTACHMENT_VIEW_MAILCAP },
89 { "view-pager", OP_ATTACHMENT_VIEW_PAGER },
90 { "view-text", OP_ATTACHMENT_VIEW_TEXT },
91 { NULL, 0 },
92};

◆ AttachmentDefaultBindings

const struct MenuOpSeq AttachmentDefaultBindings[]
static
Initial value:
= {
{ OP_ATTACHMENT_COLLAPSE, "v" },
{ OP_ATTACHMENT_DELETE, "d" },
{ OP_ATTACHMENT_EDIT_TYPE, "\005" },
{ OP_EXIT, "q" },
{ OP_PIPE, "|" },
{ OP_ATTACHMENT_PRINT, "p" },
{ OP_ATTACHMENT_SAVE, "s" },
{ OP_ATTACHMENT_UNDELETE, "u" },
{ OP_ATTACHMENT_VIEW, "<keypadenter>" },
{ OP_ATTACHMENT_VIEW, "\n" },
{ OP_ATTACHMENT_VIEW, "\r" },
{ OP_ATTACHMENT_VIEW_MAILCAP, "m" },
{ OP_ATTACHMENT_VIEW_TEXT, "T" },
{ OP_BOUNCE_MESSAGE, "b" },
{ OP_CHECK_TRADITIONAL, "\033P" },
{ OP_DISPLAY_HEADERS, "h" },
{ OP_EXTRACT_KEYS, "\013" },
{ OP_FORGET_PASSPHRASE, "\006" },
{ OP_FORWARD_MESSAGE, "f" },
{ OP_GROUP_REPLY, "g" },
{ OP_LIST_REPLY, "L" },
{ OP_REPLY, "r" },
{ OP_RESEND, "\033e" },
{ 0, NULL },
}

Key bindings for the Attachment Menu.

Definition at line 97 of file functions.c.

97 { /* map: attachment */
98 { OP_ATTACHMENT_COLLAPSE, "v" },
99 { OP_ATTACHMENT_DELETE, "d" },
100 { OP_ATTACHMENT_EDIT_TYPE, "\005" }, // <Ctrl-E>
101 { OP_EXIT, "q" },
102 { OP_PIPE, "|" },
103 { OP_ATTACHMENT_PRINT, "p" },
104 { OP_ATTACHMENT_SAVE, "s" },
105 { OP_ATTACHMENT_UNDELETE, "u" },
106 { OP_ATTACHMENT_VIEW, "<keypadenter>" },
107 { OP_ATTACHMENT_VIEW, "\n" }, // <Enter>
108 { OP_ATTACHMENT_VIEW, "\r" }, // <Return>
109 { OP_ATTACHMENT_VIEW_MAILCAP, "m" },
110 { OP_ATTACHMENT_VIEW_TEXT, "T" },
111 { OP_BOUNCE_MESSAGE, "b" },
112 { OP_CHECK_TRADITIONAL, "\033P" }, // <Alt-P>
113 { OP_DISPLAY_HEADERS, "h" },
114 { OP_EXTRACT_KEYS, "\013" }, // <Ctrl-K>
115 { OP_FORGET_PASSPHRASE, "\006" }, // <Ctrl-F>
116 { OP_FORWARD_MESSAGE, "f" },
117 { OP_GROUP_REPLY, "g" },
118 { OP_LIST_REPLY, "L" },
119 { OP_REPLY, "r" },
120 { OP_RESEND, "\033e" }, // <Alt-e>
121 { 0, NULL },
122};

◆ AttachFunctions

const struct AttachFunction AttachFunctions[]
static

All the NeoMutt functions that the Attach supports.

Definition at line 697 of file functions.c.

697 {
698 // clang-format off
699 { OP_ATTACHMENT_COLLAPSE, op_attachment_collapse },
700 { OP_ATTACHMENT_DELETE, op_attachment_delete },
701 { OP_ATTACHMENT_EDIT_TYPE, op_attachment_edit_type },
702 { OP_PIPE, op_attachment_pipe },
703 { OP_ATTACHMENT_PRINT, op_attachment_print },
704 { OP_ATTACHMENT_SAVE, op_attachment_save },
705 { OP_ATTACHMENT_UNDELETE, op_attachment_undelete },
706 { OP_ATTACHMENT_VIEW, op_attachment_view },
707 { OP_ATTACHMENT_VIEW_MAILCAP, op_attachment_view_mailcap },
708 { OP_ATTACHMENT_VIEW_PAGER, op_attachment_view_pager },
709 { OP_ATTACHMENT_VIEW_TEXT, op_attachment_view_text },
710 { OP_BOUNCE_MESSAGE, op_bounce_message },
711 { OP_CHECK_TRADITIONAL, op_check_traditional },
712 { OP_COMPOSE_TO_SENDER, op_compose_to_sender },
713 { OP_DISPLAY_HEADERS, op_attachment_view },
714 { OP_EXIT, op_exit },
715 { OP_EXTRACT_KEYS, op_extract_keys },
716 { OP_FOLLOWUP, op_followup },
717 { OP_FORGET_PASSPHRASE, op_forget_passphrase },
718 { OP_FORWARD_MESSAGE, op_forward_message },
719 { OP_FORWARD_TO_GROUP, op_forward_to_group },
720 { OP_GROUP_CHAT_REPLY, op_reply },
721 { OP_GROUP_REPLY, op_reply },
722 { OP_LIST_REPLY, op_reply },
723 { OP_LIST_SUBSCRIBE, op_list_subscribe },
724 { OP_LIST_UNSUBSCRIBE, op_list_unsubscribe },
725 { OP_REPLY, op_reply },
726 { OP_RESEND, op_resend },
727 { 0, NULL },
728 // clang-format on
729};
static int op_exit(struct AliasMenuData *mdata, const struct KeyEvent *event)
exit this menu - Implements alias_function_t -
Definition functions.c:234
static int op_forward_message(struct AttachPrivateData *priv, const struct KeyEvent *event)
forward a message with comments - Implements attach_function_t -
Definition functions.c:579
static int op_attachment_view_mailcap(struct AttachPrivateData *priv, const struct KeyEvent *event)
force viewing of attachment using mailcap - Implements attach_function_t -
Definition functions.c:457
static int op_attachment_delete(struct AttachPrivateData *priv, const struct KeyEvent *event)
delete the current entry - Implements attach_function_t -
Definition functions.c:283
static int op_reply(struct AttachPrivateData *priv, const struct KeyEvent *event)
reply to a message - Implements attach_function_t -
Definition functions.c:613
static int op_attachment_view_text(struct AttachPrivateData *priv, const struct KeyEvent *event)
view attachment as text - Implements attach_function_t -
Definition functions.c:482
static int op_attachment_collapse(struct AttachPrivateData *priv, const struct KeyEvent *event)
toggle display of subparts - Implements attach_function_t -
Definition functions.c:267
static int op_forget_passphrase(struct AttachPrivateData *priv, const struct KeyEvent *event)
wipe passphrases from memory - Implements attach_function_t -
Definition functions.c:570
static int op_compose_to_sender(struct AttachPrivateData *priv, const struct KeyEvent *event)
compose new message to the current message sender - Implements attach_function_t -
Definition functions.c:522
static int op_list_subscribe(struct AttachPrivateData *priv, const struct KeyEvent *event)
subscribe to a mailing list - Implements attach_function_t -
Definition functions.c:593
static int op_attachment_edit_type(struct AttachPrivateData *priv, const struct KeyEvent *event)
edit attachment content type - Implements attach_function_t -
Definition functions.c:359
static int op_attachment_pipe(struct AttachPrivateData *priv, const struct KeyEvent *event)
pipe message/attachment to a shell command - Implements attach_function_t -
Definition functions.c:369
static int op_check_traditional(struct AttachPrivateData *priv, const struct KeyEvent *event)
check for classic PGP - Implements attach_function_t -
Definition functions.c:508
static int op_list_unsubscribe(struct AttachPrivateData *priv, const struct KeyEvent *event)
unsubscribe from a mailing list - Implements attach_function_t -
Definition functions.c:603
static int op_extract_keys(struct AttachPrivateData *priv, const struct KeyEvent *event)
extract supported public keys - Implements attach_function_t -
Definition functions.c:556
static int op_resend(struct AttachPrivateData *priv, const struct KeyEvent *event)
use the current message as a template for a new one - Implements attach_function_t -
Definition functions.c:637
static int op_attachment_print(struct AttachPrivateData *priv, const struct KeyEvent *event)
print the current entry - Implements attach_function_t -
Definition functions.c:380
static int op_attachment_undelete(struct AttachPrivateData *priv, const struct KeyEvent *event)
undelete the current entry - Implements attach_function_t -
Definition functions.c:407
static int op_attachment_view(struct AttachPrivateData *priv, const struct KeyEvent *event)
view attachment using mailcap entry if necessary - Implements attach_function_t -
Definition functions.c:445
static int op_attachment_view_pager(struct AttachPrivateData *priv, const struct KeyEvent *event)
view attachment in pager using copiousoutput mailcap - Implements attach_function_t -
Definition functions.c:470
static int op_forward_to_group(struct AttachPrivateData *priv, const struct KeyEvent *event)
forward to newsgroup - Implements attach_function_t -
Definition functions.c:681
static int op_bounce_message(struct AttachPrivateData *priv, const struct KeyEvent *event)
remail a message to another user - Implements attach_function_t -
Definition functions.c:494
static int op_attachment_save(struct AttachPrivateData *priv, const struct KeyEvent *event)
save message/attachment to a mailbox/file - Implements attach_function_t -
Definition functions.c:391
static int op_followup(struct AttachPrivateData *priv, const struct KeyEvent *event)
followup to newsgroup - Implements attach_function_t -
Definition functions.c:653