X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=init.c;h=549ba2440e06e1ddc22b096749e08d760af8f6b6;hp=a897897b7c10a3594d53f8a78e48a3bb1c507f9a;hb=2bc76f88e99c16e773c2b2ba805a0bf3e2c034fd;hpb=58e0ddff3bd5e1b9455e8c3ebb1f4b9e7dd71920 diff --git a/init.c b/init.c index a897897..549ba24 100644 --- a/init.c +++ b/init.c @@ -519,40 +519,6 @@ int query_quadoption (int opt, const char *prompt) /* not reached */ } -static void add_to_list(string_list_t **list, const char *str) -{ - /* don't add a NULL or empty string to the list */ - if (m_strisempty(str)) - return; - - /* check to make sure the item is not already on this list */ - while (*list) { - if (!ascii_strcasecmp(str, (*list)->data)) - return; - list = &(*list)->next; - } - - *list = p_new(string_list_t, 1); - (*list)->data = m_strdup(str); -} - -static void remove_from_list(string_list_t **l, const char *str) -{ - if (!m_strcmp("*", str)) { - string_list_wipe(l); /* ``unCMD *'' means delete all current entries */ - return; - } - - while (*l) { - if (!ascii_strcasecmp(str, (*l)->data)) { - string_list_t *it = string_list_pop(l); - string_item_delete(&it); - } else { - l = &(*l)->next; - } - } -} - static int parse_unignore (BUFFER * buf, BUFFER * s, unsigned long data __attribute__ ((unused)), BUFFER * err __attribute__ ((unused))) @@ -561,10 +527,12 @@ static int parse_unignore (BUFFER * buf, BUFFER * s, mutt_extract_token (buf, s, 0); /* don't add "*" to the unignore list */ - if (m_strcmp (buf->data, "*")) - add_to_list (&UnIgnore, buf->data); - - remove_from_list (&Ignore, buf->data); + if (m_strcmp(buf->data, "*")) { + string_list_add(&UnIgnore, buf->data); + string_list_remove(&Ignore, buf->data); + } else { + string_list_wipe(&Ignore); + } } while (MoreArgs (s)); return 0; @@ -576,8 +544,12 @@ static int parse_ignore (BUFFER * buf, BUFFER * s, { do { mutt_extract_token (buf, s, 0); - remove_from_list (&UnIgnore, buf->data); - add_to_list (&Ignore, buf->data); + if (m_strcmp(buf->data, "*")) { + string_list_remove(&UnIgnore, buf->data); + } else { + string_list_wipe(&UnIgnore); + } + string_list_add(&Ignore, buf->data); } while (MoreArgs(s)); return 0; } @@ -587,7 +559,7 @@ static int parse_list(BUFFER * buf, BUFFER * s, unsigned long data, { do { mutt_extract_token (buf, s, 0); - add_to_list ((string_list_t **) data, buf->data); + string_list_add ((string_list_t **) data, buf->data); } while (MoreArgs(s)); return 0; } @@ -600,11 +572,11 @@ static int parse_unlist (BUFFER * buf, BUFFER * s, unsigned long data, /* * Check for deletion of entire list */ - if (m_strcmp(buf->data, "*") == 0) { + if (!m_strcmp(buf->data, "*")) { string_list_wipe((string_list_t **) data); break; } - remove_from_list ((string_list_t **) data, buf->data); + string_list_remove((string_list_t **) data, buf->data); } while (MoreArgs (s)); @@ -713,7 +685,7 @@ static int parse_unattach_list (BUFFER *buf, BUFFER *s, string_list_t **ldata, } major = mutt_check_mime_type(tmp); - /* We must do our own walk here because remove_from_list() will only + /* We must do our own walk here because string_list_remove() will only * remove the string_list_t->data, not anything pointed to by the string_list_t->data. */ lastp = NULL; for(lp = *ldata; lp; ) {