]> granicus.if.org Git - mutt/commitdiff
This patch moves hdr_format_s from hdrline.c to curs_lib.c and renames
authorEdmund GRIMLEY EVANS <edmundo@rano.org>
Mon, 28 Aug 2000 09:38:42 +0000 (09:38 +0000)
committerEdmund GRIMLEY EVANS <edmundo@rano.org>
Mon, 28 Aug 2000 09:38:42 +0000 (09:38 +0000)
it to mutt_format_s. The function is then used in various places in
browser.c and recvattach.c where previously there was "%%%ss".

browser.c
curs_lib.c
hdrline.c
protos.h
recvattach.c

index 2f5d527a5a66e7f188e6f533d0140f05ae687cbe..0f2a7f828d980c356fc19a1690a977230872a450 100644 (file)
--- a/browser.c
+++ b/browser.c
@@ -159,14 +159,10 @@ folder_format_str (char *dest, size_t destlen, char op, const char *src,
        tnow = time (NULL);
        t_fmt = tnow - folder->ff->st->st_mtime < 31536000 ? "%b %d %H:%M" : "%b %d  %Y";
        strftime (date, sizeof (date), t_fmt, localtime (&folder->ff->st->st_mtime));
-       snprintf (tmp, sizeof (tmp), "%%%ss", fmt);
-       snprintf (dest, destlen, tmp, date);
+       mutt_format_s (dest, destlen, fmt, date);
       }
       else
-      {
-       snprintf (tmp, sizeof (tmp), "%%%ss", fmt);
-       snprintf (dest, destlen, tmp, "");
-      }
+       mutt_format_s (dest, destlen, fmt, "");
       break;
       
     case 'f':
@@ -182,8 +178,7 @@ folder_format_str (char *dest, size_t destlen, char op, const char *src,
                (S_ISDIR (folder->ff->st->st_mode) ? "/" : 
                 ((folder->ff->st->st_mode & S_IXUSR) != 0 ? "*" : "")));
       }
-      snprintf (tmp, sizeof (tmp), "%%%ss", fmt);
-      snprintf (dest, destlen, tmp, fn);
+      mutt_format_s (dest, destlen, fmt, fn);
       break;
       
     case 'F':
@@ -200,8 +195,7 @@ folder_format_str (char *dest, size_t destlen, char op, const char *src,
            (folder->ff->st->st_mode & S_IROTH) != 0 ? 'r' : '-',
            (folder->ff->st->st_mode & S_IWOTH) != 0 ? 'w' : '-',
            (folder->ff->st->st_mode & S_ISVTX) != 0 ? 't' : (folder->ff->st->st_mode & S_IXOTH) != 0 ? 'x': '-');
-       snprintf (tmp, sizeof (tmp), "%%%ss", fmt);
-       snprintf (dest, destlen, tmp, permission);
+       mutt_format_s (dest, destlen, fmt, permission);
       }
 #ifdef USE_IMAP
       else if (folder->ff->imap)
@@ -209,25 +203,18 @@ folder_format_str (char *dest, size_t destlen, char op, const char *src,
        /* mark folders with subfolders AND mail */
        sprintf (permission, "IMAP %c",
           (folder->ff->inferiors && folder->ff->selectable) ? '+' : ' ');
-       snprintf (tmp, sizeof (tmp), "%%%ss", fmt);
-       snprintf (dest, destlen, tmp, permission);
+       mutt_format_s (dest, destlen, fmt, permission);
       }                                        
 #endif
       else
-      {
-       snprintf (tmp, sizeof (tmp), "%%%ss", fmt);
-       snprintf (dest, destlen, tmp, "");
-      }
+       mutt_format_s (dest, destlen, fmt, "");
       break;
       
     case 'g':
       if (folder->ff->st != NULL)
       {
        if ((gr = getgrgid (folder->ff->st->st_gid)))
-       {
-         snprintf (tmp, sizeof (tmp), "%%%ss", fmt);
-         snprintf (dest, destlen, tmp, gr->gr_name);
-       }
+         mutt_format_s (dest, destlen, fmt, gr->gr_name);
        else
        {
          snprintf (tmp, sizeof (tmp), "%%%sld", fmt);
@@ -235,10 +222,7 @@ folder_format_str (char *dest, size_t destlen, char op, const char *src,
        }
       }
       else
-      {
-       snprintf (tmp, sizeof (tmp), "%%%ss", fmt);
-       snprintf (dest, destlen, tmp, "");
-      }
+       mutt_format_s (dest, destlen, fmt, "");
       break;
       
     case 'l':
@@ -248,10 +232,7 @@ folder_format_str (char *dest, size_t destlen, char op, const char *src,
        snprintf (dest, destlen, tmp, folder->ff->st->st_nlink);
       }
       else
-      {
-       snprintf (tmp, sizeof (tmp), "%%%ss", fmt);
-       snprintf (dest, destlen, tmp, "");
-      }
+       mutt_format_s (dest, destlen, fmt, "");
       break;
       
     case 'N':
@@ -279,10 +260,7 @@ folder_format_str (char *dest, size_t destlen, char op, const char *src,
        snprintf (dest, destlen, tmp, (long) folder->ff->st->st_size);
       }
       else
-      {
-       snprintf (tmp, sizeof (tmp), "%%%ss", fmt);
-       snprintf (dest, destlen, tmp, "");
-      }
+       mutt_format_s (dest, destlen, fmt, "");
       break;
       
     case 't':
@@ -294,10 +272,7 @@ folder_format_str (char *dest, size_t destlen, char op, const char *src,
       if (folder->ff->st != NULL)
       {
        if ((pw = getpwuid (folder->ff->st->st_uid)))
-       {
-         snprintf (tmp, sizeof (tmp), "%%%ss", fmt);
-         snprintf (dest, destlen, tmp, pw->pw_name);
-       }
+         mutt_format_s (dest, destlen, fmt, pw->pw_name);
        else
        {
          snprintf (tmp, sizeof (tmp), "%%%sld", fmt);
@@ -305,10 +280,7 @@ folder_format_str (char *dest, size_t destlen, char op, const char *src,
        }
       }
       else
-      {
-       snprintf (tmp, sizeof (tmp), "%%%ss", fmt);
-       snprintf (dest, destlen, tmp, "");
-      }
+       mutt_format_s (dest, destlen, fmt, "");
       break;
       
     default:
index 6e7f4447d6e19fead2654f016e6ca3436c520912..7947653d9b31bf271650668d6f7b2fa7d0ae68c4 100644 (file)
@@ -540,6 +540,39 @@ void mutt_format_string (char *dest, size_t destlen,
   }
 }
 
+/*
+ * This formats a string rather like
+ *   snprintf (fmt, sizeof (fmt), "%%%ss", prefix);
+ *   snprintf (dest, destlen, fmt, s);
+ * except that the numbers in the conversion specification refer to
+ * the number of character cells when printed.
+ */
+
+void mutt_format_s (char *dest,
+                   size_t destlen,
+                   const char *prefix,
+                   const char *s)
+{
+  int right_justify = 1;
+  char *p;
+  int min_width;
+  int max_width = INT_MAX;
+
+  if (*prefix == '-')
+    ++prefix, right_justify = 0;
+  min_width = strtol (prefix, &p, 10);
+  if (*p == '.')
+  {
+    prefix = p + 1;
+    max_width = strtol (prefix, &p, 10);
+    if (p <= prefix)
+      max_width = INT_MAX;
+  }
+
+  mutt_format_string (dest, destlen, min_width, max_width,
+                     right_justify, ' ', s, mutt_strlen (s));
+}
+
 /*
  * mutt_paddstr (n, s) is almost equivalent to
  * mutt_format_string (bigbuf, big, n, n, 0, ' ', s, big), addstr (bigbuf)
index d2a6f96c7244ed83ad3ff68e28c84228dfaf0fa2..9bc823012df81f50b6b1dd2dd61bffb0c3c6ac0e 100644 (file)
--- a/hdrline.c
+++ b/hdrline.c
@@ -229,31 +229,6 @@ struct hdr_format_info
   HEADER *hdr;
 };
 
-static void hdr_format_s (char *dest,
-                         size_t destlen,
-                         const char *prefix,
-                         char *s)
-{
-  int right_justify = 1;
-  char *p;
-  int min_width;
-  int max_width = INT_MAX;
-
-  if (*prefix == '-')
-    ++prefix, right_justify = 0;
-  min_width = strtol (prefix, &p, 10);
-  if (*p == '.')
-  {
-    prefix = p + 1;
-    max_width = strtol (prefix, &p, 10);
-    if (p <= prefix)
-      max_width = INT_MAX;
-  }
-
-  mutt_format_string (dest, destlen, min_width, max_width,
-                     right_justify, ' ', s, mutt_strlen (s));
-}
-
 static const char *
 hdr_format_str (char *dest,
                size_t destlen,
@@ -286,7 +261,7 @@ hdr_format_str (char *dest,
     case 'a':
       if(hdr->env->from && hdr->env->from->mailbox)
       {
-       hdr_format_s (dest, destlen, prefix, hdr->env->from->mailbox);
+       mutt_format_s (dest, destlen, prefix, hdr->env->from->mailbox);
       }
       else
         dest[0] = '\0';
@@ -299,7 +274,7 @@ hdr_format_str (char *dest,
       if (dest[0])
       {
        strfcpy (buf2, dest, sizeof(buf2));
-       hdr_format_s (dest, destlen, prefix, buf2);
+       mutt_format_s (dest, destlen, prefix, buf2);
        break;
       }
       /* fall through if 'B' returns nothing */
@@ -315,12 +290,12 @@ hdr_format_str (char *dest,
       else 
        strfcpy(dest, "(null)", destlen);
       strfcpy (buf2, dest, sizeof(buf2));
-      hdr_format_s (dest, destlen, prefix, buf2);
+      mutt_format_s (dest, destlen, prefix, buf2);
       break;
     
     case 'c':
       mutt_pretty_size (buf2, sizeof (buf2), (long) hdr->content->length);
-      hdr_format_s (dest, destlen, prefix, buf2);
+      mutt_format_s (dest, destlen, prefix, buf2);
       break;
 
     case 'C':
@@ -423,7 +398,7 @@ hdr_format_str (char *dest,
        if (do_locales)
          setlocale (LC_TIME, "C");
 
-       hdr_format_s (dest, destlen, prefix, buf2);
+       mutt_format_s (dest, destlen, prefix, buf2);
        if (len > 0 && op != 'd')
          src = cp + 1;
       }
@@ -442,21 +417,21 @@ hdr_format_str (char *dest,
     case 'f':
       buf2[0] = 0;
       rfc822_write_address (buf2, sizeof (buf2), hdr->env->from);
-      hdr_format_s (dest, destlen, prefix, buf2);
+      mutt_format_s (dest, destlen, prefix, buf2);
       break;
 
     case 'F':
       if (!optional)
       {
         make_from (hdr->env, buf2, sizeof (buf2), 0);
-       hdr_format_s (dest, destlen, prefix, buf2);
+       mutt_format_s (dest, destlen, prefix, buf2);
       }
       else if (mutt_addr_is_user (hdr->env->from))
         optional = 0;
       break;
 
     case 'i':
-      hdr_format_s (dest, destlen, prefix, hdr->env->message_id ? hdr->env->message_id : "<no.id>");
+      mutt_format_s (dest, destlen, prefix, hdr->env->message_id ? hdr->env->message_id : "<no.id>");
       break;
 
     case 'l':
@@ -476,7 +451,7 @@ hdr_format_str (char *dest,
       if (!optional)
       {
        make_from (hdr->env, buf2, sizeof (buf2), 1);
-       hdr_format_s (dest, destlen, prefix, buf2);
+       mutt_format_s (dest, destlen, prefix, buf2);
       }
       else if (!check_for_mailing_list (hdr->env->to, NULL, NULL, 0) &&
               !check_for_mailing_list (hdr->env->cc, NULL, NULL, 0))
@@ -496,7 +471,7 @@ hdr_format_str (char *dest,
       break;
 
     case 'n':
-      hdr_format_s (dest, destlen, prefix, mutt_get_name (hdr->env->from));
+      mutt_format_s (dest, destlen, prefix, mutt_get_name (hdr->env->from));
       break;
 
     case 'N':
@@ -518,7 +493,7 @@ hdr_format_str (char *dest,
        make_from_addr (hdr->env, buf2, sizeof (buf2), 1);
        if (!option (OPTSAVEADDRESS) && (p = strpbrk (buf2, "%@")))
          *p = 0;
-       hdr_format_s (dest, destlen, prefix, buf2);
+       mutt_format_s (dest, destlen, prefix, buf2);
       }
       else if (!check_for_mailing_list_addr (hdr->env->to, NULL, 0) &&
               !check_for_mailing_list_addr (hdr->env->cc, NULL, 0))
@@ -534,7 +509,7 @@ hdr_format_str (char *dest,
        if (threads && is_index && hdr->collapsed && hdr->num_hidden > 1)
          snprintf (dest, destlen, fmt, hdr->num_hidden);
        else if (is_index && threads)
-         hdr_format_s (dest, destlen, prefix, " ");
+         mutt_format_s (dest, destlen, prefix, " ");
        else
          *dest = '\0';
       }
@@ -552,13 +527,13 @@ hdr_format_str (char *dest,
        if (flags & M_FORMAT_FORCESUBJ)
        {
          snprintf (buf2, sizeof (buf2), "%s%s", hdr->tree, NONULL (hdr->env->subject));
-         hdr_format_s (dest, destlen, prefix, buf2);
+         mutt_format_s (dest, destlen, prefix, buf2);
        }
        else
-         hdr_format_s (dest, destlen, prefix, hdr->tree);
+         mutt_format_s (dest, destlen, prefix, hdr->tree);
       }
       else
-       hdr_format_s (dest, destlen, prefix, NONULL (hdr->env->subject));
+       mutt_format_s (dest, destlen, prefix, NONULL (hdr->env->subject));
       break;
 
     case 'S':
@@ -595,7 +570,7 @@ hdr_format_str (char *dest,
        else if (hdr->env->cc)
          snprintf (buf2, sizeof (buf2), "Cc %s", mutt_get_name (hdr->env->cc));
       }
-      hdr_format_s (dest, destlen, prefix, buf2);
+      mutt_format_s (dest, destlen, prefix, buf2);
       break;
 
     case 'T':
@@ -613,24 +588,24 @@ hdr_format_str (char *dest,
       }
       else
        buf2[0] = 0;
-      hdr_format_s (dest, destlen, prefix, buf2);
+      mutt_format_s (dest, destlen, prefix, buf2);
       break;
 
     case 'v':
       if (mutt_addr_is_user (hdr->env->from)) 
       {
        if (hdr->env->to)
-         hdr_format_s (buf2, sizeof (buf2), prefix, mutt_get_name (hdr->env->to));
+         mutt_format_s (buf2, sizeof (buf2), prefix, mutt_get_name (hdr->env->to));
        else if (hdr->env->cc)
-         hdr_format_s (buf2, sizeof (buf2), prefix, mutt_get_name (hdr->env->cc));
+         mutt_format_s (buf2, sizeof (buf2), prefix, mutt_get_name (hdr->env->cc));
        else
          *buf2 = 0;
       }
       else
-       hdr_format_s (buf2, sizeof (buf2), prefix, mutt_get_name (hdr->env->from));
+       mutt_format_s (buf2, sizeof (buf2), prefix, mutt_get_name (hdr->env->from));
       if ((p = strpbrk (buf2, " %@")))
        *p = 0;
-      hdr_format_s (dest, destlen, prefix, buf2);
+      mutt_format_s (dest, destlen, prefix, buf2);
       break;
 
     case 'Z':
@@ -656,14 +631,14 @@ hdr_format_str (char *dest,
                hdr->tagged ? '*' :
                (hdr->flagged ? '!' :
                 (Tochars && ((i = mutt_user_is_recipient (hdr)) < mutt_strlen (Tochars)) ? Tochars[i] : ' ')));
-      hdr_format_s (dest, destlen, prefix, buf2);
+      mutt_format_s (dest, destlen, prefix, buf2);
       break;
 
      case 'y':
        if (optional)
         optional = hdr->env->x_label ? 1 : 0;
 
-       hdr_format_s (dest, destlen, prefix, NONULL (hdr->env->x_label));
+       mutt_format_s (dest, destlen, prefix, NONULL (hdr->env->x_label));
        break;
  
     case 'Y':
@@ -688,9 +663,9 @@ hdr_format_str (char *dest,
        optional = i;
 
       if (i)
-        hdr_format_s (dest, destlen, prefix, NONULL (hdr->env->x_label));
+        mutt_format_s (dest, destlen, prefix, NONULL (hdr->env->x_label));
       else
-        hdr_format_s (dest, destlen, prefix, "");
+        mutt_format_s (dest, destlen, prefix, "");
 
       break;
       
index 9bb9122ab013cc40e3ed1501e57406a121c7630e..4d5eea433e5decd1ef83b495482fb22c3332d1cd 100644 (file)
--- a/protos.h
+++ b/protos.h
@@ -159,6 +159,7 @@ void mutt_fetchPopMail (void);
 void mutt_fix_reply_recipients (ENVELOPE *env);
 void mutt_folder_hook (char *);
 void mutt_format_string (char *, size_t, int, int, int, char, const char *, size_t);
+void mutt_format_s (char *, size_t, const char *, const char *);
 void mutt_forward_intro (FILE *fp, HEADER *cur);
 void mutt_forward_trailer (FILE *fp);
 void mutt_free_alias (ALIAS **);
index 6520b887f07bfce5e760d406b1a9b7c946f0ec97..55d624ff5cc3616742d74e5ea832f7de3f7867d9 100644 (file)
@@ -191,12 +191,11 @@ const char *mutt_attach_fmt (char *dest,
     case 'C':
       if (!optional)
       {
-       snprintf (fmt, sizeof (fmt), "%%%ss", prefix);
        if (mutt_is_text_type (aptr->content->type, aptr->content->subtype) &&
            mutt_get_body_charset (charset, sizeof (charset), aptr->content))
-         snprintf (dest, destlen, fmt, charset);
+         mutt_format_s (dest, destlen, prefix, charset);
        else
-         snprintf (dest, destlen, fmt, "");
+         mutt_format_s (dest, destlen, prefix, "");
       }
       else if (!mutt_is_text_type (aptr->content->type, aptr->content->subtype) ||
               !mutt_get_body_charset (charset, sizeof (charset), aptr->content))
@@ -216,10 +215,9 @@ const char *mutt_attach_fmt (char *dest,
     case 'd':
       if(!optional)
       {
-       snprintf (fmt, sizeof (fmt), "%%%ss", prefix);
        if (aptr->content->description)
        {
-         snprintf (dest, destlen, fmt, aptr->content->description);
+         mutt_format_s (dest, destlen, prefix, aptr->content->description);
          break;
        }
        if (mutt_is_message_type(aptr->content->type, aptr->content->subtype) &&
@@ -230,13 +228,13 @@ const char *mutt_attach_fmt (char *dest,
                             M_FORMAT_FORCESUBJ | M_FORMAT_MAKEPRINT | M_FORMAT_ARROWCURSOR);
          if (*s)
          {
-           snprintf (dest, destlen, fmt, s);
+           mutt_format_s (dest, destlen, prefix, s);
            break;
          }
        }
        if (!aptr->content->filename)
        {
-         snprintf (dest, destlen, fmt, "<no description>");
+         mutt_format_s (dest, destlen, prefix, "<no description>");
          break;
        }
       }
@@ -248,17 +246,16 @@ const char *mutt_attach_fmt (char *dest,
     case 'f':
       if(!optional)
       {
-       snprintf (fmt, sizeof (fmt), "%%%ss", prefix);
        if (aptr->content->filename && *aptr->content->filename == '/')
        {
          char path[_POSIX_PATH_MAX];
          
          strfcpy (path, aptr->content->filename, sizeof (path));
          mutt_pretty_mailbox (path);
-         snprintf (dest, destlen, fmt, path);
+         mutt_format_s (dest, destlen, prefix, path);
        }
        else
-         snprintf (dest, destlen, fmt, NONULL (aptr->content->filename));
+         mutt_format_s (dest, destlen, prefix, NONULL (aptr->content->filename));
       }
       else if(!aptr->content->filename)
         optional = 0;
@@ -271,10 +268,8 @@ const char *mutt_attach_fmt (char *dest,
       break;
     case 'e':
       if(!optional)
-      {
-       snprintf (fmt, sizeof (fmt), "%%%ss", prefix);
-       snprintf (dest, destlen, fmt, ENCODING (aptr->content->encoding));
-      }
+       mutt_format_s (dest, destlen, prefix,
+                     ENCODING (aptr->content->encoding));
       break;
     case 'I':
       if (!optional)
@@ -285,17 +280,11 @@ const char *mutt_attach_fmt (char *dest,
       break;
     case 'm':
       if(!optional)
-      {
-       snprintf (fmt, sizeof (fmt), "%%%ss", prefix);
-       snprintf (dest, destlen, fmt, TYPE (aptr->content));
-      }
+       mutt_format_s (dest, destlen, prefix, TYPE (aptr->content));
       break;
     case 'M':
       if(!optional)
-      {
-       snprintf (fmt, sizeof (fmt), "%%%ss", prefix);
-       snprintf (dest, destlen, fmt, aptr->content->subtype);
-      } 
+       mutt_format_s (dest, destlen, prefix, aptr->content->subtype);
       else if(!aptr->content->subtype)
         optional = 0;
       break;
@@ -319,8 +308,7 @@ const char *mutt_attach_fmt (char *dest,
       if(!optional)
       {
        mutt_pretty_size (tmp, sizeof(tmp), l);
-       snprintf (fmt, sizeof(fmt), "%%%ss", prefix);
-       snprintf (dest, destlen, fmt, tmp);
+       mutt_format_s (dest, destlen, prefix, tmp);
       }
       else if (l == 0)
         optional = 0;
@@ -334,10 +322,7 @@ const char *mutt_attach_fmt (char *dest,
       break;
     case 'T':
       if(!optional)
-      {
-       snprintf (fmt, sizeof(fmt), "%%%ss", prefix);
-        snprintf (dest, destlen, fmt, NONULL (aptr->tree));
-      } 
+       mutt_format_s (dest, destlen, prefix, NONULL (aptr->tree));
       else if (!aptr->tree)
         optional = 0;
       break;