NeoMutt  2025-12-11-435-g4ac674
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
Envelope Function API

Prototype for a Envelope Function. More...

+ Collaboration diagram for Envelope Function API:

Functions

static int op_envelope_edit_bcc (struct EnvelopeWindowData *wdata, const struct KeyEvent *event)
 Edit the BCC list - Implements envelope_function_t -.
 
static int op_envelope_edit_cc (struct EnvelopeWindowData *wdata, const struct KeyEvent *event)
 Edit the CC list - Implements envelope_function_t -.
 
static int op_envelope_edit_fcc (struct EnvelopeWindowData *wdata, const struct KeyEvent *event)
 Enter a file to save a copy of this message in - Implements envelope_function_t -.
 
static int op_envelope_edit_from (struct EnvelopeWindowData *wdata, const struct KeyEvent *event)
 Edit the from field - Implements envelope_function_t -.
 
static int op_envelope_edit_reply_to (struct EnvelopeWindowData *wdata, const struct KeyEvent *event)
 Edit the Reply-To field - Implements envelope_function_t -.
 
static int op_envelope_edit_subject (struct EnvelopeWindowData *wdata, const struct KeyEvent *event)
 Edit the subject of this message - Implements envelope_function_t -.
 
static int op_envelope_edit_to (struct EnvelopeWindowData *wdata, const struct KeyEvent *event)
 Edit the TO list - Implements envelope_function_t -.
 
static int op_compose_pgp_menu (struct EnvelopeWindowData *wdata, const struct KeyEvent *event)
 Show PGP options - Implements envelope_function_t -.
 
static int op_compose_smime_menu (struct EnvelopeWindowData *wdata, const struct KeyEvent *event)
 Show S/MIME options - Implements envelope_function_t -.
 
static int op_compose_autocrypt_menu (struct EnvelopeWindowData *wdata, const struct KeyEvent *event)
 Show autocrypt compose menu options - Implements envelope_function_t -.
 
static int op_envelope_edit_followup_to (struct EnvelopeWindowData *wdata, const struct KeyEvent *event)
 Edit the Followup-To field - Implements envelope_function_t -.
 
static int op_envelope_edit_newsgroups (struct EnvelopeWindowData *wdata, const struct KeyEvent *event)
 Edit the newsgroups list - Implements envelope_function_t -.
 
static int op_envelope_edit_x_comment_to (struct EnvelopeWindowData *wdata, const struct KeyEvent *event)
 Edit the X-Comment-To field - Implements envelope_function_t -.
 

Detailed Description

Prototype for a Envelope Function.

Parameters
wdataEnvelope Window data
eventEvent to process
Return values
enumFunctionRetval
Precondition
wdata is not NULL
event is not NULL

Function Documentation

◆ op_envelope_edit_bcc()

static int op_envelope_edit_bcc ( struct EnvelopeWindowData * wdata,
const struct KeyEvent * event )
static

Edit the BCC list - Implements envelope_function_t -.

Definition at line 193 of file functions.c.

194{
195 if (wdata->is_news)
196 return FR_NO_ACTION;
197 if (!edit_address_list(HDR_BCC, &wdata->email->env->bcc))
198 return FR_NO_ACTION;
199
200 update_crypt_info(wdata);
202 return FR_SUCCESS;
203}
@ FR_SUCCESS
Valid function - successfully performed.
Definition dispatcher.h:40
@ FR_NO_ACTION
Valid function - no action performed.
Definition dispatcher.h:38
static bool edit_address_list(enum HeaderField field, struct AddressList *al)
Let the user edit the address list.
Definition functions.c:106
void update_crypt_info(struct EnvelopeWindowData *wdata)
Update the crypto info.
Definition functions.c:148
@ HDR_BCC
"Bcc:" field
Definition private.h:37
bool mutt_env_notify_send(struct Email *e, enum NotifyEnvelope type)
Send an Envelope change notification.
Definition envelope.c:178
@ NT_ENVELOPE_BCC
"Bcc:" header has changed
Definition envelope.h:137
struct Envelope * env
Envelope information.
Definition email.h:68
bool is_news
Email is a news article.
Definition wdata.h:48
struct Email * email
Email being composed.
Definition wdata.h:40
struct AddressList bcc
Email's 'Bcc' list.
Definition envelope.h:62
+ Here is the call graph for this function:

◆ op_envelope_edit_cc()

static int op_envelope_edit_cc ( struct EnvelopeWindowData * wdata,
const struct KeyEvent * event )
static

Edit the CC list - Implements envelope_function_t -.

Definition at line 208 of file functions.c.

209{
210 if (wdata->is_news)
211 return FR_NO_ACTION;
212 if (!edit_address_list(HDR_CC, &wdata->email->env->cc))
213 return FR_NO_ACTION;
214
215 update_crypt_info(wdata);
217 return FR_SUCCESS;
218}
@ HDR_CC
"Cc:" field
Definition private.h:36
@ NT_ENVELOPE_CC
"Cc:" header has changed
Definition envelope.h:138
struct AddressList cc
Email's 'Cc' list.
Definition envelope.h:61
+ Here is the call graph for this function:

◆ op_envelope_edit_fcc()

static int op_envelope_edit_fcc ( struct EnvelopeWindowData * wdata,
const struct KeyEvent * event )
static

Enter a file to save a copy of this message in - Implements envelope_function_t -.

Definition at line 223 of file functions.c.

224{
225 int rc = FR_NO_ACTION;
226 struct Buffer *fname = buf_pool_get();
227 buf_copy(fname, wdata->fcc);
228
229 struct FileCompletionData cdata = { false, NULL, NULL, NULL, NULL };
231 &CompleteMailboxOps, &cdata) != 0)
232 {
233 goto done; // aborted
234 }
235
236 if (mutt_str_equal(wdata->fcc->data, fname->data))
237 goto done; // no change
238
239 buf_copy(wdata->fcc, fname);
240 pretty_mailbox(wdata->fcc);
242 rc = FR_SUCCESS;
243
244done:
245 buf_pool_release(&fname);
246 return rc;
247}
const struct CompleteOps CompleteMailboxOps
Auto-Completion of Files / Mailboxes.
Definition complete.c:159
size_t buf_copy(struct Buffer *dst, const struct Buffer *src)
Copy a Buffer's contents to another Buffer.
Definition buffer.c:601
#define MUTT_COMP_CLEAR
Clear input if printable character is pressed.
Definition wdata.h:43
const char *const Prompts[]
Names of header fields used in the envelope, e.g. From:, To:
Definition window.c:93
@ HDR_FCC
"Fcc:" (save folder) field
Definition private.h:40
@ NT_ENVELOPE_FCC
"Fcc:" header has changed
Definition envelope.h:139
int mw_get_field(const char *prompt, struct Buffer *buf, CompletionFlags complete, enum HistoryClass hclass, const struct CompleteOps *comp_api, void *cdata)
Ask the user for a string -.
Definition window.c:270
@ HC_MAILBOX
Mailboxes.
Definition lib.h:61
bool mutt_str_equal(const char *a, const char *b)
Compare two strings.
Definition string.c:662
void pretty_mailbox(struct Buffer *buf)
Shorten a mailbox path using '~' or '='.
Definition muttlib.c:427
struct Buffer * buf_pool_get(void)
Get a Buffer from the pool.
Definition pool.c:91
void buf_pool_release(struct Buffer **ptr)
Return a Buffer to the pool.
Definition pool.c:111
String manipulation buffer.
Definition buffer.h:36
char * data
Pointer to data.
Definition buffer.h:37
struct Buffer * fcc
Where the outgoing Email will be saved.
Definition wdata.h:41
Input for the file completion function.
Definition curs_lib.h:39
+ Here is the call graph for this function:

◆ op_envelope_edit_from()

static int op_envelope_edit_from ( struct EnvelopeWindowData * wdata,
const struct KeyEvent * event )
static

Edit the from field - Implements envelope_function_t -.

Definition at line 252 of file functions.c.

253{
254 if (!edit_address_list(HDR_FROM, &wdata->email->env->from))
255 return FR_NO_ACTION;
256
257 update_crypt_info(wdata);
259 return FR_SUCCESS;
260}
@ HDR_FROM
"From:" field
Definition private.h:34
@ NT_ENVELOPE_FROM
"From:" header has changed
Definition envelope.h:141
struct AddressList from
Email's 'From' list.
Definition envelope.h:59
+ Here is the call graph for this function:

◆ op_envelope_edit_reply_to()

static int op_envelope_edit_reply_to ( struct EnvelopeWindowData * wdata,
const struct KeyEvent * event )
static

Edit the Reply-To field - Implements envelope_function_t -.

Definition at line 265 of file functions.c.

267{
269 return FR_NO_ACTION;
270
272 return FR_SUCCESS;
273}
@ HDR_REPLYTO
"Reply-To:" field
Definition private.h:39
@ NT_ENVELOPE_REPLY_TO
"Reply-To:" header has changed
Definition envelope.h:143
struct AddressList reply_to
Email's 'reply-to'.
Definition envelope.h:64
+ Here is the call graph for this function:

◆ op_envelope_edit_subject()

static int op_envelope_edit_subject ( struct EnvelopeWindowData * wdata,
const struct KeyEvent * event )
static

Edit the subject of this message - Implements envelope_function_t -.

Definition at line 278 of file functions.c.

280{
281 int rc = FR_NO_ACTION;
282 struct Buffer *buf = buf_pool_get();
283
284 buf_strcpy(buf, wdata->email->env->subject);
285 if (mw_get_field(Prompts[HDR_SUBJECT], buf, MUTT_COMP_NO_FLAGS, HC_OTHER, NULL, NULL) != 0)
286 {
287 goto done; // aborted
288 }
289
290 if (mutt_str_equal(wdata->email->env->subject, buf_string(buf)))
291 goto done; // no change
292
295 rc = FR_SUCCESS;
296
297done:
298 buf_pool_release(&buf);
299 return rc;
300}
size_t buf_strcpy(struct Buffer *buf, const char *s)
Copy a string into a Buffer.
Definition buffer.c:395
static const char * buf_string(const struct Buffer *buf)
Convert a buffer to a const char * "string".
Definition buffer.h:96
#define MUTT_COMP_NO_FLAGS
No flags are set.
Definition wdata.h:42
@ HDR_SUBJECT
"Subject:" field
Definition private.h:38
void mutt_env_set_subject(struct Envelope *env, const char *subj)
Set both subject and real_subj to subj.
Definition envelope.c:68
@ NT_ENVELOPE_SUBJECT
"Subject:" header has changed
Definition envelope.h:144
@ HC_OTHER
Miscellaneous strings.
Definition lib.h:60
char *const subject
Email's subject.
Definition envelope.h:70
+ Here is the call graph for this function:

◆ op_envelope_edit_to()

static int op_envelope_edit_to ( struct EnvelopeWindowData * wdata,
const struct KeyEvent * event )
static

Edit the TO list - Implements envelope_function_t -.

Definition at line 305 of file functions.c.

306{
307 if (wdata->is_news)
308 return FR_NO_ACTION;
309 if (!edit_address_list(HDR_TO, &wdata->email->env->to))
310 return FR_NO_ACTION;
311
312 update_crypt_info(wdata);
314 return FR_SUCCESS;
315}
@ HDR_TO
"To:" field
Definition private.h:35
@ NT_ENVELOPE_TO
"To:" header has changed
Definition envelope.h:145
struct AddressList to
Email's 'To' list.
Definition envelope.h:60
+ Here is the call graph for this function:

◆ op_compose_pgp_menu()

static int op_compose_pgp_menu ( struct EnvelopeWindowData * wdata,
const struct KeyEvent * event )
static

Show PGP options - Implements envelope_function_t -.

Definition at line 320 of file functions.c.

321{
322 const SecurityFlags old_flags = wdata->email->security;
324 return FR_NOT_IMPL;
326 {
327 mutt_error(_("No PGP backend configured"));
328 return FR_ERROR;
329 }
330 if (((WithCrypto & APPLICATION_SMIME) != 0) && (wdata->email->security & APPLICATION_SMIME))
331 {
332 if (wdata->email->security & (SEC_ENCRYPT | SEC_SIGN))
333 {
334 if (query_yesorno(_("S/MIME already selected. Clear and continue?"), MUTT_YES) != MUTT_YES)
335 {
337 return FR_NO_ACTION;
338 }
339 wdata->email->security &= ~(SEC_ENCRYPT | SEC_SIGN);
340 }
342 wdata->email->security |= APPLICATION_PGP;
343 update_crypt_info(wdata);
344 }
345 wdata->email->security = crypt_pgp_send_menu(wdata->email);
346 update_crypt_info(wdata);
347 if (wdata->email->security == old_flags)
348 return FR_NO_ACTION;
349
352 return FR_SUCCESS;
353}
@ CMD_SEND2_HOOK
:send2-hook
Definition command.h:106
bool crypt_has_module_backend(SecurityFlags type)
Is there a crypto backend for a given type?
Definition cryptglue.c:170
SecurityFlags crypt_pgp_send_menu(struct Email *e)
Wrapper for CryptModuleSpecs::send_menu()
Definition cryptglue.c:383
@ FR_ERROR
Valid function - error occurred.
Definition dispatcher.h:39
@ FR_NOT_IMPL
Invalid function - feature not enabled.
Definition dispatcher.h:37
@ NT_EMAIL_CHANGE
Email has changed.
Definition email.h:186
#define mutt_error(...)
Definition logging2.h:94
void exec_message_hook(struct Mailbox *m, struct Email *e, enum CommandId id)
Perform a message hook.
Definition exec.c:135
#define _(a)
Definition message.h:28
bool notify_send(struct Notify *notify, enum NotifyType event_type, int event_subtype, void *event_data)
Send out a notification message.
Definition notify.c:173
void mutt_clear_error(void)
Clear the message line (bottom line of screen)
uint16_t SecurityFlags
Flags, e.g. SEC_ENCRYPT.
Definition lib.h:84
#define APPLICATION_PGP
Use PGP to encrypt/sign.
Definition lib.h:98
#define APPLICATION_SMIME
Use SMIME to encrypt/sign.
Definition lib.h:99
#define SEC_ENCRYPT
Email is encrypted.
Definition lib.h:86
#define WithCrypto
Definition lib.h:124
#define SEC_SIGN
Email is signed.
Definition lib.h:87
@ NT_EMAIL
Email has changed, NotifyEmail, EventEmail.
Definition notify_type.h:44
@ MUTT_YES
User answered 'Yes', or assume 'Yes'.
Definition quad.h:39
enum QuadOption query_yesorno(const char *prompt, enum QuadOption def)
Ask the user a Yes/No question.
Definition question.c:326
SecurityFlags security
bit 0-10: flags, bit 11,12: application, bit 13: traditional pgp See: ncrypt/lib.h pgplib....
Definition email.h:43
struct Notify * notify
Notifications: NotifyEmail, EventEmail.
Definition email.h:73
+ Here is the call graph for this function:

◆ op_compose_smime_menu()

static int op_compose_smime_menu ( struct EnvelopeWindowData * wdata,
const struct KeyEvent * event )
static

Show S/MIME options - Implements envelope_function_t -.

Definition at line 358 of file functions.c.

359{
360 const SecurityFlags old_flags = wdata->email->security;
362 return FR_NOT_IMPL;
364 {
365 mutt_error(_("No S/MIME backend configured"));
366 return FR_ERROR;
367 }
368
369 if (((WithCrypto & APPLICATION_PGP) != 0) && (wdata->email->security & APPLICATION_PGP))
370 {
371 if (wdata->email->security & (SEC_ENCRYPT | SEC_SIGN))
372 {
373 if (query_yesorno(_("PGP already selected. Clear and continue?"), MUTT_YES) != MUTT_YES)
374 {
376 return FR_NO_ACTION;
377 }
378 wdata->email->security &= ~(SEC_ENCRYPT | SEC_SIGN);
379 }
382 update_crypt_info(wdata);
383 }
384 wdata->email->security = crypt_smime_send_menu(wdata->email);
385 update_crypt_info(wdata);
386 if (wdata->email->security == old_flags)
387 return FR_NO_ACTION;
388
391 return FR_SUCCESS;
392}
SecurityFlags crypt_smime_send_menu(struct Email *e)
Wrapper for CryptModuleSpecs::send_menu()
Definition cryptglue.c:527
+ Here is the call graph for this function:

◆ op_compose_autocrypt_menu()

static int op_compose_autocrypt_menu ( struct EnvelopeWindowData * wdata,
const struct KeyEvent * event )
static

Show autocrypt compose menu options - Implements envelope_function_t -.

Definition at line 398 of file functions.c.

400{
401 const SecurityFlags old_flags = wdata->email->security;
402 const bool c_autocrypt = cs_subset_bool(wdata->sub, "autocrypt");
403 if (!c_autocrypt)
404 return FR_NO_ACTION;
405
407 {
408 if (wdata->email->security & (SEC_ENCRYPT | SEC_SIGN))
409 {
410 if (query_yesorno(_("S/MIME already selected. Clear and continue?"), MUTT_YES) != MUTT_YES)
411 {
413 return FR_NO_ACTION;
414 }
415 wdata->email->security &= ~(SEC_ENCRYPT | SEC_SIGN);
416 }
418 wdata->email->security |= APPLICATION_PGP;
419 update_crypt_info(wdata);
420 }
421 autocrypt_compose_menu(wdata->email, wdata->sub);
422 update_crypt_info(wdata);
423 if (wdata->email->security == old_flags)
424 return FR_NO_ACTION;
425
428 return FR_SUCCESS;
429}
bool cs_subset_bool(const struct ConfigSubset *sub, const char *name)
Get a boolean config item by name.
Definition helpers.c:47
static void autocrypt_compose_menu(struct Email *e, const struct ConfigSubset *sub)
Autocrypt compose settings.
Definition functions.c:63
struct ConfigSubset * sub
Inherited config items.
Definition wdata.h:39
+ Here is the call graph for this function:

◆ op_envelope_edit_followup_to()

static int op_envelope_edit_followup_to ( struct EnvelopeWindowData * wdata,
const struct KeyEvent * event )
static

Edit the Followup-To field - Implements envelope_function_t -.

Definition at line 437 of file functions.c.

439{
440 if (!wdata->is_news)
441 return FR_NO_ACTION;
442
443 int rc = FR_NO_ACTION;
444 struct Buffer *buf = buf_pool_get();
445
446 buf_strcpy(buf, wdata->email->env->followup_to);
447 if (mw_get_field(Prompts[HDR_FOLLOWUPTO], buf, MUTT_COMP_NO_FLAGS, HC_OTHER, NULL, NULL) == 0)
448 {
451 rc = FR_SUCCESS;
452 }
453
454 buf_pool_release(&buf);
455 return rc;
456}
@ HDR_FOLLOWUPTO
"Followup-To:" field
Definition private.h:47
@ NT_ENVELOPE_FOLLOWUP_TO
"Followup-To:" header has changed
Definition envelope.h:140
char * mutt_str_replace(char **p, const char *s)
Replace one string with another.
Definition string.c:284
char * followup_to
List of 'followup-to' fields.
Definition envelope.h:80
+ Here is the call graph for this function:

◆ op_envelope_edit_newsgroups()

static int op_envelope_edit_newsgroups ( struct EnvelopeWindowData * wdata,
const struct KeyEvent * event )
static

Edit the newsgroups list - Implements envelope_function_t -.

Definition at line 461 of file functions.c.

463{
464 if (!wdata->is_news)
465 return FR_NO_ACTION;
466
467 int rc = FR_NO_ACTION;
468 struct Buffer *buf = buf_pool_get();
469
470 buf_strcpy(buf, wdata->email->env->newsgroups);
471 if (mw_get_field(Prompts[HDR_NEWSGROUPS], buf, MUTT_COMP_NO_FLAGS, HC_OTHER, NULL, NULL) == 0)
472 {
475 rc = FR_SUCCESS;
476 }
477
478 buf_pool_release(&buf);
479 return rc;
480}
@ HDR_NEWSGROUPS
"Newsgroups:" field
Definition private.h:46
@ NT_ENVELOPE_NEWSGROUPS
"Newsgroups:" header has changed
Definition envelope.h:142
char * newsgroups
List of newsgroups.
Definition envelope.h:78
+ Here is the call graph for this function:

◆ op_envelope_edit_x_comment_to()

static int op_envelope_edit_x_comment_to ( struct EnvelopeWindowData * wdata,
const struct KeyEvent * event )
static

Edit the X-Comment-To field - Implements envelope_function_t -.

Definition at line 485 of file functions.c.

487{
488 const bool c_x_comment_to = cs_subset_bool(wdata->sub, "x_comment_to");
489 if (!(wdata->is_news && c_x_comment_to))
490 return FR_NO_ACTION;
491
492 int rc = FR_NO_ACTION;
493 struct Buffer *buf = buf_pool_get();
494
495 buf_strcpy(buf, wdata->email->env->x_comment_to);
496 if (mw_get_field(Prompts[HDR_XCOMMENTTO], buf, MUTT_COMP_NO_FLAGS, HC_OTHER, NULL, NULL) == 0)
497 {
500 rc = FR_SUCCESS;
501 }
502
503 buf_pool_release(&buf);
504 return rc;
505}
@ HDR_XCOMMENTTO
"X-Comment-To:" field
Definition private.h:48
@ NT_ENVELOPE_X_COMMENT_TO
"X-Comment-To:" header has changed
Definition envelope.h:146
char * x_comment_to
List of 'X-comment-to' fields.
Definition envelope.h:81
+ Here is the call graph for this function: