]> granicus.if.org Git - neomutt/commitdiff
mutt_make_string: separate Context from Mailbox
authorRichard Russon <rich@flatcap.org>
Fri, 11 Jan 2019 14:09:58 +0000 (14:09 +0000)
committerRichard Russon <rich@flatcap.org>
Sat, 12 Jan 2019 00:52:06 +0000 (00:52 +0000)
copy.c
edit.c
hdrline.c
hdrline.h
hook.c
index.c
postpone.c
recvattach.c
recvcmd.c
send.c

diff --git a/copy.c b/copy.c
index 4beed654697aa8670970d5833a2e2ab959addd72..32966b125fa0f3d00e554fff8e041d0d41c9e0fe 100644 (file)
--- a/copy.c
+++ b/copy.c
@@ -632,7 +632,8 @@ int mutt_copy_message_fp(FILE *fpout, FILE *fpin, struct Email *e, int flags, in
     if (TextFlowed)
       mutt_str_strfcpy(prefix, ">", sizeof(prefix));
     else
-      mutt_make_string_flags(prefix, sizeof(prefix), NONULL(IndentString), Context, e, 0);
+      mutt_make_string(prefix, sizeof(prefix), NONULL(IndentString), Context,
+                       Context->mailbox, e);
   }
 
   if ((flags & MUTT_CM_NOHEADER) == 0)
diff --git a/edit.c b/edit.c
index bc2dd65496356827bbe8ad1d74c054ee651610b4..68a97da23f47e72deb493f1fdea72088b1a77871 100644 (file)
--- a/edit.c
+++ b/edit.c
@@ -226,7 +226,7 @@ static char **be_include_messages(char *msg, char **buf, int *bufmax,
       {
         setlocale(LC_TIME, NONULL(AttributionLocale));
         mutt_make_string(tmp, sizeof(tmp) - 1, Attribution, Context,
-                         Context->mailbox->emails[n]);
+                         Context->mailbox, Context->mailbox->emails[n]);
         setlocale(LC_TIME, "");
         strcat(tmp, "\n");
       }
index e9775f40f78843dff80ae74d5a82fc9d0990b58e..5488d4ce286dc333a059aa719c5ff0b22ae0d9e2 100644 (file)
--- a/hdrline.c
+++ b/hdrline.c
@@ -560,6 +560,7 @@ static const char *index_format_str(char *buf, size_t buflen, size_t col, int co
 
   struct Email *e = hfi->email;
   struct Context *ctx = hfi->ctx;
+  struct Mailbox *m = hfi->m;
 
   if (!e || !e->env)
     return src;
@@ -627,13 +628,13 @@ static const char *index_format_str(char *buf, size_t buflen, size_t col, int co
       /* fallthrough */
 
     case 'b':
-      if (ctx)
+      if (m)
       {
-        p = strrchr(ctx->mailbox->path, '/');
+        p = strrchr(m->path, '/');
         if (p)
           mutt_str_strfcpy(buf, p + 1, buflen);
         else
-          mutt_str_strfcpy(buf, ctx->mailbox->path, buflen);
+          mutt_str_strfcpy(buf, m->path, buflen);
       }
       else
         mutt_str_strfcpy(buf, "(null)", buflen);
@@ -849,16 +850,16 @@ static const char *index_format_str(char *buf, size_t buflen, size_t col, int co
 
     case 'e':
       snprintf(fmt, sizeof(fmt), "%%%sd", prec);
-      snprintf(buf, buflen, fmt, mutt_messages_in_thread(ctx->mailbox, e, 1));
+      snprintf(buf, buflen, fmt, mutt_messages_in_thread(m, e, 1));
       break;
 
     case 'E':
       if (!optional)
       {
         snprintf(fmt, sizeof(fmt), "%%%sd", prec);
-        snprintf(buf, buflen, fmt, mutt_messages_in_thread(ctx->mailbox, e, 0));
+        snprintf(buf, buflen, fmt, mutt_messages_in_thread(m, e, 0));
       }
-      else if (mutt_messages_in_thread(ctx->mailbox, e, 0) <= 1)
+      else if (mutt_messages_in_thread(m, e, 0) <= 1)
         optional = 0;
       break;
 
@@ -1019,10 +1020,10 @@ static const char *index_format_str(char *buf, size_t buflen, size_t col, int co
       break;
 
     case 'm':
-      if (ctx)
+      if (m)
       {
         snprintf(fmt, sizeof(fmt), "%%%sd", prec);
-        snprintf(buf, buflen, fmt, ctx->mailbox->msg_count);
+        snprintf(buf, buflen, fmt, m->msg_count);
       }
       else
         mutt_str_strfcpy(buf, "(null)", buflen);
@@ -1243,7 +1244,7 @@ static const char *index_format_str(char *buf, size_t buflen, size_t col, int co
 
     case 'X':
     {
-      int count = mutt_count_body_parts(ctx->mailbox, e);
+      int count = mutt_count_body_parts(m, e);
 
       /* The recursion allows messages without depth to return 0. */
       if (optional)
@@ -1447,17 +1448,19 @@ static const char *index_format_str(char *buf, size_t buflen, size_t col, int co
  * @param buf    Buffer for the result
  * @param buflen Buffer length
  * @param s      printf-line format string
- * @param ctx    Mailbox
+ * @param ctx    Mailbox Context
+ * @param m      Mailbox
  * @param e      Email
  * @param flags  Format flags
  */
-void mutt_make_string_flags(char *buf, size_t buflen, const char *s,
-                            struct Context *ctx, struct Email *e, enum FormatFlag flags)
+void mutt_make_string_flags(char *buf, size_t buflen, const char *s, struct Context *ctx,
+                            struct Mailbox *m, struct Email *e, enum FormatFlag flags)
 {
   struct HdrFormatInfo hfi;
 
   hfi.email = e;
   hfi.ctx = ctx;
+  hfi.m = m;
   hfi.pager_progress = 0;
 
   mutt_expando_format(buf, buflen, 0, MuttIndexWindow->cols, s,
index 0f706f1f258ad47b6a9bcdb4d2069fc9870f1db5..76b14753f4fd9e47adb8d588bf1d330602a24b02 100644 (file)
--- a/hdrline.h
+++ b/hdrline.h
@@ -43,15 +43,20 @@ extern struct MbTable *ToChars;
 struct HdrFormatInfo
 {
   struct Context *ctx;
+  struct Mailbox *m;
   struct Email *email;
   const char *pager_progress;
 };
 
 bool mutt_is_mail_list(struct Address *addr);
 bool mutt_is_subscribed_list(struct Address *addr);
-void mutt_make_string_flags(char *buf, size_t buflen, const char *s, struct Context *ctx, struct Email *e, enum FormatFlag flags);
-void mutt_make_string_info(char *buf, size_t buflen, int cols, const char *s, struct HdrFormatInfo *hfi, enum FormatFlag flags);
-
-#define mutt_make_string(A, B, C, D, E) mutt_make_string_flags(A, B, C, D, E, 0)
+void mutt_make_string_flags(char *buf, size_t buflen, const char *s,
+                            struct Context *ctx, struct Mailbox *m,
+                            struct Email *e, enum FormatFlag flags);
+void mutt_make_string_info(char *buf, size_t buflen, int cols, const char *s,
+                           struct HdrFormatInfo *hfi, enum FormatFlag flags);
+
+#define mutt_make_string(BUF, BUFLEN, S, CTX, M, E)                            \
+  mutt_make_string_flags(BUF, BUFLEN, S, CTX, M, E, 0)
 
 #endif /* MUTT_HDRLINE_H */
diff --git a/hook.c b/hook.c
index 9bd5bba6d0b0927467e5ac7f2657734c6d4f8d9b..def3096218c744f05dc4400a51323251debf8fe0 100644 (file)
--- a/hook.c
+++ b/hook.c
@@ -514,7 +514,8 @@ static int addr_hook(char *path, size_t pathlen, int type, struct Context *ctx,
       struct Mailbox *m = ctx ? ctx->mailbox : NULL;
       if ((mutt_pattern_exec(hook->pattern, 0, m, e, &cache) > 0) ^ hook->regex.not)
       {
-        mutt_make_string_flags(path, pathlen, hook->command, ctx, e, MUTT_FORMAT_PLAIN);
+        mutt_make_string_flags(path, pathlen, hook->command, ctx, ctx->mailbox,
+                               e, MUTT_FORMAT_PLAIN);
         return 0;
       }
     }
diff --git a/index.c b/index.c
index 728cf32244c0b4fe71c0184904867d02537b2d74..9f76869cde60880e907545e7b8367e894dc96c83 100644 (file)
--- a/index.c
+++ b/index.c
@@ -732,7 +732,8 @@ void index_make_entry(char *buf, size_t buflen, struct Menu *menu, int line)
     }
   }
 
-  mutt_make_string_flags(buf, buflen, NONULL(IndexFormat), Context, e, flag);
+  mutt_make_string_flags(buf, buflen, NONULL(IndexFormat), Context,
+                         Context->mailbox, e, flag);
 }
 
 /**
index 5c2f30ea4464689d5b458fb29f72d1721fc9c7f5..157a5e9b758e217e7b0a70ba8110c3698f6467e8 100644 (file)
@@ -201,7 +201,7 @@ static void post_make_entry(char *buf, size_t buflen, struct Menu *menu, int lin
 {
   struct Context *ctx = menu->data;
 
-  mutt_make_string_flags(buf, buflen, NONULL(IndexFormat), ctx,
+  mutt_make_string_flags(buf, buflen, NONULL(IndexFormat), ctx, ctx->mailbox,
                          ctx->mailbox->emails[line], MUTT_FORMAT_ARROWCURSOR);
 }
 
index 58894db0ef5746e07b336a1dbcc23636b7d8f825..dc102a9f9ca99ec80e9a3b285bbab29dce90e832 100644 (file)
@@ -258,7 +258,7 @@ const char *attach_format_str(char *buf, size_t buflen, size_t col, int cols,
             MessageFormat && aptr->content->email)
         {
           char s[SHORT_STRING];
-          mutt_make_string_flags(s, sizeof(s), MessageFormat, NULL,
+          mutt_make_string_flags(s, sizeof(s), MessageFormat, NULL, NULL,
                                  aptr->content->email,
                                  MUTT_FORMAT_FORCESUBJ | MUTT_FORMAT_ARROWCURSOR);
           if (*s)
index 05f1b81d33e1e5164102d7db496e751ee5d14571..6c632fa52e5619c20b901950c55182fca481ae9d 100644 (file)
--- a/recvcmd.c
+++ b/recvcmd.c
@@ -407,8 +407,8 @@ static void include_header(bool quote, FILE *ifp, struct Email *e, FILE *ofp, ch
       mutt_str_strfcpy(prefix2, prefix, sizeof(prefix2));
     else if (!TextFlowed)
     {
-      mutt_make_string_flags(prefix2, sizeof(prefix2), NONULL(IndentString),
-                             Context, e, 0);
+      mutt_make_string(prefix2, sizeof(prefix2), NONULL(IndentString), Context,
+                       Context->mailbox, e);
     }
     else
       mutt_str_strfcpy(prefix2, ">", sizeof(prefix2));
@@ -501,8 +501,8 @@ static void attach_forward_bodies(FILE *fp, struct Email *e, struct AttachCtx *a
   {
     if (!TextFlowed)
     {
-      mutt_make_string_flags(prefix, sizeof(prefix), NONULL(IndentString),
-                             Context, parent_hdr, 0);
+      mutt_make_string(prefix, sizeof(prefix), NONULL(IndentString), Context,
+                       Context->mailbox, parent_hdr);
     }
     else
       mutt_str_strfcpy(prefix, ">", sizeof(prefix));
@@ -985,8 +985,8 @@ void mutt_attach_reply(FILE *fp, struct Email *e, struct AttachCtx *actx,
 
     if (!TextFlowed)
     {
-      mutt_make_string_flags(prefix, sizeof(prefix), NONULL(IndentString),
-                             Context, parent_hdr, 0);
+      mutt_make_string(prefix, sizeof(prefix), NONULL(IndentString), Context,
+                       Context->mailbox, parent_hdr);
     }
     else
       mutt_str_strfcpy(prefix, ">", sizeof(prefix));
diff --git a/send.c b/send.c
index c27897081be4a547fe625ce3483f4fa71275dbae..c1165710fc4d55b21dd50a7fccda2d3629c7ac28 100644 (file)
--- a/send.c
+++ b/send.c
@@ -459,7 +459,7 @@ void mutt_forward_intro(struct Context *ctx, struct Email *cur, FILE *fp)
 
   char buf[LONG_STRING];
   setlocale(LC_TIME, NONULL(AttributionLocale));
-  mutt_make_string(buf, sizeof(buf), ForwardAttributionIntro, ctx, cur);
+  mutt_make_string(buf, sizeof(buf), ForwardAttributionIntro, ctx, ctx->mailbox, cur);
   setlocale(LC_TIME, "");
   fputs(buf, fp);
   fputs("\n\n", fp);
@@ -478,7 +478,7 @@ void mutt_forward_trailer(struct Context *ctx, struct Email *cur, FILE *fp)
 
   char buf[LONG_STRING];
   setlocale(LC_TIME, NONULL(AttributionLocale));
-  mutt_make_string(buf, sizeof(buf), ForwardAttributionTrailer, ctx, cur);
+  mutt_make_string(buf, sizeof(buf), ForwardAttributionTrailer, ctx, ctx->mailbox, cur);
   setlocale(LC_TIME, "");
   fputc('\n', fp);
   fputs(buf, fp);
@@ -543,7 +543,7 @@ void mutt_make_attribution(struct Context *ctx, struct Email *cur, FILE *out)
 
   char buf[LONG_STRING];
   setlocale(LC_TIME, NONULL(AttributionLocale));
-  mutt_make_string(buf, sizeof(buf), Attribution, ctx, cur);
+  mutt_make_string(buf, sizeof(buf), Attribution, ctx, ctx->mailbox, cur);
   setlocale(LC_TIME, "");
   fputs(buf, out);
   fputc('\n', out);
@@ -561,7 +561,7 @@ void mutt_make_post_indent(struct Context *ctx, struct Email *cur, FILE *out)
     return;
 
   char buf[STRING];
-  mutt_make_string(buf, sizeof(buf), PostIndentString, ctx, cur);
+  mutt_make_string(buf, sizeof(buf), PostIndentString, ctx, ctx->mailbox, cur);
   fputs(buf, out);
   fputc('\n', out);
 }
@@ -813,7 +813,7 @@ void mutt_make_forward_subject(struct Envelope *env, struct Context *ctx, struct
   char buf[STRING];
 
   /* set the default subject for the message. */
-  mutt_make_string(buf, sizeof(buf), NONULL(ForwardFormat), ctx, cur);
+  mutt_make_string(buf, sizeof(buf), NONULL(ForwardFormat), ctx, ctx->mailbox, cur);
   mutt_str_replace(&env->subject, buf);
 }