From f3e9205e821b71dfdec9b7208441e5bcf1185af0 Mon Sep 17 00:00:00 2001
From: Julius Plenz <plenz@cis.fu-berlin.de>
Date: Mon, 24 Oct 2011 16:32:35 +0200
Subject: [PATCH 01/19] applying debian/patches/mutt-patched/multiple-fcc

Signed-off-by: Julius Plenz <plenz@cis.fu-berlin.de>
---
 protos.h  |    1 +
 send.c    |    2 +-
 sendlib.c |   30 ++++++++++++++++++++++++++++++
 3 files changed, 32 insertions(+), 1 deletions(-)

diff --git a/protos.h b/protos.h
index 140dfc3..12e4969 100644
--- a/protos.h
+++ b/protos.h
@@ -362,6 +362,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 bc000a7..df65b13 100644
--- a/send.c
+++ b/send.c
@@ -1735,7 +1735,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 8297ad5..c47039c 100644
--- a/sendlib.c
+++ b/sendlib.c
@@ -2664,6 +2664,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;
-- 
1.7.7.3


