X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=init.c;h=ce0bd20a5d17e4d5b4f6244e9fcfc84f5b03ab49;hp=bf5c64aa6a026ad199de9692dfdc1cffe2427743;hb=9cefec7431f4f98c37c72c294902f2406890711d;hpb=1ee89902de184a640c171ae3285bff6882a791bd diff --git a/init.c b/init.c index bf5c64a..ce0bd20 100644 --- a/init.c +++ b/init.c @@ -238,14 +238,14 @@ static void sys_to_string (char* dst, ssize_t dstlen, int clean = 0; /* get some $madmutt_ values dynamically */ - if (ascii_strcmp ("madmutt_pwd", option->option) == 0) { + if (m_strcmp("madmutt_pwd", option->option) == 0) { val = p_new(char, _POSIX_PATH_MAX); val = getcwd (val, _POSIX_PATH_MAX-1); clean = 1; - } else if (ascii_strcmp ("madmutt_folder_path", option->option) == 0 && + } else if (m_strcmp("madmutt_folder_path", option->option) == 0 && CurrentFolder && *CurrentFolder) { val = CurrentFolder; - } else if (ascii_strcmp ("madmutt_folder_name", option->option) == 0 && + } else if (m_strcmp("madmutt_folder_name", option->option) == 0 && CurrentFolder && *CurrentFolder) { ssize_t Maildirlength = m_strlen(Maildir); @@ -258,7 +258,7 @@ static void sys_to_string (char* dst, ssize_t dstlen, Maildirlength) == 0 && m_strlen(CurrentFolder) > Maildirlength) { val = CurrentFolder + Maildirlength; - if (Maildir[strlen(Maildir)-1]!='/') + if (Maildir[Maildirlength]!='/') val += 1; /* if not $folder, just use everything after last / */ } else if ((t = strrchr (CurrentFolder, '/')) != NULL) @@ -551,7 +551,7 @@ static void syn_del (void** p) { p_delete(p); } -void toggle_quadoption (int opt) +static void toggle_quadoption (int opt) { int n = opt / 4; int b = (opt % 4) * 2; @@ -625,26 +625,25 @@ static void add_to_list (string_list_t ** list, const char *str) } } -static int add_to_rx_list (list2_t** list, const char *s, int flags, - BUFFER * err) +static int +add_to_rx_list(rx_t **list, const char *s, int flags, BUFFER *err) { - rx_t* rx; - int i = 0; + rx_t* rx; - if (!s || !*s) - return 0; + if (!s || !*s) + return 0; - if (!(rx = rx_compile (s, flags))) { - snprintf (err->data, err->dsize, "Bad regexp: %s\n", s); - return -1; - } + if (rx_lookup(list, s)) + return 0; - i = rx_lookup ((*list), rx->pattern); - if (i >= 0) - rx_delete(&rx); - else - list_push_back (list, rx); - return 0; + rx = rx_compile(s, flags); + if (!rx) { + snprintf(err->data, err->dsize, "Bad regexp: %s\n", s); + return -1; + } + + rx_list_append(list, rx); + return 0; } static int add_to_spam_list (SPAM_LIST ** list, const char *pat, @@ -774,23 +773,21 @@ static void remove_from_list (string_list_t ** l, const char *str) } } -static int remove_from_rx_list (list2_t** l, const char *str) +static int remove_from_rx_list(rx_t **l, const char *str) { - int i = 0; + if (m_strcmp("*", str) == 0) { + rx_list_wipe(l); + return 0; + } - if (m_strcmp("*", str) == 0) { - list_del (l, (list_del_t*) rx_delete); - return (0); - } - else { - i = rx_lookup ((*l), str); - if (i >= 0) { - rx_t* r = list_pop_idx ((*l), i); - rx_delete(&r); - return (0); + l = rx_lookup(l, str); + if (l) { + rx_t *r = rx_list_pop(l); + rx_delete(&r); + return 0; } - } - return (-1); + + return -1; } static int parse_ifdef (BUFFER * tmp, BUFFER * s, unsigned long data, @@ -996,7 +993,7 @@ static int parse_spam_list (BUFFER * buf, BUFFER * s, unsigned long data, /* "*" is a special case. */ if (!m_strcmp(buf->data, "*")) { mutt_free_spam_list (&SpamList); - list_del (&NoSpamList, (list_del_t*) rx_delete); + rx_list_wipe(&NoSpamList); return 0; } @@ -1678,32 +1675,29 @@ static int check_dsn_return (const char* option __attribute__ ((unused)), unsign } /* check whether value for $dsn_notify would be valid */ -static int check_dsn_notify (const char* option __attribute__ ((unused)), unsigned long p, - char* errbuf, ssize_t errlen) { - list2_t* list = NULL; - ssize_t i = 0; - int rc = 1; - char* val = (char*) p; - - if (!val || !*val) - return (1); - list = list_from_str (val, ","); - if (list_empty (list)) - return (1); +static int +check_dsn_notify (const char* option __attribute__ ((unused)), + unsigned long val, char* errbuf, ssize_t errlen) +{ + const char *p = (const char*)val; + + while (*p) { + const char *q = m_strchrnul(p, ','); + int len = q - p; + + if (!m_strncmp(p, "never", len) && !m_strncmp(p, "delay", len) + && !m_strncmp(p, "failure", len) && !m_strncmp(p, "success", len)) + { + if (errbuf) + snprintf(errbuf, errlen, _("'%.*s' is invalid for $%s"), + len, p, "dsn_notify"); + return 0; + } - for (i = 0; i < list->length; i++) - if (m_strncmp(list->data[i], "never", 5) != 0 && - m_strncmp(list->data[i], "failure", 7) != 0 && - m_strncmp(list->data[i], "delay", 5) != 0 && - m_strncmp(list->data[i], "success", 7) != 0) { - if (errbuf) - snprintf (errbuf, errlen, _("'%s' is invalid for $%s"), - (char*) list->data[i], "dsn_notify"); - rc = 0; - break; + p = q + 1; } - list_del (&list, (list_del_t*)xmemfree); - return (rc); + + return 1; } static int check_num (const char* option, unsigned long p, @@ -1811,7 +1805,7 @@ static int parse_set (BUFFER * tmp, BUFFER * s, unsigned long data, } /* see if we need to add $user_ var */ - if (!option && ascii_strncmp ("user_", tmp->data, 5) == 0) { + if (!option && m_strncmp("user_", tmp->data, 5) == 0) { /* there's no option named like this yet so only add one * if the action isn't any of: reset, unset, query */ if (!(reset || unset || query || *s->dptr != '=')) {