NeoMutt  2025-12-11-911-gd8d604
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 "module_data.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 NeoMutt *n, struct SubMenu *sm_generic)
 Initialise the Attach Keybindings - Implements ::init_keys_api.
 
static void attach_collapse (struct AttachCtx *actx, struct Menu *menu, struct ConfigSubset *sub)
 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 AttachPtrArray *aa)
 Extract PGP keys from attachments.
 
static int recvattach_pgp_check_traditional (struct AttachPtrArray *aa)
 Is the Attachment inline PGP?
 
static int op_attach_collapse (struct AttachFunctionData *fdata, const struct KeyEvent *event)
 toggle display of subparts - Implements attach_function_t -
 
static void attach_apply_set_deleted (struct AttachPtrArray *apa, bool deleted, int *num_changed, int *num_blocked)
 Apply the deleted flag to a working set of attachments.
 
static int op_attach_delete (struct AttachFunctionData *fdata, const struct KeyEvent *event)
 delete the current entry - Implements attach_function_t -
 
static int op_attach_edit_type (struct AttachFunctionData *fdata, const struct KeyEvent *event)
 edit attachment content type - Implements attach_function_t -
 
static int op_attach_pipe (struct AttachFunctionData *fdata, const struct KeyEvent *event)
 pipe message/attachment to a shell command - Implements attach_function_t -
 
static int op_attach_print (struct AttachFunctionData *fdata, const struct KeyEvent *event)
 print the current entry - Implements attach_function_t -
 
static int op_attach_save (struct AttachFunctionData *fdata, const struct KeyEvent *event)
 save message/attachment to a mailbox/file - Implements attach_function_t -
 
static int op_attach_undelete (struct AttachFunctionData *fdata, const struct KeyEvent *event)
 undelete the current entry - Implements attach_function_t -
 
static int op_attach_view (struct AttachFunctionData *fdata, const struct KeyEvent *event)
 view attachment using mailcap entry if necessary - Implements attach_function_t -
 
static int op_attach_view_mailcap (struct AttachFunctionData *fdata, const struct KeyEvent *event)
 force viewing of attachment using mailcap - Implements attach_function_t -
 
static int op_attach_view_pager (struct AttachFunctionData *fdata, const struct KeyEvent *event)
 view attachment in pager using copiousoutput mailcap - Implements attach_function_t -
 
static int op_attach_view_text (struct AttachFunctionData *fdata, const struct KeyEvent *event)
 view attachment as text - Implements attach_function_t -
 
static int op_bounce_message (struct AttachFunctionData *fdata, const struct KeyEvent *event)
 remail a message to another user - Implements attach_function_t -
 
static int op_check_traditional (struct AttachFunctionData *fdata, const struct KeyEvent *event)
 check for classic PGP - Implements attach_function_t -
 
static int op_compose_to_sender (struct AttachFunctionData *fdata, const struct KeyEvent *event)
 compose new message to the current message sender - Implements attach_function_t -
 
static int op_exit (struct AttachFunctionData *fdata, const struct KeyEvent *event)
 exit this menu - Implements attach_function_t -
 
static int op_extract_keys (struct AttachFunctionData *fdata, const struct KeyEvent *event)
 extract supported public keys - Implements attach_function_t -
 
static int op_forget_passphrase (struct AttachFunctionData *fdata, const struct KeyEvent *event)
 wipe passphrases from memory - Implements attach_function_t -
 
static int op_forward_message (struct AttachFunctionData *fdata, const struct KeyEvent *event)
 forward a message with comments - Implements attach_function_t -
 
static int op_list_subscribe (struct AttachFunctionData *fdata, const struct KeyEvent *event)
 subscribe to a mailing list - Implements attach_function_t -
 
static int op_list_unsubscribe (struct AttachFunctionData *fdata, const struct KeyEvent *event)
 unsubscribe from a mailing list - Implements attach_function_t -
 
static int op_reply (struct AttachFunctionData *fdata, const struct KeyEvent *event)
 reply to a message - Implements attach_function_t -
 
static int op_resend (struct AttachFunctionData *fdata, const struct KeyEvent *event)
 use the current message as a template for a new one - Implements attach_function_t -
 
static int op_followup (struct AttachFunctionData *fdata, const struct KeyEvent *event)
 followup to newsgroup - Implements attach_function_t -
 
static int op_forward_to_group (struct AttachFunctionData *fdata, 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.
 
static const struct MenuFuncOp OpAttach []
 Functions for the Attach 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 NeoMutt * n,
struct SubMenu * sm_generic )

Initialise the Attach Keybindings - Implements ::init_keys_api.

Definition at line 126 of file functions.c.

127{
129 ASSERT(mod_data);
130
131 struct MenuDefinition *md = NULL;
132 struct SubMenu *sm = NULL;
133
135 md = km_register_menu(MENU_ATTACH, "attach");
136 km_menu_add_submenu(md, sm);
137 km_menu_add_submenu(md, sm_generic);
139
140 mod_data->menu_attach = md;
141}
static const struct MenuFuncOp OpAttach[]
Functions for the Attach Menu.
Definition functions.c:59
static const struct MenuOpSeq AttachmentDefaultBindings[]
Key bindings for the Attachment Menu.
Definition functions.c:95
void km_menu_add_submenu(struct MenuDefinition *md, struct SubMenu *sm)
Add a SubMenu to a Menu Definition.
Definition init.c:121
struct SubMenu * km_register_submenu(const struct MenuFuncOp functions[])
Register a submenu.
Definition init.c:87
struct MenuDefinition * km_register_menu(int menu, const char *name)
Register a menu.
Definition init.c:104
void km_menu_add_bindings(struct MenuDefinition *md, const struct MenuOpSeq bindings[])
Add Keybindings to a Menu.
Definition init.c:134
@ MODULE_ID_ATTACH
ModuleAttach, Attachments
Definition module_api.h:49
void * neomutt_get_module_data(struct NeoMutt *n, enum ModuleId id)
Get the private data for a Module.
Definition neomutt.c:663
#define ASSERT(COND)
Definition signal2.h:59
Attach private Module data.
Definition module_data.h:32
struct MenuDefinition * menu_attach
Attach menu definition.
Definition module_data.h:40
Functions for a Dialog or Window.
Definition menu.h:77
Collection of related functions.
Definition menu.h:65
@ 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,
struct ConfigSubset * sub )
static

Close the tree of the current attachment.

Parameters
actxAttachment context
menuMenu listing Attachments
subConfig subset

Definition at line 149 of file functions.c.

150{
151 int rindex, curlevel;
152
153 struct AttachPtr *cur_att = current_attachment(actx, menu);
154 cur_att->collapsed = !cur_att->collapsed;
155 /* When expanding, expand all the children too */
156 if (cur_att->collapsed)
157 return;
158
159 curlevel = cur_att->level;
160 const int index = menu_get_index(menu);
161 rindex = actx->v2r[index] + 1;
162
163 const bool c_digest_collapse = cs_subset_bool(sub, "digest_collapse");
164 while ((rindex < actx->idxlen) && (actx->idx[rindex]->level > curlevel))
165 {
166 if (c_digest_collapse && (actx->idx[rindex]->body->type == TYPE_MULTIPART) &&
167 mutt_istr_equal(actx->idx[rindex]->body->subtype, "digest"))
168 {
169 actx->idx[rindex]->collapsed = true;
170 }
171 else
172 {
173 actx->idx[rindex]->collapsed = false;
174 }
175 rindex++;
176 }
177}
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:155
@ 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:69
short * v2r
Mapping from virtual to real attachment.
Definition attach.h:73
An email to which things will be attached.
Definition attach.h:36
struct Body * body
Attachment.
Definition attach.h:37
bool collapsed
Group is collapsed.
Definition attach.h:45
int level
Nesting depth of attachment.
Definition attach.h:41
char * subtype
content-type subtype
Definition body.h:61
unsigned int type
content-type primary type, ContentType
Definition body.h:40
+ 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 184 of file functions.c.

185{
186 if (priv->attach_msg)
187 {
190 return true;
191 }
192
193 return false;
194}
static const char * Function_not_permitted_in_attach_message_mode
Error message for unavailable functions in attach mode.
Definition functions.c:52
void mutt_flushinp(void)
MacroEvents moved to KeyModuleData UngetKeyEvents moved to KeyModuleData.
Definition get.c:81
#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 201 of file functions.c.

202{
203 if (!m || m->readonly)
204 {
206 mutt_error(_("Mailbox is read-only"));
207 return true;
208 }
209
210 return false;
211}
bool readonly
Don't allow changes to the mailbox.
Definition mailbox.h:118
+ 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 AttachPtrArray * aa)
static

Extract PGP keys from attachments.

Parameters
aaSelected attachments

Definition at line 217 of file functions.c.

218{
219 struct AttachPtr **app = NULL;
220 ARRAY_FOREACH(app, aa)
221 {
222 crypt_pgp_extract_key_from_attachment((*app)->fp, (*app)->body);
223 }
224}
#define ARRAY_FOREACH(elem, head)
Iterate over all elements of the array.
Definition array.h:223
void crypt_pgp_extract_key_from_attachment(FILE *fp, struct Body *b)
Wrapper for CryptModuleSpecs::pgp_extract_key_from_attachment()
Definition cryptglue.c:460
+ 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 AttachPtrArray * aa)
static

Is the Attachment inline PGP?

Parameters
aaSelected attachments
Return values
1Any selected Attachment is inline PGP

Definition at line 231 of file functions.c.

232{
233 int rc = 0;
234
235 struct AttachPtr **app = NULL;
236 ARRAY_FOREACH(app, aa)
237 {
238 rc = rc || crypt_pgp_check_traditional((*app)->fp, (*app)->body, true);
239 }
240
241 return rc;
242}
bool crypt_pgp_check_traditional(FILE *fp, struct Body *b, bool just_one)
Wrapper for CryptModuleSpecs::pgp_check_traditional()
Definition cryptglue.c:321
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ attach_apply_set_deleted()

static void attach_apply_set_deleted ( struct AttachPtrArray * apa,
bool deleted,
int * num_changed,
int * num_blocked )
static

Apply the deleted flag to a working set of attachments.

Parameters
[in]apaWorking set of AttachPtr pointers
[in]deletedtrue to mark as deleted, false to undelete
[out]num_changedNumber of attachments actually changed
[out]num_blockedNumber of attachments rejected (non-multipart)

Only multipart attachments may be deleted. Non-multipart attachments in the working set are skipped and counted in num_blocked.

Definition at line 273 of file functions.c.

275{
276 int changed = 0;
277 int blocked = 0;
278
279 if (apa)
280 {
281 struct AttachPtr **app = NULL;
282 ARRAY_FOREACH(app, apa)
283 {
284 struct AttachPtr *ap = *app;
285 if (!ap || !ap->body)
286 continue;
287
288 if (deleted && (ap->parent_type != TYPE_MULTIPART))
289 {
290 blocked++;
291 continue;
292 }
293
294 ap->body->deleted = deleted;
295 changed++;
296 }
297 }
298
299 if (num_changed)
300 *num_changed = changed;
301 if (num_blocked)
302 *num_blocked = blocked;
303}
int parent_type
Type of parent attachment, e.g. TYPE_MULTIPART.
Definition attach.h:39
bool deleted
Attachment marked for deletion.
Definition body.h:88
+ 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 52 of file functions.c.

◆ OpAttach

const struct MenuFuncOp OpAttach[]
static

Functions for the Attach Menu.

Definition at line 59 of file functions.c.

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

◆ AttachmentDefaultBindings

const struct MenuOpSeq AttachmentDefaultBindings[]
static
Initial value:
= {
{ OP_ATTACH_COLLAPSE, "v" },
{ OP_ATTACH_DELETE, "d" },
{ OP_ATTACH_EDIT_TYPE, "\005" },
{ OP_EXIT, "q" },
{ OP_PIPE, "|" },
{ OP_ATTACH_PRINT, "p" },
{ OP_ATTACH_SAVE, "s" },
{ OP_ATTACH_UNDELETE, "u" },
{ OP_ATTACH_VIEW, "<keypadenter>" },
{ OP_ATTACH_VIEW, "\n" },
{ OP_ATTACH_VIEW, "\r" },
{ OP_ATTACH_VIEW_MAILCAP, "m" },
{ OP_ATTACH_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 95 of file functions.c.

95 { /* map: attach */
96 { OP_ATTACH_COLLAPSE, "v" },
97 { OP_ATTACH_DELETE, "d" },
98 { OP_ATTACH_EDIT_TYPE, "\005" }, // <Ctrl-E>
99 { OP_EXIT, "q" },
100 { OP_PIPE, "|" },
101 { OP_ATTACH_PRINT, "p" },
102 { OP_ATTACH_SAVE, "s" },
103 { OP_ATTACH_UNDELETE, "u" },
104 { OP_ATTACH_VIEW, "<keypadenter>" },
105 { OP_ATTACH_VIEW, "\n" }, // <Enter>
106 { OP_ATTACH_VIEW, "\r" }, // <Return>
107 { OP_ATTACH_VIEW_MAILCAP, "m" },
108 { OP_ATTACH_VIEW_TEXT, "T" },
109 { OP_BOUNCE_MESSAGE, "b" },
110 { OP_CHECK_TRADITIONAL, "\033P" }, // <Alt-P>
111 { OP_DISPLAY_HEADERS, "h" },
112 { OP_EXTRACT_KEYS, "\013" }, // <Ctrl-K>
113 { OP_FORGET_PASSPHRASE, "\006" }, // <Ctrl-F>
114 { OP_FORWARD_MESSAGE, "f" },
115 { OP_GROUP_REPLY, "g" },
116 { OP_LIST_REPLY, "L" },
117 { OP_REPLY, "r" },
118 { OP_RESEND, "\033e" }, // <Alt-e>
119 { 0, NULL },
120};

◆ AttachFunctions

const struct AttachFunction AttachFunctions[]
static

All the NeoMutt functions that the Attach supports.

Definition at line 792 of file functions.c.

792 {
793 // clang-format off
794 { OP_ATTACH_COLLAPSE, op_attach_collapse },
795 { OP_ATTACH_DELETE, op_attach_delete },
796 { OP_ATTACH_EDIT_TYPE, op_attach_edit_type },
797 { OP_ATTACH_PRINT, op_attach_print },
798 { OP_ATTACH_SAVE, op_attach_save },
799 { OP_ATTACH_UNDELETE, op_attach_undelete },
800 { OP_ATTACH_VIEW, op_attach_view },
801 { OP_ATTACH_VIEW_MAILCAP, op_attach_view_mailcap },
802 { OP_ATTACH_VIEW_PAGER, op_attach_view_pager },
803 { OP_ATTACH_VIEW_TEXT, op_attach_view_text },
804 { OP_BOUNCE_MESSAGE, op_bounce_message },
805 { OP_CHECK_TRADITIONAL, op_check_traditional },
806 { OP_COMPOSE_TO_SENDER, op_compose_to_sender },
807 { OP_DISPLAY_HEADERS, op_attach_view },
808 { OP_EXIT, op_exit },
809 { OP_EXTRACT_KEYS, op_extract_keys },
810 { OP_FOLLOWUP, op_followup },
811 { OP_FORGET_PASSPHRASE, op_forget_passphrase },
812 { OP_FORWARD_MESSAGE, op_forward_message },
813 { OP_FORWARD_TO_GROUP, op_forward_to_group },
814 { OP_GROUP_CHAT_REPLY, op_reply },
815 { OP_GROUP_REPLY, op_reply },
816 { OP_LIST_REPLY, op_reply },
817 { OP_LIST_SUBSCRIBE, op_list_subscribe },
818 { OP_LIST_UNSUBSCRIBE, op_list_unsubscribe },
819 { OP_PIPE, op_attach_pipe },
820 { OP_REPLY, op_reply },
821 { OP_RESEND, op_resend },
822 { 0, NULL },
823 // clang-format on
824};
static int op_exit(struct AliasFunctionData *fdata, const struct KeyEvent *event)
exit this menu - Implements alias_function_t -
Definition functions.c:312
static int op_attach_view_text(struct AttachFunctionData *fdata, const struct KeyEvent *event)
view attachment as text - Implements attach_function_t -
Definition functions.c:542
static int op_followup(struct AttachFunctionData *fdata, const struct KeyEvent *event)
followup to newsgroup - Implements attach_function_t -
Definition functions.c:743
static int op_list_unsubscribe(struct AttachFunctionData *fdata, const struct KeyEvent *event)
unsubscribe from a mailing list - Implements attach_function_t -
Definition functions.c:681
static int op_attach_edit_type(struct AttachFunctionData *fdata, const struct KeyEvent *event)
edit attachment content type - Implements attach_function_t -
Definition functions.c:393
static int op_resend(struct AttachFunctionData *fdata, const struct KeyEvent *event)
use the current message as a template for a new one - Implements attach_function_t -
Definition functions.c:725
static int op_forward_message(struct AttachFunctionData *fdata, const struct KeyEvent *event)
forward a message with comments - Implements attach_function_t -
Definition functions.c:653
static int op_attach_delete(struct AttachFunctionData *fdata, const struct KeyEvent *event)
delete the current entry - Implements attach_function_t -
Definition functions.c:313
static int op_attach_undelete(struct AttachFunctionData *fdata, const struct KeyEvent *event)
undelete the current entry - Implements attach_function_t -
Definition functions.c:451
static int op_attach_view(struct AttachFunctionData *fdata, const struct KeyEvent *event)
view attachment using mailcap entry if necessary - Implements attach_function_t -
Definition functions.c:503
static int op_attach_pipe(struct AttachFunctionData *fdata, const struct KeyEvent *event)
pipe message/attachment to a shell command - Implements attach_function_t -
Definition functions.c:404
static int op_compose_to_sender(struct AttachFunctionData *fdata, const struct KeyEvent *event)
compose new message to the current message sender - Implements attach_function_t -
Definition functions.c:588
static int op_attach_save(struct AttachFunctionData *fdata, const struct KeyEvent *event)
save message/attachment to a mailbox/file - Implements attach_function_t -
Definition functions.c:430
static int op_list_subscribe(struct AttachFunctionData *fdata, const struct KeyEvent *event)
subscribe to a mailing list - Implements attach_function_t -
Definition functions.c:669
static int op_attach_print(struct AttachFunctionData *fdata, const struct KeyEvent *event)
print the current entry - Implements attach_function_t -
Definition functions.c:417
static int op_attach_collapse(struct AttachFunctionData *fdata, const struct KeyEvent *event)
toggle display of subparts - Implements attach_function_t -
Definition functions.c:249
static int op_check_traditional(struct AttachFunctionData *fdata, const struct KeyEvent *event)
check for classic PGP - Implements attach_function_t -
Definition functions.c:571
static int op_extract_keys(struct AttachFunctionData *fdata, const struct KeyEvent *event)
extract supported public keys - Implements attach_function_t -
Definition functions.c:626
static int op_forward_to_group(struct AttachFunctionData *fdata, const struct KeyEvent *event)
forward to newsgroup - Implements attach_function_t -
Definition functions.c:774
static int op_reply(struct AttachFunctionData *fdata, const struct KeyEvent *event)
reply to a message - Implements attach_function_t -
Definition functions.c:699
static int op_bounce_message(struct AttachFunctionData *fdata, const struct KeyEvent *event)
remail a message to another user - Implements attach_function_t -
Definition functions.c:555
static int op_forget_passphrase(struct AttachFunctionData *fdata, const struct KeyEvent *event)
wipe passphrases from memory - Implements attach_function_t -
Definition functions.c:644
static int op_attach_view_mailcap(struct AttachFunctionData *fdata, const struct KeyEvent *event)
force viewing of attachment using mailcap - Implements attach_function_t -
Definition functions.c:516
static int op_attach_view_pager(struct AttachFunctionData *fdata, const struct KeyEvent *event)
view attachment in pager using copiousoutput mailcap - Implements attach_function_t -
Definition functions.c:529