X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=hook.c;h=a84dc001a625e2bde176a7b6e3fc3fbd4497a87b;hp=69ca2a0bd00a8bc0dfa1e52d660b6860cc25ff50;hb=4c99e2f0c403adb86af688ea982350de5bcc5edf;hpb=53b1d39270dad5bcba362bf9d399d9c592d842c3 diff --git a/hook.c b/hook.c index 69ca2a0..a84dc00 100644 --- a/hook.c +++ b/hook.c @@ -41,7 +41,7 @@ int mutt_parse_hook (BUFFER * buf __attribute__ ((unused)), BUFFER * s, { hook_t *ptr; BUFFER command, pattern; - int rc, not = 0; + int rc, neg = 0; regex_t *rx = NULL; pattern_t *pat = NULL; char path[_POSIX_PATH_MAX]; @@ -51,7 +51,7 @@ int mutt_parse_hook (BUFFER * buf __attribute__ ((unused)), BUFFER * s, if (*s->dptr == '!') { s->dptr = vskipspaces(s->dptr + 1); - not = 1; + neg = 1; } mutt_extract_token (&pattern, s, 0); @@ -77,8 +77,7 @@ int mutt_parse_hook (BUFFER * buf __attribute__ ((unused)), BUFFER * s, } if (data & (M_FOLDERHOOK | M_MBOXHOOK)) { - m_strcpy(path, sizeof(path), pattern.data); - _mutt_expand_path (path, sizeof (path), 1); + _mutt_expand_path (path, sizeof (path), pattern.data, 1); p_delete(&pattern.data); p_clear(&pattern, 1); pattern.data = m_strdup(path); @@ -89,8 +88,7 @@ int mutt_parse_hook (BUFFER * buf __attribute__ ((unused)), BUFFER * s, return (-1); } } - else if (DefaultHook && !(data & (M_CHARSETHOOK | M_ACCOUNTHOOK)) - && !(data & M_CRYPTHOOK)) + else if (DefaultHook && !(data & M_ACCOUNTHOOK) && !(data & M_CRYPTHOOK)) { char tmp[HUGE_STRING]; @@ -112,7 +110,7 @@ int mutt_parse_hook (BUFFER * buf __attribute__ ((unused)), BUFFER * s, /* check to make sure that a matching hook doesn't already exist */ for (ptr = Hooks; ptr; ptr = ptr->next) { if (ptr->type == (int)data && - ptr->rx.not == not && !m_strcmp(pattern.data, ptr->rx.pattern)) { + ptr->rx.neg == neg && !m_strcmp(pattern.data, ptr->rx.pattern)) { if (data & (M_FOLDERHOOK | M_SENDHOOK | M_SEND2HOOK | M_MESSAGEHOOK | M_ACCOUNTHOOK | M_REPLYHOOK)) { @@ -153,22 +151,15 @@ int mutt_parse_hook (BUFFER * buf __attribute__ ((unused)), BUFFER * s, else { rx = p_new(regex_t, 1); #ifdef M_CRYPTHOOK - if ((rc = - REGCOMP (rx, NONULL (pattern.data), - ((data & (M_CRYPTHOOK | M_CHARSETHOOK)) ? REG_ICASE : 0))) - != 0) -#else - if ((rc = - REGCOMP (rx, NONULL (pattern.data), - (data & (M_CHARSETHOOK | M_ICONVHOOK)) ? REG_ICASE : 0)) != - 0) -#endif /* M_CRYPTHOOK */ + if ((rc = REGCOMP(rx, NONULL(pattern.data), + ((data & M_CRYPTHOOK) ? REG_ICASE : 0))) != 0) { regerror (rc, rx, err->data, err->dsize); regfree (rx); p_delete(&rx); goto error; } +#endif /* M_CRYPTHOOK */ } if (ptr) { @@ -182,7 +173,7 @@ int mutt_parse_hook (BUFFER * buf __attribute__ ((unused)), BUFFER * s, ptr->pattern = pat; ptr->rx.pattern = pattern.data; ptr->rx.rx = rx; - ptr->rx.not = not; + ptr->rx.neg = neg; return 0; error: @@ -254,7 +245,7 @@ void mutt_folder_hook (char *path) continue; if (tmp->type & M_FOLDERHOOK) { - if ((regexec (tmp->rx.rx, path, 0, NULL, 0) == 0) ^ tmp->rx.not) { + if ((regexec (tmp->rx.rx, path, 0, NULL, 0) == 0) ^ tmp->rx.neg) { if (mutt_parse_rc_line (tmp->command, &token, &err) == -1) { mutt_error ("%s", err.data); mutt_sleep (1); /* pause a moment to let the user see the error */ @@ -295,7 +286,7 @@ void mutt_message_hook (CONTEXT * ctx, HEADER * hdr, int type) continue; if (hook->type & type) - if ((mutt_pattern_exec (hook->pattern, 0, ctx, hdr) > 0) ^ hook->rx.not) + if ((mutt_pattern_exec (hook->pattern, 0, ctx, hdr) > 0) ^ hook->rx.neg) if (mutt_parse_rc_line (hook->command, &token, &err) != 0) { mutt_error ("%s", err.data); mutt_sleep (1); @@ -317,7 +308,7 @@ mutt_addr_hook (char *path, ssize_t pathlen, unsigned long type, CONTEXT * ctx, continue; if (hook->type & type) - if ((mutt_pattern_exec (hook->pattern, 0, ctx, hdr) > 0) ^ hook->rx.not) { + if ((mutt_pattern_exec (hook->pattern, 0, ctx, hdr) > 0) ^ hook->rx.neg) { mutt_make_string (path, pathlen, hook->command, ctx, hdr); return 0; } @@ -379,22 +370,12 @@ static const char *_mutt_string_hook (const char *match, int hook) for (; tmp; tmp = tmp->next) { if ((tmp->type & hook) - && ((match && regexec(tmp->rx.rx, match, 0, NULL, 0) == 0) ^ tmp->rx.not)) + && ((match && regexec(tmp->rx.rx, match, 0, NULL, 0) == 0) ^ tmp->rx.neg)) return (tmp->command); } return (NULL); } -const char *mutt_charset_hook (const char *chs) -{ - return _mutt_string_hook (chs, M_CHARSETHOOK); -} - -const char *mutt_iconv_hook (const char *chs) -{ - return _mutt_string_hook (chs, M_ICONVHOOK); -} - const char *mutt_crypt_hook (address_t * adr) { return _mutt_string_hook (adr->mailbox, M_CRYPTHOOK); @@ -415,7 +396,7 @@ void mutt_account_hook (const char *url) if (!(hook->command && (hook->type & M_ACCOUNTHOOK))) continue; - if ((regexec (hook->rx.rx, url, 0, NULL, 0) == 0) ^ hook->rx.not) { + if ((regexec (hook->rx.rx, url, 0, NULL, 0) == 0) ^ hook->rx.neg) { if (mutt_parse_rc_line (hook->command, &token, &err) == -1) { mutt_error ("%s", err.data); mutt_sleep (1);