/* note: CH_FROM takes precedence over header weeding. */
if (!((flags & CH_FROM) && (flags & CH_FORCE_FROM) && this_is_from) &&
(flags & CH_WEED) &&
- mutt_matches_ignore (buf, Ignore) &&
- !mutt_matches_ignore (buf, UnIgnore))
+ string_list_contains(Ignore, buf, "*") &&
+ !string_list_contains(UnIgnore, buf, "*"))
continue;
if ((flags & CH_WEED_DELIVERED) &&
ascii_strncasecmp ("Delivered-To:", buf, 13) == 0)
return res;
}
+int string_list_contains(const string_list_t *t, const char *s, const char *any)
+{
+ while (t) {
+ if (!ascii_strncasecmp(s, t->data, m_strlen(t->data))
+ || (any && !ascii_strcasecmp(t->data, any)))
+ return 1;
+ t = t->next;
+ }
+ return 0;
+}
+
+
/* FIXME: b0rken API's, replace that at any cost */
string_list_t *mutt_add_list_n(string_list_t *head, const void *data, size_t len) {
string_list_t *tmp;
DO_SLIST(string_list_t, string, string_item_delete);
string_list_t *string_list_dup(const string_list_t *);
+int string_list_contains(const string_list_t *, const char *, const char *);
/* FIXME: b0rken API's, replace that at any cost */
/* add an element to a list */
/* restore the original line */
line[m_strlen(line)] = ':';
- if (weed && mutt_matches_ignore(line, Ignore)
- && !mutt_matches_ignore(line, UnIgnore)) {
+ if (weed && string_list_contains(Ignore, line, "*")
+ && !string_list_contains(UnIgnore, line, "*")) {
break;
}
#define toggle_option(x) mutt_bit_toggle(Options,x)
#define option(x) mutt_bit_isset(Options,x)
-int mutt_matches_ignore (const char *, string_list_t *);
-
void mutt_init (int, string_list_t *);
typedef struct thread {
#include <grp.h>
#include <pwd.h>
-#include <lib-mime/mime.h>
#include <lib-ui/curses.h>
#include <lib-ui/enter.h>
#include <lib-sys/unix.h>
-#include <lib-mx/mx.h>
+#include <imap/imap.h>
#include "alias.h"
#include "mutt.h"
#include "attach.h"
-
#include "version.h"
-#include <imap/imap.h>
-
-#include <lib-crypt/crypt.h>
-
/* 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.
}
}
-/* 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)
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)
{