-void mutt_pretty_size (char *s, ssize_t len, long n)
-{
- if (n == 0)
- m_strcpy(s, len, "0K");
- else if (n < 10189) /* 0.1K - 9.9K */
- snprintf (s, len, "%3.1fK", (n < 103) ? 0.1 : n / 1024.0);
- else if (n < 1023949) { /* 10K - 999K */
- /* 51 is magic which causes 10189/10240 to be rounded up to 10 */
- snprintf (s, len, "%ldK", (n + 51) / 1024);
- }
- else if (n < 10433332) /* 1.0M - 9.9M */
- snprintf (s, len, "%3.1fM", n / 1048576.0);
- else { /* 10M+ */
-
- /* (10433332 + 52428) / 1048576 = 10 */
- snprintf (s, len, "%ldM", (n + 52428) / 1048576);
- }
-}
-
-void mutt_expand_file_fmt(char *dest, ssize_t destlen,
- const char *fmt, const char *src)
-{
- char tmp[LONG_STRING];
-
- mutt_quote_filename(tmp, sizeof(tmp), src);
- mutt_expand_fmt(dest, destlen, fmt, tmp);
-}
-
-void mutt_expand_fmt(char *dst, ssize_t dlen,
- const char *fmt, const char *src)
-{
- ssize_t pos = 0;
- int found = 0;
-
- while (*fmt && pos < dlen - 1) {
- if (*fmt == '%') {
- switch (*++fmt) {
- case 's':
- found = 1;
- pos += m_strcpy(dst + pos, dlen - pos, src);
- break;
-
- case '%':
- dst[pos++] = *fmt++;
- break;
-
- default:
- dst[pos++] = '%';
- break;
- }
- } else {
- dst[pos++] = *fmt++;
- }
- }
-
- dst[pos] = '\0';
- if (!found) {
- pos += m_strcpy(dst + pos, dlen - pos, " ");
- pos += m_strcpy(dst + pos, dlen - pos, src);
- }
-}
-