]> granicus.if.org Git - neomutt/commitdiff
move Attach, AttachCtx to library
authorRichard Russon <rich@flatcap.org>
Tue, 3 Jul 2018 16:25:09 +0000 (17:25 +0100)
committerRichard Russon <rich@flatcap.org>
Mon, 16 Jul 2018 21:24:00 +0000 (22:24 +0100)
14 files changed:
Makefile.autosetup
browser.c
compose.c
mutt/attach.c [new file with mode: 0644]
mutt/attach.h [moved from attach.h with 60% similarity]
mutt/mutt.h
mutt_attach.c [moved from attach.c with 93% similarity]
mutt_attach.h [new file with mode: 0644]
pager.c
po/POTFILES.in
recvattach.c
recvattach.h [new file with mode: 0644]
recvcmd.c
recvcmd.h [new file with mode: 0644]

index aa2ace9175686665da1a045be4bc2bda0bc51f9b..dbbb43f7f12d17743b8980d422c44fcaa05cdd7f 100644 (file)
@@ -61,12 +61,12 @@ ALL_FILES!= (cd $(SRCDIR) && git ls-files 2>/dev/null) || true
 ###############################################################################
 # neomutt
 NEOMUTT=       neomutt$(EXEEXT)
-NEOMUTTOBJS=   addrbook.o alias.o attach.o bcache.o browser.o buffy.o \
+NEOMUTTOBJS=   addrbook.o alias.o bcache.o browser.o buffy.o \
                color.o commands.o complete.o compose.o compress.o \
                conststrings.o copy.o curs_lib.o curs_main.o edit.o editmsg.o \
                enriched.o enter.o filter.o flags.o from.o group.o handler.o \
                hdrline.o header.o help.o history.o hook.o init.o keymap.o \
-               main.o mbox.o menu.o mh.o muttlib.o mutt_account.o mutt_body.o \
+               main.o mbox.o menu.o mh.o muttlib.o mutt_account.o mutt_attach.o mutt_body.o \
                mutt_logging.o mutt_signal.o mutt_socket.o mutt_window.o mx.o newsrc.o \
                nntp.o pager.o parse.o pattern.o pop.o pop_auth.o pop_lib.o \
                postpone.o progress.o query.o recvattach.o recvcmd.o resize.o rfc1524.o \
@@ -92,7 +92,7 @@ ALLOBJS+=     $(NEOMUTTOBJS)
 ###############################################################################
 # libmutt
 LIBMUTT=       libmutt.a
-LIBMUTTOBJS=   mutt/address.o mutt/base64.o mutt/body.o mutt/buffer.o mutt/charset.o \
+LIBMUTTOBJS=   mutt/address.o mutt/attach.o mutt/base64.o mutt/body.o mutt/buffer.o mutt/charset.o \
                mutt/date.o mutt/envelope.o mutt/envlist.o mutt/exit.o mutt/file.o mutt/hash.o \
                mutt/idna.o mutt/list.o mutt/logging.o mutt/mapping.o \
                mutt/mbyte.o mutt/md5.o mutt/memory.o mutt/mime.o \
index 93c3198bd5e99222156b5aa0005e0a40343ed2ab..a929e5dfda40795933410b8f2b7ef9bc0666011f 100644 (file)
--- a/browser.c
+++ b/browser.c
@@ -39,7 +39,6 @@
 #include "conn/conn.h"
 #include "mutt.h"
 #include "browser.h"
-#include "attach.h"
 #include "buffy.h"
 #include "context.h"
 #include "format_flags.h"
@@ -47,6 +46,7 @@
 #include "keymap.h"
 #include "mailbox.h"
 #include "mutt_account.h"
+#include "mutt_attach.h"
 #include "mutt_curses.h"
 #include "mutt_menu.h"
 #include "mutt_window.h"
index b565108096e834e63aebedb922dddb00f6def991..42990b37986fa306948346efb17980ce9d06a78a 100644 (file)
--- a/compose.c
+++ b/compose.c
 #include "conn/conn.h"
 #include "mutt.h"
 #include "alias.h"
-#include "attach.h"
 #include "context.h"
 #include "format_flags.h"
 #include "globals.h"
 #include "header.h"
 #include "keymap.h"
 #include "mailbox.h"
+#include "mutt_attach.h"
 #include "mutt_curses.h"
 #include "mutt_menu.h"
 #include "mutt_window.h"
@@ -48,6 +48,7 @@
 #include "opcodes.h"
 #include "options.h"
 #include "protos.h"
+#include "recvattach.h"
 #include "sort.h"
 #ifdef MIXMASTER
 #include "remailer.h"
@@ -1940,7 +1941,7 @@ int mutt_compose_menu(struct Header *msg, char *fcc, size_t fcclen,
   else
     msg->content = NULL;
 
-  mutt_free_attach_context(&actx);
+  mutt_actx_free(&actx);
 
   return r;
 }
diff --git a/mutt/attach.c b/mutt/attach.c
new file mode 100644 (file)
index 0000000..5f697e6
--- /dev/null
@@ -0,0 +1,142 @@
+/**
+ * @file
+ * Handling of email attachments
+ *
+ * @authors
+ * Copyright (C) 1996-2000,2002,2013 Michael R. Elkins <me@mutt.org>
+ * Copyright (C) 1999-2004,2006 Thomas Roessler <roessler@does-not-exist.org>
+ *
+ * @copyright
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 2 of the License, or (at your option) any later
+ * version.
+ *
+ * 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/>.
+ */
+
+/**
+ * @page attach Handling of email attachments
+ *
+ * Handling of email attachments
+ */
+
+#include "config.h"
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include "attach.h"
+#include "body.h"
+#include "file.h"
+#include "memory.h"
+
+/**
+ * mutt_actx_add_attach - Add an Attachment to an Attachment Context
+ * @param actx   Attachment context
+ * @param attach Attachment to add
+ */
+void mutt_actx_add_attach(struct AttachCtx *actx, struct AttachPtr *attach)
+{
+  if (actx->idxlen == actx->idxmax)
+  {
+    actx->idxmax += 5;
+    mutt_mem_realloc(&actx->idx, sizeof(struct AttachPtr *) * actx->idxmax);
+    mutt_mem_realloc(&actx->v2r, sizeof(short) * actx->idxmax);
+    for (int i = actx->idxlen; i < actx->idxmax; i++)
+      actx->idx[i] = NULL;
+  }
+
+  actx->idx[actx->idxlen++] = attach;
+}
+
+/**
+ * mutt_actx_add_fp - Save a File handle to the Attachment Context 
+ * @param actx   Attachment context
+ * @param new_fp File handle to save
+ */
+void mutt_actx_add_fp(struct AttachCtx *actx, FILE *new_fp)
+{
+  if (actx->fp_len == actx->fp_max)
+  {
+    actx->fp_max += 5;
+    mutt_mem_realloc(&actx->fp_idx, sizeof(FILE *) * actx->fp_max);
+    for (int i = actx->fp_len; i < actx->fp_max; i++)
+      actx->fp_idx[i] = NULL;
+  }
+
+  actx->fp_idx[actx->fp_len++] = new_fp;
+}
+
+/**
+ * mutt_actx_add_body - Add an email box to an Attachment Context
+ * @param actx     Attachment context
+ * @param new_body Email Body to add
+ */
+void mutt_actx_add_body(struct AttachCtx *actx, struct Body *new_body)
+{
+  if (actx->body_len == actx->body_max)
+  {
+    actx->body_max += 5;
+    mutt_mem_realloc(&actx->body_idx, sizeof(struct Body *) * actx->body_max);
+    for (int i = actx->body_len; i < actx->body_max; i++)
+      actx->body_idx[i] = NULL;
+  }
+
+  actx->body_idx[actx->body_len++] = new_body;
+}
+
+/**
+ * mutt_actx_free_entries - Free entries in an Attachment Context
+ * @param actx Attachment context
+ */
+void mutt_actx_free_entries(struct AttachCtx *actx)
+{
+  int i;
+
+  for (i = 0; i < actx->idxlen; i++)
+  {
+    if (actx->idx[i]->content)
+      actx->idx[i]->content->aptr = NULL;
+    FREE(&actx->idx[i]->tree);
+    FREE(&actx->idx[i]);
+  }
+  actx->idxlen = 0;
+  actx->vcount = 0;
+
+  for (i = 0; i < actx->fp_len; i++)
+    mutt_file_fclose(&actx->fp_idx[i]);
+  actx->fp_len = 0;
+
+  for (i = 0; i < actx->body_len; i++)
+    mutt_body_free(&actx->body_idx[i]);
+  actx->body_len = 0;
+}
+
+/**
+ * mutt_actx_free - Free an Attachment Context
+ * @param pactx Attachment context
+ */
+void mutt_actx_free(struct AttachCtx **pactx)
+{
+  struct AttachCtx *actx = NULL;
+
+  if (!pactx || !*pactx)
+    return;
+
+  actx = *pactx;
+  mutt_actx_free_entries(actx);
+  FREE(&actx->idx);
+  FREE(&actx->v2r);
+  FREE(&actx->fp_idx);
+  FREE(&actx->body_idx);
+  FREE(pactx);
+}
similarity index 60%
rename from attach.h
rename to mutt/attach.h
index 5f5063f598c7df5db51b737ee151e76fa0b5b8d0..42c5e04466a6d98dd3b9e6d4e83958bab846bd90 100644 (file)
--- a/attach.h
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-/* common protos for compose / attach menus */
-
 #ifndef _MUTT_ATTACH_H
 #define _MUTT_ATTACH_H
 
 #include <stdbool.h>
 #include <stdio.h>
 
-struct Menu;
 struct Header;
 struct Body;
 
@@ -71,33 +68,10 @@ struct AttachCtx
   short body_max;
 };
 
-void mutt_attach_init(struct AttachCtx *actx);
-void mutt_update_tree(struct AttachCtx *actx);
-int mutt_view_attachment(FILE *fp, struct Body *a, int flag, struct Header *hdr,
-                         struct AttachCtx *actx);
-
-int mutt_tag_attach(struct Menu *menu, int n, int m);
-int mutt_attach_display_loop(struct Menu *menu, int op, struct Header *hdr,
-                             struct AttachCtx *actx, bool recv);
-
-void mutt_save_attachment_list(struct AttachCtx *actx, FILE *fp, bool tag,
-                               struct Body *top, struct Header *hdr, struct Menu *menu);
-void mutt_pipe_attachment_list(struct AttachCtx *actx, FILE *fp, bool tag,
-                               struct Body *top, bool filter);
-void mutt_print_attachment_list(struct AttachCtx *actx, FILE *fp, bool tag,
-                                struct Body *top);
-
-void mutt_attach_bounce(FILE *fp, struct AttachCtx *actx, struct Body *cur);
-void mutt_attach_resend(FILE *fp, struct AttachCtx *actx, struct Body *cur);
-void mutt_attach_forward(FILE *fp, struct Header *hdr, struct AttachCtx *actx,
-                         struct Body *cur, int flags);
-void mutt_attach_reply(FILE *fp, struct Header *hdr, struct AttachCtx *actx,
-                       struct Body *cur, int flags);
-
 void mutt_actx_add_attach(struct AttachCtx *actx, struct AttachPtr *attach);
-void mutt_actx_add_fp(struct AttachCtx *actx, FILE *new_fp);
 void mutt_actx_add_body(struct AttachCtx *actx, struct Body *new_body);
+void mutt_actx_add_fp(struct AttachCtx *actx, FILE *new_fp);
+void mutt_actx_free(struct AttachCtx **pactx);
 void mutt_actx_free_entries(struct AttachCtx *actx);
-void mutt_free_attach_context(struct AttachCtx **pactx);
 
 #endif /* _MUTT_ATTACH_H */
index 841abb4acad20b6ea505468b229e9c6b068c8cb7..75dbe02c9f32ce4680207f8a4938ec986db93984 100644 (file)
@@ -28,6 +28,7 @@
  * | File             | Description        |
  * | :--------------- | :----------------- |
  * | mutt/address.c   | @subpage address   |
+ * | mutt/attach.c    | @subpage attach    |
  * | mutt/base64.c    | @subpage base64    |
  * | mutt/body.c      | @subpage base64    |
  * | mutt/buffer.c    | @subpage buffer    |
@@ -61,6 +62,7 @@
 #define _MUTT_MUTT_H
 
 #include "address.h"
+#include "attach.h"
 #include "base64.h"
 #include "body.h"
 #include "buffer.h"
similarity index 93%
rename from attach.c
rename to mutt_attach.c
index 1a88a8c17153082cbdc8ce4adfb39405f2947e55..349d238b96e26015641d090f129aba3235bafddd 100644 (file)
--- a/attach.c
@@ -28,9 +28,6 @@
 #include <string.h>
 #include <sys/stat.h>
 #include <unistd.h>
-#include "mutt/mutt.h"
-#include "mutt.h"
-#include "attach.h"
 #include "context.h"
 #include "copy.h"
 #include "filter.h"
@@ -41,7 +38,6 @@
 #include "mutt_curses.h"
 #include "mx.h"
 #include "ncrypt/ncrypt.h"
-#include "options.h"
 #include "pager.h"
 #include "protos.h"
 #include "rfc1524.h"
@@ -1121,82 +1117,3 @@ int mutt_print_attachment(FILE *fp, struct Body *a)
     return 0;
   }
 }
-
-void mutt_actx_add_attach(struct AttachCtx *actx, struct AttachPtr *attach)
-{
-  if (actx->idxlen == actx->idxmax)
-  {
-    actx->idxmax += 5;
-    mutt_mem_realloc(&actx->idx, sizeof(struct AttachPtr *) * actx->idxmax);
-    mutt_mem_realloc(&actx->v2r, sizeof(short) * actx->idxmax);
-    for (int i = actx->idxlen; i < actx->idxmax; i++)
-      actx->idx[i] = NULL;
-  }
-
-  actx->idx[actx->idxlen++] = attach;
-}
-
-void mutt_actx_add_fp(struct AttachCtx *actx, FILE *new_fp)
-{
-  if (actx->fp_len == actx->fp_max)
-  {
-    actx->fp_max += 5;
-    mutt_mem_realloc(&actx->fp_idx, sizeof(FILE *) * actx->fp_max);
-    for (int i = actx->fp_len; i < actx->fp_max; i++)
-      actx->fp_idx[i] = NULL;
-  }
-
-  actx->fp_idx[actx->fp_len++] = new_fp;
-}
-
-void mutt_actx_add_body(struct AttachCtx *actx, struct Body *new_body)
-{
-  if (actx->body_len == actx->body_max)
-  {
-    actx->body_max += 5;
-    mutt_mem_realloc(&actx->body_idx, sizeof(struct Body *) * actx->body_max);
-    for (int i = actx->body_len; i < actx->body_max; i++)
-      actx->body_idx[i] = NULL;
-  }
-
-  actx->body_idx[actx->body_len++] = new_body;
-}
-
-void mutt_actx_free_entries(struct AttachCtx *actx)
-{
-  int i;
-
-  for (i = 0; i < actx->idxlen; i++)
-  {
-    if (actx->idx[i]->content)
-      actx->idx[i]->content->aptr = NULL;
-    FREE(&actx->idx[i]->tree);
-    FREE(&actx->idx[i]);
-  }
-  actx->idxlen = 0;
-  actx->vcount = 0;
-
-  for (i = 0; i < actx->fp_len; i++)
-    mutt_file_fclose(&actx->fp_idx[i]);
-  actx->fp_len = 0;
-
-  for (i = 0; i < actx->body_len; i++)
-    mutt_body_free(&actx->body_idx[i]);
-  actx->body_len = 0;
-}
-
-void mutt_free_attach_context(struct AttachCtx **pactx)
-{
-  struct AttachCtx *actx = NULL;
-
-  if (!pactx || !*pactx)
-    return;
-
-  actx = *pactx;
-  mutt_actx_free_entries(actx);
-  FREE(&actx->idx);
-  FREE(&actx->v2r);
-  FREE(&actx->fp_idx);
-  FREE(&actx->body_idx);
-  FREE(pactx);
-}
diff --git a/mutt_attach.h b/mutt_attach.h
new file mode 100644 (file)
index 0000000..6910582
--- /dev/null
@@ -0,0 +1,50 @@
+/**
+ * @file
+ * Handling of email attachments
+ *
+ * @authors
+ * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>
+ *
+ * @copyright
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 2 of the License, or (at your option) any later
+ * version.
+ *
+ * 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/>.
+ */
+
+/* common protos for compose / attach menus */
+
+#ifndef _MUTT_ATTACH2_H
+#define _MUTT_ATTACH2_H
+
+#include "config.h"
+#include <stdbool.h>
+#include <stdio.h>
+#include "mutt/mutt.h"
+
+struct Menu;
+struct Header;
+struct Body;
+
+int mutt_tag_attach(struct Menu *menu, int n, int m);
+int mutt_attach_display_loop(struct Menu *menu, int op, struct Header *hdr,
+                             struct AttachCtx *actx, bool recv);
+
+void mutt_save_attachment_list(struct AttachCtx *actx, FILE *fp, bool tag,
+                               struct Body *top, struct Header *hdr, struct Menu *menu);
+void mutt_pipe_attachment_list(struct AttachCtx *actx, FILE *fp, bool tag,
+                               struct Body *top, bool filter);
+void mutt_print_attachment_list(struct AttachCtx *actx, FILE *fp, bool tag,
+                                struct Body *top);
+
+int mutt_view_attachment(FILE *fp, struct Body *a, int flag, struct Header *hdr, struct AttachCtx *actx);
+
+#endif /* _MUTT_ATTACH2_H */
diff --git a/pager.c b/pager.c
index ea7a640f8a94a13c8769f68c8052b76ab6643940..c6eda5ed2a1ea78ed29ae214b8a1953168e908c1 100644 (file)
--- a/pager.c
+++ b/pager.c
 #include "mutt.h"
 #include "pager.h"
 #include "alias.h"
-#include "attach.h"
 #include "context.h"
 #include "format_flags.h"
 #include "globals.h"
 #include "header.h"
 #include "keymap.h"
 #include "mailbox.h"
+#include "mutt_attach.h"
 #include "mutt_curses.h"
 #include "mutt_menu.h"
 #include "mutt_window.h"
@@ -51,6 +51,7 @@
 #include "opcodes.h"
 #include "options.h"
 #include "protos.h"
+#include "recvcmd.h"
 #include "sort.h"
 #include "terminal.h"
 #ifdef USE_SIDEBAR
index aadfcbd49c9e572f7f4eb4d5cd9deb0ea316bac0..6f5afc0834415784901a92fb37561e9cffdf1175 100644 (file)
@@ -1,6 +1,5 @@
 addrbook.c
 alias.c
-attach.c
 bcache.c
 browser.c
 buffy.c
@@ -62,6 +61,7 @@ mbox.c
 menu.c
 mh.c
 mutt/address.c
+mutt/attach.c
 mutt/base64.c
 mutt/body.c
 mutt/buffer.c
@@ -87,6 +87,7 @@ mutt/sha1.c
 mutt/signal.c
 mutt/string.c
 mutt_account.c
+mutt_attach.c
 mutt_body.c
 mutt_logging.c
 mutt_lua.c
index e095ac14824ebf0d38d7eeb8d56464b3367f42b8..6fa766047c8f28ae1e728718621e4b1cdd2d86d8 100644 (file)
@@ -30,7 +30,6 @@
 #include <unistd.h>
 #include "mutt/mutt.h"
 #include "mutt.h"
-#include "attach.h"
 #include "context.h"
 #include "filter.h"
 #include "format_flags.h"
@@ -39,6 +38,7 @@
 #include "header.h"
 #include "keymap.h"
 #include "mailbox.h"
+#include "mutt_attach.h"
 #include "mutt_curses.h"
 #include "mutt_menu.h"
 #include "mutt_window.h"
@@ -47,6 +47,7 @@
 #include "opcodes.h"
 #include "options.h"
 #include "protos.h"
+#include "recvcmd.h"
 #include "rfc1524.h"
 #include "state.h"
 
@@ -1580,7 +1581,7 @@ void mutt_view_attachments(struct Header *hdr)
         if (hdr->attach_del)
           hdr->changed = true;
 
-        mutt_free_attach_context(&actx);
+        mutt_actx_free(&actx);
 
         mutt_menu_pop_current(menu);
         mutt_menu_destroy(&menu);
diff --git a/recvattach.h b/recvattach.h
new file mode 100644 (file)
index 0000000..62a84c0
--- /dev/null
@@ -0,0 +1,30 @@
+/**
+ * @file
+ * Routines for managing attachments
+ *
+ * @authors
+ * Copyright (C) 1996-2000,2002,2007,2010 Michael R. Elkins <me@mutt.org>
+ * Copyright (C) 1999-2006 Thomas Roessler <roessler@does-not-exist.org>
+ *
+ * @copyright
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 2 of the License, or (at your option) any later
+ * version.
+ *
+ * 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/>.
+ */
+
+#ifndef _MUTT_RECVATTACH_H
+#define _MUTT_RECVATTACH_H
+
+void mutt_attach_init(struct AttachCtx *actx);
+void mutt_update_tree(struct AttachCtx *actx);
+
+#endif /* _MUTT_RECVATTACH_H */
index 400c2daf6d73db09f367b92885cfdc6f26b53fa0..94f70c16b22f2ae54a65813bfc10065d9af28b39 100644 (file)
--- a/recvcmd.c
+++ b/recvcmd.c
@@ -28,7 +28,6 @@
 #include "mutt/mutt.h"
 #include "mutt.h"
 #include "alias.h"
-#include "attach.h"
 #include "copy.h"
 #include "globals.h"
 #include "handler.h"
diff --git a/recvcmd.h b/recvcmd.h
new file mode 100644 (file)
index 0000000..55e459e
--- /dev/null
+++ b/recvcmd.h
@@ -0,0 +1,31 @@
+/**
+ * @file
+ * Send/reply with an attachment
+ *
+ * @authors
+ * Copyright (C) 1999-2004 Thomas Roessler <roessler@does-not-exist.org>
+ *
+ * @copyright
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 2 of the License, or (at your option) any later
+ * version.
+ *
+ * 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/>.
+ */
+
+#ifndef _MUTT_RECVCMD_H
+#define _MUTT_RECVCMD_H
+
+void mutt_attach_bounce(FILE *fp, struct AttachCtx *actx, struct Body *cur);
+void mutt_attach_resend(FILE *fp, struct AttachCtx *actx, struct Body *cur);
+void mutt_attach_forward(FILE *fp, struct Header *hdr, struct AttachCtx *actx, struct Body *cur, int flags);
+void mutt_attach_reply(FILE *fp, struct Header *hdr, struct AttachCtx *actx, struct Body *cur, int flags);
+
+#endif /* _MUTT_RECVCMD_H */