1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
From: Antonio Radici <antonio@debian.org>
Date: Tue, 4 Mar 2014 15:40:45 +0100
Subject: multiple-fcc
A patch that allows multiple FCC separated by commas,
written by Omen Wild.
Original website: http://www.mandarb.com/mutt/
Bug asking for the inclusion: #586454
Gbp-Pq: Topic mutt-patched
---
protos.h | 1 +
send.c | 2 +-
sendlib.c | 30 ++++++++++++++++++++++++++++++
3 files changed, 32 insertions(+), 1 deletion(-)
diff --git a/protos.h b/protos.h
index 799ac9b..5d2fafb 100644
--- a/protos.h
+++ b/protos.h
@@ -364,6 +364,7 @@ int mutt_user_is_recipient (HEADER *);
void mutt_update_num_postponed (void);
int mutt_wait_filter (pid_t);
int mutt_which_case (const char *);
+int mutt_write_multiple_fcc (const char *path, HEADER *hdr, const char *msgid, int, char *);
int mutt_write_fcc (const char *path, HEADER *hdr, const char *msgid, int, char *);
int mutt_write_mime_body (BODY *, FILE *);
int mutt_write_mime_header (BODY *, FILE *);
diff --git a/send.c b/send.c
index 6dd26c0..0b45171 100644
--- a/send.c
+++ b/send.c
@@ -1810,7 +1810,7 @@ full_fcc:
* message was first postponed.
*/
msg->received = time (NULL);
- if (mutt_write_fcc (fcc, msg, NULL, 0, NULL) == -1)
+ if (mutt_write_multiple_fcc (fcc, msg, NULL, 0, NULL) == -1)
{
/*
* Error writing FCC, we should abort sending.
diff --git a/sendlib.c b/sendlib.c
index 689a112..2144156 100644
--- a/sendlib.c
+++ b/sendlib.c
@@ -2687,6 +2687,36 @@ static void set_noconv_flags (BODY *b, short flag)
}
}
+/* Handle a Fcc with multiple, comma separated entries. */
+int mutt_write_multiple_fcc (const char *path, HEADER *hdr, const char *msgid, int post, char *fcc) {
+ char fcc_tok[_POSIX_PATH_MAX];
+ char fcc_expanded[_POSIX_PATH_MAX];
+ char *tok = NULL;
+ int status;
+
+ strfcpy(fcc_tok, path, _POSIX_PATH_MAX);
+
+ tok = strtok(fcc_tok, ",");
+ dprint(1, (debugfile, "Fcc: initial mailbox = '%s'\n", tok));
+ /* mutt_expand_path already called above for the first token */
+ if((status = mutt_write_fcc (tok, hdr, NULL, 0, NULL)) != 0)
+ return status;
+
+ while((tok = strtok(NULL, ",")) != NULL) {
+ if(*tok) {
+ /* Only call mutt_expand_path iff tok has some data */
+ dprint(1, (debugfile, "Fcc: additional mailbox token = '%s'\n", tok));
+ strfcpy(fcc_expanded, tok, sizeof(fcc_expanded));
+ mutt_expand_path(fcc_expanded, sizeof(fcc_expanded));
+ dprint(1, (debugfile, " Additional mailbox expanded = '%s'\n", fcc_expanded));
+ if((status = mutt_write_fcc (fcc_expanded, hdr, NULL, 0, NULL)) != 0)
+ return status;
+ }
+ }
+
+ return 0;
+}
+
int mutt_write_fcc (const char *path, HEADER *hdr, const char *msgid, int post, char *fcc)
{
CONTEXT f;
|