From: Edmund GRIMLEY EVANS Date: Mon, 28 Aug 2000 09:38:42 +0000 (+0000) Subject: This patch moves hdr_format_s from hdrline.c to curs_lib.c and renames X-Git-Tag: mutt-1-3-8-rel~11 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fd6c3f53f9c016155a1dcfbc1dd70fd835d336f3;p=mutt This patch moves hdr_format_s from hdrline.c to curs_lib.c and renames it to mutt_format_s. The function is then used in various places in browser.c and recvattach.c where previously there was "%%%ss". --- diff --git a/browser.c b/browser.c index 2f5d527a..0f2a7f82 100644 --- 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: diff --git a/curs_lib.c b/curs_lib.c index 6e7f4447..7947653d 100644 --- a/curs_lib.c +++ b/curs_lib.c @@ -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) diff --git a/hdrline.c b/hdrline.c index d2a6f96c..9bc82301 100644 --- 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 : ""); + mutt_format_s (dest, destlen, prefix, hdr->env->message_id ? hdr->env->message_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; diff --git a/protos.h b/protos.h index 9bb9122a..4d5eea43 100644 --- 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 **); diff --git a/recvattach.c b/recvattach.c index 6520b887..55d624ff 100644 --- a/recvattach.c +++ b/recvattach.c @@ -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, ""); + mutt_format_s (dest, destlen, prefix, ""); 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;