X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=init.c;h=f6efc621b2f96f6382a9d5d6afab23dea8c22f3c;hp=6ca24b377334e76c148e6ea3dc3df87712e25c1c;hb=d23094706c228c63c7c7ab8f337fb5dd886c4109;hpb=c6b9d35ed9361e4defab9762a7480d5126405ae9 diff --git a/init.c b/init.c index 6ca24b3..f6efc62 100644 --- a/init.c +++ b/init.c @@ -20,20 +20,25 @@ #include #include #include +#include +#include +#include + +#include + +#include #include "mutt.h" -#include "mapping.h" -#include "mutt_curses.h" #include "history.h" #include "keymap.h" #include "mbyte.h" #include "charset.h" #include "thread.h" -#include "mutt_crypt.h" +#include #include "mutt_idna.h" #if defined(USE_SSL) || defined(USE_GNUTLS) -#include "mutt_ssl.h" +#include #endif #if defined (USE_LIBESMTP) && (defined (USE_SSL) || defined (USE_GNUTLS)) @@ -43,9 +48,7 @@ #include "mx.h" #include "init.h" -#include "lib/rx.h" #include "lib/list.h" -#include "lib/debug.h" #include #include @@ -186,7 +189,8 @@ static void bool_to_string (char* dst, size_t dstlen, } static int bool_from_string (struct option_t* dst, const char* val, - char* errbuf, size_t errlen) { + char* errbuf __attribute__ ((unused)), + size_t errlen __attribute__ ((unused))) { int flag = -1; if (!dst) @@ -262,24 +266,24 @@ static void sys_to_string (char* dst, size_t dstlen, char *val = NULL, *t = NULL; int clean = 0; - /* get some $muttng_ values dynamically */ - if (ascii_strcmp ("muttng_pwd", option->option) == 0) { + /* get some $madmutt_ values dynamically */ + if (ascii_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 ("muttng_folder_path", option->option) == 0 && + } else if (ascii_strcmp ("madmutt_folder_path", option->option) == 0 && CurrentFolder && *CurrentFolder) { val = CurrentFolder; - } else if (ascii_strcmp ("muttng_folder_name", option->option) == 0 && + } else if (ascii_strcmp ("madmutt_folder_name", option->option) == 0 && CurrentFolder && *CurrentFolder) { - size_t Maildirlength = m_strlen(Maildir); + ssize_t Maildirlength = m_strlen(Maildir); /* * if name starts with $folder, just strip it to keep hierarchy * $folder=imap://host, path=imap://host/inbox/b -> inbox/b */ - if (Maildirlength > 0 && str_ncmp (CurrentFolder, Maildir, + if (Maildirlength > 0 && m_strncmp(CurrentFolder, Maildir, Maildirlength) == 0 && m_strlen(CurrentFolder) > Maildirlength) { val = CurrentFolder + Maildirlength; @@ -290,10 +294,10 @@ static void sys_to_string (char* dst, size_t dstlen, val = t+1; /* default: use as-is */ else - val = CurrentFolder; + val = (char *) CurrentFolder; } else - val = option->init; + val = (char *) option->init; snprintf (dst, dstlen, "%s=\"%s\"", option->option, NONULL (val)); if (clean) @@ -301,7 +305,7 @@ static void sys_to_string (char* dst, size_t dstlen, } static int path_from_string (struct option_t* dst, const char* val, - char* errbuf, size_t errlen) { + char* errbuf __attribute__ ((unused)), size_t errlen __attribute__ ((unused))) { char path[_POSIX_PATH_MAX]; if (!dst) @@ -313,9 +317,9 @@ static int path_from_string (struct option_t* dst, const char* val, } path[0] = '\0'; - strfcpy (path, val, sizeof(path)); + m_strcpy(path, sizeof(path), val); mutt_expand_path (path, sizeof(path)); - str_replace ((char **) dst->data, path); + m_strreplace((char **) dst->data, path); return (1); } @@ -327,12 +331,12 @@ static int str_from_string (struct option_t* dst, const char* val, if (!check_special (dst->option, (unsigned long) val, errbuf, errlen)) return (0); - str_replace ((char**) dst->data, val); + m_strreplace((char**) dst->data, val); return (1); } static int user_from_string (struct option_t* dst, const char* val, - char* errbuf, size_t errlen) { + char* errbuf __attribute__ ((unused)), size_t errlen __attribute__ ((unused))) { /* if dst == NULL, we may get here in case the user did unset it, * see parse_set() where item is free()'d before coming here; so * just silently ignore it */ @@ -342,7 +346,7 @@ static int user_from_string (struct option_t* dst, const char* val, dst->data = (unsigned long) m_strdup(val); else { char* s = (char*) dst->data; - str_replace (&s, val); + m_strreplace(&s, val); } if (m_strlen(dst->init) == 0) dst->init = m_strdup((char*) dst->data); @@ -357,7 +361,7 @@ static void quad_to_string (char* dst, size_t dstlen, } static int quad_from_string (struct option_t* dst, const char* val, - char* errbuf, size_t errlen) { + char* errbuf __attribute__ ((unused)), size_t errlen __attribute__ ((unused))) { int flag = -1; if (!dst) @@ -467,7 +471,7 @@ static int rx_from_string (struct option_t* dst, const char* val, p_delete(&p->rx); } - str_replace (&p->pattern, val); + m_strreplace(&p->pattern, val); p->rx = rx; p->not = not; @@ -491,7 +495,7 @@ static void magic_to_string (char* dst, size_t dstlen, } static int magic_from_string (struct option_t* dst, const char* val, - char* errbuf, size_t errlen) { + char* errbuf __attribute__ ((unused)), size_t errlen __attribute__ ((unused))) { int flag = -1; if (!dst || !val || !*val) @@ -517,17 +521,17 @@ static void addr_to_string (char* dst, size_t dstlen, struct option_t* option) { char s[HUGE_STRING]; s[0] = '\0'; - rfc822_write_address (s, sizeof(s), *((ADDRESS**) option->data), 0); + rfc822_write_address (s, sizeof(s), *((address_t**) option->data), 0); snprintf (dst, dstlen, "%s=\"%s\"", option->option, NONULL (s)); } static int addr_from_string (struct option_t* dst, const char* val, - char* errbuf, size_t errlen) { + char* errbuf __attribute__ ((unused)), size_t errlen __attribute__ ((unused))) { if (!dst) return (0); - rfc822_free_address ((ADDRESS**) dst->data); + address_delete ((address_t**) dst->data); if (val && *val) - *((ADDRESS**) dst->data) = rfc822_parse_adrlist (NULL, val); + *((address_t**) dst->data) = rfc822_parse_adrlist (NULL, val); return (1); } @@ -669,7 +673,7 @@ static int add_to_rx_list (list2_t** list, const char *s, int flags, i = rx_lookup ((*list), rx->pattern); if (i >= 0) - rx_free (&rx); + rx_delete(&rx); else list_push_back (list, rx); return 0; @@ -752,7 +756,7 @@ static int remove_from_spam_list (SPAM_LIST ** list, const char *pat) return 0; if (spam->rx && !m_strcmp(spam->rx->pattern, pat)) { *list = spam->next; - rx_free (&spam->rx); + rx_delete(&spam->rx); p_delete(&spam->template); p_delete(&spam); return 1; @@ -762,7 +766,7 @@ static int remove_from_spam_list (SPAM_LIST ** list, const char *pat) for (spam = prev->next; spam;) { if (!m_strcmp(spam->rx->pattern, pat)) { prev->next = spam->next; - rx_free (&spam->rx); + rx_delete(&spam->rx); p_delete(&spam->template); p_delete(&spam); spam = prev->next; @@ -807,14 +811,14 @@ static int remove_from_rx_list (list2_t** l, const char *str) int i = 0; if (m_strcmp("*", str) == 0) { - list_del (l, (list_del_t*) rx_free); + 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_free (&r); + rx_delete(&r); return (0); } } @@ -824,7 +828,8 @@ static int remove_from_rx_list (list2_t** l, const char *str) static int parse_ifdef (BUFFER * tmp, BUFFER * s, unsigned long data, BUFFER * err) { - int i, j, res = 0; + int i, j; + unsigned long res = 0; BUFFER token; struct option_t* option = NULL; @@ -884,8 +889,9 @@ static int parse_ifdef (BUFFER * tmp, BUFFER * s, unsigned long data, return 0; } -static int parse_unignore (BUFFER * buf, BUFFER * s, unsigned long data, - BUFFER * err) +static int parse_unignore (BUFFER * buf, BUFFER * s, + unsigned long data __attribute__ ((unused)), + BUFFER * err __attribute__ ((unused))) { do { mutt_extract_token (buf, s, 0); @@ -901,8 +907,9 @@ static int parse_unignore (BUFFER * buf, BUFFER * s, unsigned long data, return 0; } -static int parse_ignore (BUFFER * buf, BUFFER * s, unsigned long data, - BUFFER * err) +static int parse_ignore (BUFFER * buf, BUFFER * s, + unsigned long data __attribute__ ((unused)), + BUFFER * err __attribute__ ((unused))) { do { mutt_extract_token (buf, s, 0); @@ -914,8 +921,9 @@ static int parse_ignore (BUFFER * buf, BUFFER * s, unsigned long data, return 0; } -static int parse_list (BUFFER * buf, BUFFER * s, unsigned long data, - BUFFER * err) +static int parse_list (BUFFER * buf, BUFFER * s, + unsigned long data __attribute__ ((unused)), + BUFFER * err __attribute__ ((unused))) { do { mutt_extract_token (buf, s, 0); @@ -936,8 +944,9 @@ static void _alternates_clean (void) } } -static int parse_alternates (BUFFER * buf, BUFFER * s, unsigned long data, - BUFFER * err) +static int parse_alternates (BUFFER * buf, BUFFER * s, + unsigned long data __attribute__ ((unused)), + BUFFER * err __attribute__ ((unused))) { _alternates_clean (); do { @@ -952,8 +961,9 @@ static int parse_alternates (BUFFER * buf, BUFFER * s, unsigned long data, return 0; } -static int parse_unalternates (BUFFER * buf, BUFFER * s, unsigned long data, - BUFFER * err) +static int parse_unalternates (BUFFER * buf, BUFFER * s, + unsigned long data __attribute__ ((unused)), + BUFFER * err __attribute__ ((unused))) { _alternates_clean (); do { @@ -980,9 +990,9 @@ static int parse_spam_list (BUFFER * buf, BUFFER * s, unsigned long data, /* Insist on at least one parameter */ if (!MoreArgs (s)) { if (data == M_SPAM) - strfcpy (err->data, _("spam: no matching pattern"), err->dsize); + m_strcpy(err->data, err->dsize, _("spam: no matching pattern")); else - strfcpy (err->data, _("nospam: no matching pattern"), err->dsize); + m_strcpy(err->data, err->dsize, _("nospam: no matching pattern")); return -1; } @@ -1018,7 +1028,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_free); + list_del (&NoSpamList, (list_del_t*) rx_delete); return 0; } @@ -1034,12 +1044,12 @@ static int parse_spam_list (BUFFER * buf, BUFFER * s, unsigned long data, } /* This should not happen. */ - strfcpy (err->data, "This is no good at all.", err->dsize); + m_strcpy(err->data, err->dsize, "This is no good at all."); return -1; } static int parse_unlist (BUFFER * buf, BUFFER * s, unsigned long data, - BUFFER * err) + BUFFER * err __attribute__ ((unused))) { do { mutt_extract_token (buf, s, 0); @@ -1057,7 +1067,8 @@ static int parse_unlist (BUFFER * buf, BUFFER * s, unsigned long data, return 0; } -static int parse_lists (BUFFER * buf, BUFFER * s, unsigned long data, +static int parse_lists (BUFFER * buf, BUFFER * s, + unsigned long data __attribute__ ((unused)), BUFFER * err) { do { @@ -1082,7 +1093,7 @@ static void _attachments_clean (void) { } static int parse_attach_list (BUFFER *buf, BUFFER *s, LIST **ldata, - BUFFER *err) { + BUFFER *err __attribute__ ((unused))) { ATTACH_MATCH *a; LIST *listp, *lastp; char *p; @@ -1108,9 +1119,9 @@ static int parse_attach_list (BUFFER *buf, BUFFER *s, LIST **ldata, a = p_new(ATTACH_MATCH, 1); /* some cheap hacks that I expect to remove */ - if (!str_casecmp(buf->data, "any")) + if (!m_strcasecmp(buf->data, "any")) a->major = m_strdup("*/.*"); - else if (!str_casecmp(buf->data, "none")) + else if (!m_strcasecmp(buf->data, "none")) a->major = m_strdup("cheap_hack/this_should_never_match"); else a->major = m_strdup(buf->data); @@ -1154,7 +1165,8 @@ static int parse_attach_list (BUFFER *buf, BUFFER *s, LIST **ldata, return 0; } -static int parse_unattach_list (BUFFER *buf, BUFFER *s, LIST **ldata, BUFFER *err) { +static int parse_unattach_list (BUFFER *buf, BUFFER *s, LIST **ldata, + BUFFER *err __attribute__ ((unused))) { ATTACH_MATCH *a; LIST *lp, *lastp, *newlp; char *tmp; @@ -1164,9 +1176,9 @@ static int parse_unattach_list (BUFFER *buf, BUFFER *s, LIST **ldata, BUFFER *er do { mutt_extract_token (buf, s, 0); - if (!str_casecmp(buf->data, "any")) + if (!m_strcasecmp(buf->data, "any")) tmp = m_strdup("*/.*"); - else if (!str_casecmp(buf->data, "none")) + else if (!m_strcasecmp(buf->data, "none")) tmp = m_strdup("cheap_hack/this_should_never_match"); else tmp = m_strdup(buf->data); @@ -1175,7 +1187,7 @@ static int parse_unattach_list (BUFFER *buf, BUFFER *s, LIST **ldata, BUFFER *er *minor = '\0'; ++minor; } else { - minor = "unknown"; + minor = m_strdup("unknown"); } major = mutt_check_mime_type(tmp); @@ -1186,7 +1198,7 @@ static int parse_unattach_list (BUFFER *buf, BUFFER *s, LIST **ldata, BUFFER *er a = (ATTACH_MATCH *)lp->data; debug_print(5, ("parse_unattach_list: check %s/%s [%d] : %s/%s [%d]\n", a->major, a->minor, a->major_int, tmp, minor, major)); - if (a->major_int == major && !str_casecmp(minor, a->minor)) { + if (a->major_int == major && !m_strcasecmp(minor, a->minor)) { debug_print(5, ("parse_unattach_list: removed %s/%s [%d]\n", a->major, a->minor, a->major_int)); regfree(&a->minor_rx); @@ -1227,13 +1239,15 @@ static int print_attach_list (LIST *lp, char op, const char *name) { return 0; } -static int parse_attachments (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err) { +static int parse_attachments (BUFFER *buf, BUFFER *s, + unsigned long data __attribute__ ((unused)), + BUFFER *err) { char op, *category; LIST **listp; mutt_extract_token(buf, s, 0); if (!buf->data || *buf->data == '\0') { - strfcpy(err->data, _("attachments: no disposition"), err->dsize); + m_strcpy(err->data, err->dsize, _("attachments: no disposition")); return -1; } @@ -1258,32 +1272,32 @@ static int parse_attachments (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER op = '+'; category--; } - if (!str_ncasecmp(category, "attachment", strlen(category))) { + if (!m_strncasecmp(category, "attachment", strlen(category))) { if (op == '+') listp = &AttachAllow; else listp = &AttachExclude; } - else if (!str_ncasecmp(category, "inline", strlen(category))) { + else if (!m_strncasecmp(category, "inline", strlen(category))) { if (op == '+') listp = &InlineAllow; else listp = &InlineExclude; } else { - strfcpy(err->data, _("attachments: invalid disposition"), err->dsize); + m_strcpy(err->data, err->dsize, _("attachments: invalid disposition")); return -1; } return parse_attach_list(buf, s, listp, err); } -static int parse_unattachments (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err) { +static int parse_unattachments (BUFFER *buf, BUFFER *s, unsigned long data __attribute__ ((unused)), BUFFER *err) { char op, *p; LIST **listp; mutt_extract_token(buf, s, 0); if (!buf->data || *buf->data == '\0') { - strfcpy(err->data, _("unattachments: no disposition"), err->dsize); + m_strcpy(err->data, err->dsize, _("unattachments: no disposition")); return -1; } @@ -1293,28 +1307,29 @@ static int parse_unattachments (BUFFER *buf, BUFFER *s, unsigned long data, BUFF op = '+'; p--; } - if (!str_ncasecmp(p, "attachment", strlen(p))) { + if (!m_strncasecmp(p, "attachment", strlen(p))) { if (op == '+') listp = &AttachAllow; else listp = &AttachExclude; } - else if (!str_ncasecmp(p, "inline", strlen(p))) { + else if (!m_strncasecmp(p, "inline", strlen(p))) { if (op == '+') listp = &InlineAllow; else listp = &InlineExclude; } else { - strfcpy(err->data, _("unattachments: invalid disposition"), err->dsize); + m_strcpy(err->data, err->dsize, _("unattachments: invalid disposition")); return -1; } return parse_unattach_list(buf, s, listp, err); } -static int parse_unlists (BUFFER * buf, BUFFER * s, unsigned long data, - BUFFER * err) +static int parse_unlists (BUFFER * buf, BUFFER * s, + unsigned long data __attribute__ ((unused)), + BUFFER * err __attribute__ ((unused))) { do { mutt_extract_token (buf, s, 0); @@ -1330,7 +1345,7 @@ static int parse_unlists (BUFFER * buf, BUFFER * s, unsigned long data, return 0; } -static int parse_subscribe (BUFFER * buf, BUFFER * s, unsigned long data, +static int parse_subscribe (BUFFER * buf, BUFFER * s, unsigned long data __attribute__ ((unused)), BUFFER * err) { do { @@ -1348,8 +1363,9 @@ static int parse_subscribe (BUFFER * buf, BUFFER * s, unsigned long data, return 0; } -static int parse_unsubscribe (BUFFER * buf, BUFFER * s, unsigned long data, - BUFFER * err) +static int parse_unsubscribe (BUFFER * buf, BUFFER * s, + unsigned long data __attribute__ ((unused)), + BUFFER * err __attribute__ ((unused))) { do { mutt_extract_token (buf, s, 0); @@ -1364,8 +1380,9 @@ static int parse_unsubscribe (BUFFER * buf, BUFFER * s, unsigned long data, return 0; } -static int parse_unalias (BUFFER * buf, BUFFER * s, unsigned long data, - BUFFER * err) +static int parse_unalias (BUFFER * buf, BUFFER * s, + unsigned long data __attribute__ ((unused)), + BUFFER * err __attribute__ ((unused))) { ALIAS *tmp, *last = NULL; @@ -1384,7 +1401,7 @@ static int parse_unalias (BUFFER * buf, BUFFER * s, unsigned long data, } else for (tmp = Aliases; tmp; tmp = tmp->next) { - if (str_casecmp (buf->data, tmp->name) == 0) { + if (m_strcasecmp(buf->data, tmp->name) == 0) { if (CurrentMenu == MENU_ALIAS) { tmp->del = 1; set_option (OPTFORCEREDRAWINDEX); @@ -1406,7 +1423,8 @@ static int parse_unalias (BUFFER * buf, BUFFER * s, unsigned long data, return 0; } -static int parse_alias (BUFFER * buf, BUFFER * s, unsigned long data, +static int parse_alias (BUFFER * buf, BUFFER * s, + unsigned long data __attribute__ ((unused)), BUFFER * err) { ALIAS *tmp = Aliases; @@ -1414,7 +1432,7 @@ static int parse_alias (BUFFER * buf, BUFFER * s, unsigned long data, char *estr = NULL; if (!MoreArgs (s)) { - strfcpy (err->data, _("alias: no address"), err->dsize); + m_strcpy(err->data, err->dsize, _("alias: no address")); return (-1); } @@ -1424,7 +1442,7 @@ static int parse_alias (BUFFER * buf, BUFFER * s, unsigned long data, /* check to see if an alias with this name already exists */ for (; tmp; tmp = tmp->next) { - if (!str_casecmp (tmp->name, buf->data)) + if (!m_strcasecmp(tmp->name, buf->data)) break; last = tmp; } @@ -1440,7 +1458,7 @@ static int parse_alias (BUFFER * buf, BUFFER * s, unsigned long data, } else { /* override the previous value */ - rfc822_free_address (&tmp->addr); + address_delete (&tmp->addr); if (CurrentMenu == MENU_ALIAS) set_option (OPTFORCEREDRAWINDEX); } @@ -1460,7 +1478,7 @@ static int parse_alias (BUFFER * buf, BUFFER * s, unsigned long data, } #ifdef DEBUG if (DebugLevel >= 2) { - ADDRESS *a; + address_t *a; /* A group is terminated with an empty address, so check a->mailbox */ for (a = tmp->addr; a && a->mailbox; a = a->next) { @@ -1475,7 +1493,9 @@ static int parse_alias (BUFFER * buf, BUFFER * s, unsigned long data, } static int -parse_unmy_hdr (BUFFER * buf, BUFFER * s, unsigned long data, BUFFER * err) +parse_unmy_hdr (BUFFER * buf, BUFFER * s, + unsigned long data __attribute__ ((unused)), + BUFFER * err __attribute__ ((unused))) { LIST *last = NULL; LIST *tmp = UserHeader; @@ -1517,7 +1537,7 @@ parse_unmy_hdr (BUFFER * buf, BUFFER * s, unsigned long data, BUFFER * err) return 0; } -static int parse_my_hdr (BUFFER * buf, BUFFER * s, unsigned long data, +static int parse_my_hdr (BUFFER * buf, BUFFER * s, unsigned long data __attribute__ ((unused)), BUFFER * err) { LIST *tmp; @@ -1526,7 +1546,7 @@ static int parse_my_hdr (BUFFER * buf, BUFFER * s, unsigned long data, mutt_extract_token (buf, s, M_TOKEN_SPACE | M_TOKEN_QUOTE); if ((p = strpbrk (buf->data, ": \t")) == NULL || *p != ':') { - strfcpy (err->data, _("invalid header field"), err->dsize); + m_strcpy(err->data, err->dsize, _("invalid header field")); return (-1); } keylen = p - buf->data + 1; @@ -1561,12 +1581,12 @@ parse_sort (struct option_t* dst, const char *s, const struct mapping_t *map, char* errbuf, size_t errlen) { int i, flags = 0; - if (str_ncmp ("reverse-", s, 8) == 0) { + if (m_strncmp("reverse-", s, 8) == 0) { s += 8; flags = SORT_REVERSE; } - if (str_ncmp ("last-", s, 5) == 0) { + if (m_strncmp("last-", s, 5) == 0) { s += 5; flags |= SORT_LAST; } @@ -1582,7 +1602,7 @@ parse_sort (struct option_t* dst, const char *s, const struct mapping_t *map, } /* if additional data more == 1, we want to resolve synonyms */ -static void mutt_set_default(const char *name, void* p, unsigned long more) +static void mutt_set_default(const char *name __attribute__ ((unused)), void* p, unsigned long more) { char buf[LONG_STRING]; struct option_t *ptr = p; @@ -1663,8 +1683,8 @@ static int init_expand (char** dst, struct option_t* src) { } /* if additional data more == 1, we want to resolve synonyms */ -static void mutt_restore_default (const char* name, void* p, - unsigned long more) { +static void mutt_restore_default (const char* name __attribute__ ((unused)), + void* p, unsigned long more) { char errbuf[STRING]; struct option_t* ptr = (struct option_t*) p; char* init = NULL; @@ -1705,11 +1725,11 @@ static void mutt_restore_default (const char* name, void* p, } /* check whether value for $dsn_return would be valid */ -static int check_dsn_return (const char* option, unsigned long p, +static int check_dsn_return (const char* option __attribute__ ((unused)), unsigned long p, char* errbuf, size_t errlen) { char* val = (char*) p; - if (val && *val && str_ncmp (val, "hdrs", 4) != 0 && - str_ncmp (val, "full", 4) != 0) { + if (val && *val && m_strncmp(val, "hdrs", 4) != 0 && + m_strncmp(val, "full", 4) != 0) { if (errbuf) snprintf (errbuf, errlen, _("'%s' is invalid for $%s"), val, "dsn_return"); return (0); @@ -1721,7 +1741,8 @@ static int check_dsn_return (const char* option, unsigned long p, static int check_dsn_notify (const char* option, unsigned long p, char* errbuf, size_t errlen) { list2_t* list = NULL; - int i = 0, rc = 1; + size_t i = 0; + int rc = 1; char* val = (char*) p; if (!val || !*val) @@ -1731,10 +1752,10 @@ static int check_dsn_notify (const char* option, unsigned long p, return (1); for (i = 0; i < list->length; i++) - if (str_ncmp (list->data[i], "never", 5) != 0 && - str_ncmp (list->data[i], "failure", 7) != 0 && - str_ncmp (list->data[i], "delay", 5) != 0 && - str_ncmp (list->data[i], "success", 7) != 0) { + 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"); @@ -1768,7 +1789,7 @@ static int check_debug (const char* option, unsigned long p, } #endif -static int check_history (const char* option, unsigned long p, +static int check_history (const char* option __attribute__ ((unused)), unsigned long p, char* errbuf, size_t errlen) { if (!check_num ("history", p, errbuf, errlen)) return (0); @@ -1800,8 +1821,7 @@ static const struct mapping_t* get_sortmap (struct option_t* option) { map = SortBrowserMethods; break; case DT_SORT_KEYS: - if ((WithCrypto & APPLICATION_PGP)) - map = SortKeyMethods; + map = SortKeyMethods; break; case DT_SORT_AUX: map = SortAuxMethods; @@ -1839,11 +1859,11 @@ static int parse_set (BUFFER * tmp, BUFFER * s, unsigned long data, query = 1; s->dptr++; } - else if (str_ncmp ("no", s->dptr, 2) == 0) { + else if (m_strncmp("no", s->dptr, 2) == 0) { s->dptr += 2; unset = !unset; } - else if (str_ncmp ("inv", s->dptr, 3) == 0) { + else if (m_strncmp("inv", s->dptr, 3) == 0) { s->dptr += 3; inv = !inv; } @@ -1878,7 +1898,7 @@ static int parse_set (BUFFER * tmp, BUFFER * s, unsigned long data, snprintf (err->data, err->dsize, _("%s: unknown variable"), tmp->data); return (-1); } - SKIPWS (s->dptr); + s->dptr = vskipspaces(s->dptr); if (reset) { if (query || unset || inv) { @@ -1972,7 +1992,7 @@ static int parse_set (BUFFER * tmp, BUFFER * s, unsigned long data, r = -1; break; } else if (DTYPE (option->type) == DT_ADDR) - rfc822_free_address ((ADDRESS **) option->data); + address_delete ((address_t **) option->data); else if (DTYPE (option->type) == DT_USER) /* to unset $user_ means remove */ hash_delete (ConfigOptions, option->option, @@ -1989,7 +2009,7 @@ static int parse_set (BUFFER * tmp, BUFFER * s, unsigned long data, break; } - /* the $muttng_ variables are read-only */ + /* the $madmutt_ variables are read-only */ if (!FuncTable[DTYPE (option->type)].opt_from_string) { snprintf (err->data, err->dsize, _("$%s is read-only"), option->option); @@ -2131,7 +2151,8 @@ static int source_rc (const char *rcfile, BUFFER * err) #undef MAXERRS -static int parse_source (BUFFER * tmp, BUFFER * s, unsigned long data, +static int parse_source (BUFFER * tmp, BUFFER * s, + unsigned long data __attribute__ ((unused)), BUFFER * err) { char path[_POSIX_PATH_MAX]; @@ -2143,7 +2164,7 @@ static int parse_source (BUFFER * tmp, BUFFER * s, unsigned long data, return (-1); } - strfcpy (path, tmp->data, sizeof(path)); + m_strcpy(path, sizeof(path), tmp->data); mutt_expand_path (path, sizeof(path)); rc += source_rc (path, err); @@ -2176,7 +2197,7 @@ int mutt_parse_rc_line ( /* const */ char *line, BUFFER * token, BUFFER * err) debug_print (1, ("expand '%s'\n", line)); - SKIPWS (expn.dptr); + expn.dptr = vskipspaces(expn.dptr); while (*expn.dptr) { if (*expn.dptr == '#') break; /* rest of line is a comment */ @@ -2214,7 +2235,7 @@ char User_typed[LONG_STRING] = { 0 }; int Num_matched = 0; /* Number of matches for completion */ char Completed[STRING] = { 0 }; /* completed string (command or variable) */ -const char *Matches[MAX (NUMVARS, NUMCOMMANDS) + 1]; /* all the matches + User_typed */ +char *Matches[MAX (NUMVARS, NUMCOMMANDS) + 1]; /* all the matches + User_typed */ /* helper function for completion. Changes the dest buffer if necessary/possible to aid completion. @@ -2230,7 +2251,7 @@ static void candidate (char *dest, char *try, const char *src, int len) if (strstr (src, try) == src) { Matches[Num_matched++] = src; if (dest[0] == 0) - strfcpy (dest, src, len); + m_strcpy(dest, len, src); else { for (l = 0; src[l] && src[l] == dest[l]; l++); dest[l] = 0; @@ -2244,7 +2265,7 @@ int mutt_command_complete (char *buffer, size_t len, int pos, int numtabs) int num; int spaces; /* keep track of the number of leading spaces on the line */ - SKIPWS (buffer); + buffer = vskipspaces(buffer); spaces = buffer - pt; pt = buffer + pos - spaces; @@ -2255,9 +2276,9 @@ int mutt_command_complete (char *buffer, size_t len, int pos, int numtabs) /* first TAB. Collect all the matches */ if (numtabs == 1) { Num_matched = 0; - strfcpy (User_typed, pt, sizeof(User_typed)); - p_clear(Matches, sizeof(Matches)); - p_clear(Completed, sizeof(Completed)); + m_strcpy(User_typed, sizeof(User_typed), pt); + p_clear(Matches, countof(Matches)); + p_clear(Completed, countof(Completed)); for (num = 0; Commands[num].name; num++) candidate (Completed, User_typed, Commands[num].name, sizeof(Completed)); @@ -2284,17 +2305,17 @@ int mutt_command_complete (char *buffer, size_t len, int pos, int numtabs) /* return the completed command */ m_strcpy(buffer, len - spaces, Completed); } - else if (!str_ncmp (buffer, "set", 3) - || !str_ncmp (buffer, "unset", 5) - || !str_ncmp (buffer, "reset", 5) - || !str_ncmp (buffer, "toggle", 6)) { /* complete variables */ + else if (!m_strncmp(buffer, "set", 3) + || !m_strncmp(buffer, "unset", 5) + || !m_strncmp(buffer, "reset", 5) + || !m_strncmp(buffer, "toggle", 6)) { /* complete variables */ const char *prefixes[] = { "no", "inv", "?", "&", NULL }; pt++; /* loop through all the possible prefixes (no, inv, ...) */ - if (!str_ncmp (buffer, "set", 3)) { + if (!m_strncmp(buffer, "set", 3)) { for (num = 0; prefixes[num]; num++) { - if (!str_ncmp (pt, prefixes[num], m_strlen(prefixes[num]))) { + if (!m_strncmp(pt, prefixes[num], m_strlen(prefixes[num]))) { pt += m_strlen(prefixes[num]); break; } @@ -2304,9 +2325,9 @@ int mutt_command_complete (char *buffer, size_t len, int pos, int numtabs) /* first TAB. Collect all the matches */ if (numtabs == 1) { Num_matched = 0; - strfcpy (User_typed, pt, sizeof(User_typed)); - p_clear(Matches, sizeof(Matches)); - p_clear(Completed, sizeof(Completed)); + m_strcpy(User_typed, sizeof(User_typed), pt); + p_clear(Matches, countof(Matches)); + p_clear(Completed, countof(Completed)); for (num = 0; MuttVars[num].option; num++) candidate(Completed, User_typed, MuttVars[num].option, sizeof(Completed)); @@ -2332,7 +2353,7 @@ int mutt_command_complete (char *buffer, size_t len, int pos, int numtabs) m_strcpy(pt, buffer + len - pt - spaces, Completed); } - else if (!str_ncmp (buffer, "exec", 4)) { + else if (!m_strncmp(buffer, "exec", 4)) { struct binding_t *menu = km_get_table (CurrentMenu); if (!menu && CurrentMenu != MENU_PAGER) @@ -2342,9 +2363,9 @@ int mutt_command_complete (char *buffer, size_t len, int pos, int numtabs) /* first TAB. Collect all the matches */ if (numtabs == 1) { Num_matched = 0; - strfcpy (User_typed, pt, sizeof(User_typed)); - p_clear(Matches, sizeof(Matches)); - p_clear(Completed, sizeof(Completed)); + m_strcpy(User_typed, sizeof(User_typed), pt); + p_clear(Matches, countof(Matches)); + p_clear(Completed, countof(Completed)); for (num = 0; menu[num].name; num++) candidate (Completed, User_typed, menu[num].name, sizeof(Completed)); /* try the generic menu */ @@ -2391,7 +2412,7 @@ int mutt_var_value_complete (char *buffer, size_t len, int pos) if (buffer[0] == 0) return 0; - SKIPWS (buffer); + buffer = vskipspaces(buffer); spaces = buffer - pt; pt = buffer + pos - spaces; @@ -2401,8 +2422,8 @@ int mutt_var_value_complete (char *buffer, size_t len, int pos) if (*pt == '=') /* abort if no var before the '=' */ return 0; - if (str_ncmp (buffer, "set", 3) == 0) { - strfcpy (var, pt, sizeof(var)); + if (m_strncmp(buffer, "set", 3) == 0) { + m_strcpy(var, sizeof(var), pt); /* ignore the trailing '=' when comparing */ var[m_strlen(var) - 1] = 0; if (!(option = hash_find (ConfigOptions, var))) @@ -2418,16 +2439,16 @@ int mutt_var_value_complete (char *buffer, size_t len, int pos) if ((DTYPE (option->type) == DT_STR) || (DTYPE (option->type) == DT_PATH) || (DTYPE (option->type) == DT_RX)) { - strfcpy (tmp, NONULL (*((char **) option->data)), sizeof(tmp)); + m_strcpy(tmp, sizeof(tmp), NONULL(*((char **)option->data))); if (DTYPE (option->type) == DT_PATH) mutt_pretty_mailbox (tmp); } else if (DTYPE (option->type) == DT_ADDR) { rfc822_write_address (tmp, sizeof(tmp), - *((ADDRESS **) option->data), 0); + *((address_t **) option->data), 0); } else if (DTYPE (option->type) == DT_QUAD) - strfcpy (tmp, vals[quadoption (option->data)], sizeof(tmp)); + m_strcpy(tmp, sizeof(tmp), vals[quadoption(option->data)]); else if (DTYPE (option->type) == DT_NUM) snprintf (tmp, sizeof(tmp), "%d", (*((short *) option->data))); else if (DTYPE (option->type) == DT_SORT) { @@ -2442,10 +2463,7 @@ int mutt_var_value_complete (char *buffer, size_t len, int pos) map = SortBrowserMethods; break; case DT_SORT_KEYS: - if ((WithCrypto & APPLICATION_PGP)) - map = SortKeyMethods; - else - map = SortMethods; + map = SortKeyMethods; break; default: map = SortMethods; @@ -2474,22 +2492,21 @@ int mutt_var_value_complete (char *buffer, size_t len, int pos) default: p = "unknown"; } - strfcpy (tmp, p, sizeof(tmp)); + m_strcpy(tmp, sizeof(tmp), p); } else if (DTYPE (option->type) == DT_BOOL) - strfcpy (tmp, option (option->data) ? "yes" : "no", - sizeof(tmp)); + m_strcpy(tmp, sizeof(tmp), option(option->data) ? "yes" : "no"); else return 0; - for (s = tmp, d = tmp2; *s && (d - tmp2) < sizeof(tmp2) - 2;) { + for (s = tmp, d = tmp2; *s && (d - tmp2) < ssizeof(tmp2) - 2;) { if (*s == '\\' || *s == '"') *d++ = '\\'; *d++ = *s++; } *d = '\0'; - strfcpy (tmp, pt, sizeof(tmp)); + m_strcpy(tmp, sizeof(tmp), pt); snprintf (pt, dlen, "%s\"%s\"", tmp, tmp2); return 1; @@ -2528,26 +2545,6 @@ int mutt_query_variables (LIST * queries) return 0; } -const char *mutt_getnamebyvalue (int val, const struct mapping_t *map) -{ - int i; - - for (i = 0; map[i].name; i++) - if (map[i].value == val) - return (map[i].name); - return NULL; -} - -int mutt_getvaluebyname (const char *name, const struct mapping_t *map) -{ - int i; - - for (i = 0; map[i].name; i++) - if (ascii_strcasecmp (map[i].name, name) == 0) - return (map[i].value); - return (-1); -} - static int mutt_execute_commands (LIST * p) { BUFFER err, token; @@ -2574,7 +2571,8 @@ void mutt_init (int skip_sys_rc, LIST * commands) struct utsname utsname; const char *p; char buffer[STRING], error[STRING]; - int i, default_rc = 0, need_pause = 0; + int default_rc = 0, need_pause = 0; + unsigned int i; BUFFER err; p_clear(&err, 1); @@ -2612,7 +2610,8 @@ void mutt_init (int skip_sys_rc, LIST * commands) if (!Homedir) Homedir = m_strdup(pw->pw_dir); - Realname = m_strdup(mutt_gecos_name (rnbuf, sizeof(rnbuf), pw)); + mutt_gecos_name(rnbuf, sizeof(rnbuf), pw, GecosMask.rx); + Realname = m_strdup(rnbuf); Shell = m_strdup(pw->pw_shell); endpwent (); } @@ -2638,22 +2637,19 @@ void mutt_init (int skip_sys_rc, LIST * commands) uname (&utsname); /* some systems report the FQDN instead of just the hostname */ if ((p = strchr (utsname.nodename, '.'))) { - Hostname = str_substrdup (utsname.nodename, p); + Hostname = p_dupstr(utsname.nodename, p - utsname.nodename); p++; - strfcpy (buffer, p, sizeof(buffer)); /* save the domain for below */ + m_strcpy(buffer, sizeof(buffer), p); /* save the domain for below */ } else Hostname = m_strdup(utsname.nodename); -#ifndef DOMAIN -#define DOMAIN buffer - if (!p && getdnsdomainname (buffer, sizeof(buffer)) == -1) + if (!p && getdnsdomainname(buffer, sizeof(buffer)) == -1) Fqdn = m_strdup("@"); else -#endif /* DOMAIN */ - if (*DOMAIN != '@') { - Fqdn = p_new(char, m_strlen(DOMAIN) + m_strlen(Hostname) + 2); - sprintf (Fqdn, "%s.%s", NONULL (Hostname), DOMAIN); /* __SPRINTF_CHECKED__ */ + if (*buffer != '@') { + Fqdn = p_new(char, m_strlen(buffer) + m_strlen(Hostname) + 2); + sprintf (Fqdn, "%s.%s", NONULL(Hostname), buffer); /* __SPRINTF_CHECKED__ */ } else Fqdn = m_strdup(NONULL (Hostname)); @@ -2666,8 +2662,7 @@ void mutt_init (int skip_sys_rc, LIST * commands) if ((f = safe_fopen (SYSCONFDIR "/nntpserver", "r"))) { buffer[0] = '\0'; fgets (buffer, sizeof(buffer), f); - p = buffer; - SKIPWS (p); + p = vskipspaces(buffer); q = (char*)p; while (*q && !isspace(*q)) q++; @@ -2711,7 +2706,6 @@ void mutt_init (int skip_sys_rc, LIST * commands) p = "vi"; } Editor = m_strdup(p); - Visual = m_strdup(p); if ((p = getenv ("REPLYTO")) != NULL) { BUFFER buf, token; @@ -2740,14 +2734,11 @@ void mutt_init (int skip_sys_rc, LIST * commands) CurrentMenu = MENU_MAIN; - -#ifndef LOCALES_HACK /* Do we have a locale definition? */ if (((p = getenv ("LC_ALL")) != NULL && p[0]) || ((p = getenv ("LANG")) != NULL && p[0]) || ((p = getenv ("LC_CTYPE")) != NULL && p[0])) set_option (OPTLOCALES); -#endif #ifdef HAVE_GETSID /* Unset suspend by default if we're the session leader */ @@ -2775,25 +2766,25 @@ void mutt_init (int skip_sys_rc, LIST * commands) if (!Muttrc) { #if 0 - snprintf (buffer, sizeof(buffer), "%s/.muttngrc-%s", NONULL (Homedir), + snprintf (buffer, sizeof(buffer), "%s/.madmuttrc-%s", NONULL (Homedir), MUTT_VERSION); if (access (buffer, F_OK) == -1) #endif - snprintf (buffer, sizeof(buffer), "%s/.muttngrc", NONULL (Homedir)); + snprintf (buffer, sizeof(buffer), "%s/.madmuttrc", NONULL (Homedir)); if (access (buffer, F_OK) == -1) #if 0 - snprintf (buffer, sizeof(buffer), "%s/.muttng/muttngrc-%s", + snprintf (buffer, sizeof(buffer), "%s/.madmutt/madmuttrc-%s", NONULL (Homedir), MUTT_VERSION); if (access (buffer, F_OK) == -1) #endif - snprintf (buffer, sizeof(buffer), "%s/.muttng/muttngrc", + snprintf (buffer, sizeof(buffer), "%s/.madmutt/madmuttrc", NONULL (Homedir)); default_rc = 1; Muttrc = m_strdup(buffer); } else { - strfcpy (buffer, Muttrc, sizeof(buffer)); + m_strcpy(buffer, sizeof(buffer), Muttrc); p_delete(&Muttrc); mutt_expand_path (buffer, sizeof(buffer)); Muttrc = m_strdup(buffer); @@ -2804,15 +2795,15 @@ void mutt_init (int skip_sys_rc, LIST * commands) /* Process the global rc file if it exists and the user hasn't explicity requested not to via "-n". */ if (!skip_sys_rc) { - snprintf (buffer, sizeof(buffer), "%s/Muttngrc-%s", SYSCONFDIR, + snprintf (buffer, sizeof(buffer), "%s/Madmuttrc-%s", SYSCONFDIR, MUTT_VERSION); if (access (buffer, F_OK) == -1) - snprintf (buffer, sizeof(buffer), "%s/Muttngrc", SYSCONFDIR); + snprintf (buffer, sizeof(buffer), "%s/Madmuttrc", SYSCONFDIR); if (access (buffer, F_OK) == -1) - snprintf (buffer, sizeof(buffer), "%s/Muttngrc-%s", PKGDATADIR, + snprintf (buffer, sizeof(buffer), "%s/Madmuttrc-%s", PKGDATADIR, MUTT_VERSION); if (access (buffer, F_OK) == -1) - snprintf (buffer, sizeof(buffer), "%s/Muttngrc", PKGDATADIR); + snprintf (buffer, sizeof(buffer), "%s/Madmuttrc", PKGDATADIR); if (access (buffer, F_OK) != -1) { if (source_rc (buffer, &err) != 0) { fputs (err.data, stderr); @@ -2844,7 +2835,7 @@ void mutt_init (int skip_sys_rc, LIST * commands) /* warn about synonym variables */ if (!list_empty(Synonyms)) { - int i = 0; + i = 0; fprintf (stderr, _("Warning: the following synonym variables were found:\n")); for (i = 0; i < Synonyms->length; i++) { struct option_t* newopt = NULL, *oldopt = NULL; @@ -2889,7 +2880,8 @@ static int opt_cmp (const void* a, const void* b) { } /* callback for hash_map() to put all non-synonym vars into list */ -static void opt_sel_full (const char* key, void* data, +static void opt_sel_full (const char* key __attribute__ ((unused)), + void* data, unsigned long more) { list2_t** l = (list2_t**) more; struct option_t* option = (struct option_t*) data; @@ -2900,7 +2892,8 @@ static void opt_sel_full (const char* key, void* data, } /* callback for hash_map() to put all changed non-synonym vars into list */ -static void opt_sel_diff (const char* key, void* data, +static void opt_sel_diff (const char* key __attribute__ ((unused)), + void* data, unsigned long more) { list2_t** l = (list2_t**) more; struct option_t* option = (struct option_t*) data; @@ -2916,7 +2909,7 @@ static void opt_sel_diff (const char* key, void* data, /* dump out the value of all the variables we have */ int mutt_dump_variables (int full) { - int i = 0; + size_t i = 0; char outbuf[STRING]; list2_t* tmp = NULL; struct option_t* option = NULL;