X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=muttlib.c;h=57fabf38db0972c2732fc829e972c899b08601ac;hp=9c108b730da64dfc32d73a7157624d2b6a2ab4b1;hb=7d29626ce4e1fa932c6349c7253e6f774df069fc;hpb=3242c00b2d3f7f1c1554bcebfb8a390fddea095f diff --git a/muttlib.c b/muttlib.c index 9c108b7..57fabf3 100644 --- a/muttlib.c +++ b/muttlib.c @@ -13,24 +13,16 @@ #include #include -#include #include #include #include -#include +#include #include "alias.h" #include "mutt.h" #include "attach.h" - #include "version.h" -#include - -#include - -#define SW (option(OPTMBOXPANE)?SidebarWidth:0) - /* Modified by blong to accept a "suggestion" for file name. If * that file exists, then construct one with unique name but * keep any extension. This might fail, I guess. @@ -50,15 +42,15 @@ void mutt_adv_mktemp (const char* dir, char *s, ssize_t l) } } -/* returns true if the header contained in "s" is in list "t" */ -int mutt_matches_ignore (const char *s, string_list_t * t) +void mutt_mktemp(char *s) { - for (; t; t = t->next) { - if (!ascii_strncasecmp (s, t->data, m_strlen(t->data)) - || *t->data == '*') - return 1; - } - return 0; + int fd = m_tempfd(s, _POSIX_PATH_MAX, NONULL(Tempdir), NULL); + if (fd < 0) { + *s = '\0'; + } else { + close(fd); + unlink(s); + } } ssize_t _mutt_expand_path(char *s, ssize_t slen, int rx) @@ -170,17 +162,6 @@ ssize_t _mutt_expand_path(char *s, ssize_t slen, int rx) return m_strcpy(s, slen, tmp); } -void mutt_mktemp(char *s) -{ - int fd = m_tempfd(s, _POSIX_PATH_MAX, NONULL(Tempdir), NULL); - if (fd < 0) { - *s = '\0'; - } else { - close(fd); - unlink(s); - } -} - /* collapse the pathname using ~ or = when possible */ void mutt_pretty_mailbox (char *s) { @@ -328,138 +309,6 @@ void mutt_safe_path(char *s, ssize_t l, address_t *a) } } -ssize_t m_strformat(char *dst, ssize_t dlen, const char *fmt, - format_t *callback, unsigned long data, format_flag flags) -{ - ssize_t pos = flags & M_FORMAT_ARROWCURSOR ? 3 : 0; - - while (*fmt) { - char ifstring[STRING], elsestring[STRING], prefix[STRING] = ""; - int ch; - - if (*fmt == '%') { - if (*++fmt == '%') { - pos += m_strputc(dst + pos, dlen - pos, *fmt++); - continue; - } - - if (*fmt == '?') { - flags |= M_FORMAT_OPTIONAL; - fmt++; - } else { - ssize_t pfxlen; - flags &= ~M_FORMAT_OPTIONAL; - - /* eat the format string */ - pfxlen = strspn(fmt, "0123456789.-"); - m_strncpy(prefix, sizeof(prefix), fmt, pfxlen); - fmt += pfxlen; - } - - /* save the character to switch on */ - if (!(ch = *fmt++)) - break; - - if (flags & M_FORMAT_OPTIONAL) { - ssize_t iflen; - const char *p; - - if (*fmt++ != '?') - break; /* bad format */ - - /* eat the `if' part of the string */ - iflen = strcspn(fmt, "?&"); - m_strncpy(ifstring, ssizeof(ifstring), fmt, iflen); - fmt += iflen; - - /* eat the `else' part of the string (optional) */ - if (*fmt == '&') - fmt++; /* skip the & */ - - p = m_strchrnul(fmt, '?'); - m_strncpy(elsestring, ssizeof(elsestring), fmt, p - fmt); - fmt = p; - - if (!*fmt++) /* move past the trailing `?' */ - break; /* bad format */ - } else { - *ifstring = *elsestring = '\0'; - } - - switch (ch) { - ssize_t col; - char lower, nodots, buf[LONG_STRING]; - - case '>': /* right justify to EOL */ - col = mutt_strwidth(dst); - - ch = *fmt++; /* pad char */ - - if (COLS - SW > col) { - m_strformat(buf, sizeof(buf), fmt, callback, data, flags); - pos += m_strpad(dst + pos, dlen - pos, ch, - COLS - SW - col - mutt_strwidth(buf)); - pos += m_strcpy(dst + pos, dlen - pos, buf); - } - return pos; /* skip rest of input */ - - case '|': /* pad to EOL */ - return pos + m_strpad(dst + pos, dlen - pos, *fmt, - COLS - SW - mutt_strwidth(dst)); - - default: - lower = nodots = 0; - - while (ch == '_' || ch == ':') { - lower |= ch == '_'; - nodots |= ch == ':'; - ch = *fmt++; - } - - /* use callback function to handle this case */ - fmt = callback(buf, sizeof (buf), ch, fmt, prefix, - ifstring, elsestring, data, flags); - - if (lower) - m_strtolower(buf); - - if (nodots) { - char *p; - - for (p = buf; *p; p++) { - if (*p == '.') - *p = '_'; - } - } - - pos += m_strcpy(dst + pos, dlen - pos, buf); - break; - } - continue; - } - - if (*fmt == '\\') { - if (!*++fmt) - break; - switch ((ch = *fmt++)) { - case 'n': pos += m_strputc(dst + pos, dlen - pos, '\n'); break; - case 't': pos += m_strputc(dst + pos, dlen - pos, '\t'); break; - case 'r': pos += m_strputc(dst + pos, dlen - pos, '\r'); break; - case 'f': pos += m_strputc(dst + pos, dlen - pos, '\f'); break; - case 'v': pos += m_strputc(dst + pos, dlen - pos, '\v'); break; - default: pos += m_strputc(dst + pos, dlen - pos, ch); break; - } - } else { - ssize_t len = strcspn(fmt, "%\\"); - - pos += m_strncpy(dst + pos, dlen - pos, fmt, len); - fmt += len; - } - } - - return pos; -} - /* returns 0 if OK to proceed, -1 to abort, 1 to retry */ int mutt_save_confirm (const char *s, struct stat *st) {