]> granicus.if.org Git - neomutt/commitdiff
Refactor encode_block
authorFederico Kircheis <federico.kircheis@gmail.com>
Mon, 5 Mar 2018 17:50:56 +0000 (18:50 +0100)
committerRichard Russon <rich@flatcap.org>
Mon, 5 Mar 2018 17:50:56 +0000 (18:50 +0100)
mutt/rfc2047.c

index 9e62247eecebf6186643adbbfe5c3f3c72700aa2..9c448745be45ea2129789e9da4b60cc1c7c246da 100644 (file)
@@ -285,28 +285,23 @@ static size_t try_block(const char *d, size_t dlen, const char *fromcode,
 static size_t encode_block(char *str, char *buf, size_t buflen, const char *fromcode,
                            const char *tocode, encoder_t encoder)
 {
-  char tmp[ENCWORD_LEN_MAX - ENCWORD_LEN_MIN + 1];
-  iconv_t cd;
-  const char *ib = NULL;
-  char *ob = NULL;
-  size_t ibl, obl, n1, n2;
-
-  if (fromcode)
+  if (!fromcode)
   {
-    cd = mutt_ch_iconv_open(tocode, fromcode, 0);
-    assert(cd != (iconv_t)(-1));
-    ib = buf;
-    ibl = buflen;
-    ob = tmp;
-    obl = sizeof(tmp) - strlen(tocode);
-    n1 = iconv(cd, (ICONV_CONST char **) &ib, &ibl, &ob, &obl);
-    n2 = iconv(cd, NULL, NULL, &ob, &obl);
-    assert(n1 != (size_t)(-1) && n2 != (size_t)(-1));
-    iconv_close(cd);
-    return (*encoder)(str, tmp, ob - tmp, tocode);
-  }
-  else
     return (*encoder)(str, buf, buflen, tocode);
+  }
+
+  const iconv_t cd = mutt_ch_iconv_open(tocode, fromcode, 0);
+  assert(cd != (iconv_t)(-1));
+  const char *ib = buf;
+  size_t ibl = buflen;
+  char tmp[ENCWORD_LEN_MAX - ENCWORD_LEN_MIN + 1];
+  char *ob = tmp;
+  size_t obl = sizeof(tmp) - strlen(tocode);
+  const size_t n1 = iconv(cd, (ICONV_CONST char **) &ib, &ibl, &ob, &obl);
+  const size_t n2 = iconv(cd, NULL, NULL, &ob, &obl);
+  assert(n1 != (size_t)(-1) && n2 != (size_t)(-1));
+  iconv_close(cd);
+  return (*encoder)(str, tmp, ob - tmp, tocode);
 }
 
 /**