X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=hook.c;h=37eda9e1c60104d4c31c50297d628d29709c3867;hp=7361bba01ead7a85af7bd216760441f756f9d907;hb=dc726add2e8fe52be1f6859ea7cbe4651498eeb8;hpb=68d92974c5785799ffb24f6577ae030594f91b29 diff --git a/hook.c b/hook.c index 7361bba..37eda9e 100644 --- a/hook.c +++ b/hook.c @@ -9,12 +9,12 @@ #include #include -#include +#include #include #include -#include #include "alias.h" +#include "crypt.h" #include "pattern.h" typedef struct hook_t { @@ -62,10 +62,9 @@ int mutt_parse_hook (BUFFER * buf __attribute__ ((unused)), BUFFER * s, goto error; } - mutt_extract_token (&command, s, - (data & - (M_FOLDERHOOK | M_SENDHOOK | M_SEND2HOOK | - M_ACCOUNTHOOK | M_REPLYHOOK)) ? M_TOKEN_SPACE : 0); + mutt_extract_token(&command, s, (data & (M_FOLDERHOOK | M_SENDHOOK | + M_SEND2HOOK | M_REPLYHOOK)) ? + M_TOKEN_SPACE : 0); if (!command.data) { m_strcpy(err->data, err->dsize, _("too few arguments")); @@ -89,7 +88,7 @@ int mutt_parse_hook (BUFFER * buf __attribute__ ((unused)), BUFFER * s, return (-1); } } - else if (DefaultHook && !(data & M_ACCOUNTHOOK) && !(data & M_CRYPTHOOK)) + else if (DefaultHook && !(data & M_CRYPTHOOK)) { char tmp[HUGE_STRING]; @@ -112,9 +111,9 @@ int mutt_parse_hook (BUFFER * buf __attribute__ ((unused)), BUFFER * s, for (ptr = Hooks; ptr; ptr = ptr->next) { if (ptr->type == (int)data && 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)) { + if (data & (M_FOLDERHOOK | M_SENDHOOK | M_SEND2HOOK | M_MESSAGEHOOK | + M_REPLYHOOK)) + { /* these hooks allow multiple commands with the same * pattern, so if we've already seen this pattern/command pair, just * ignore it instead of creating a duplicate */ @@ -123,8 +122,7 @@ int mutt_parse_hook (BUFFER * buf __attribute__ ((unused)), BUFFER * s, p_delete(&pattern.data); return 0; } - } - else { + } else { /* other hooks only allow one command per pattern, so update the * entry with the new command. this currently does not change the * order of execution of the hooks, which i think is desirable since @@ -140,18 +138,16 @@ int mutt_parse_hook (BUFFER * buf __attribute__ ((unused)), BUFFER * s, break; } - if (data & - (M_SENDHOOK | M_SEND2HOOK | M_SAVEHOOK | M_FCCHOOK | M_MESSAGEHOOK | - M_REPLYHOOK)) { + if (data & (M_SENDHOOK | M_SEND2HOOK | M_SAVEHOOK | M_FCCHOOK | + M_MESSAGEHOOK | M_REPLYHOOK)) + { if ((pat = mutt_pattern_comp (pattern.data, (data & (M_SENDHOOK | M_SEND2HOOK | M_FCCHOOK)) ? 0 : M_FULL_MSG, err)) == NULL) goto error; - } - else { + } else { rx = p_new(regex_t, 1); -#ifdef M_CRYPTHOOK if ((rc = REGCOMP(rx, NONULL(pattern.data), ((data & M_CRYPTHOOK) ? REG_ICASE : 0))) != 0) { @@ -160,15 +156,14 @@ int mutt_parse_hook (BUFFER * buf __attribute__ ((unused)), BUFFER * s, p_delete(&rx); goto error; } -#endif /* M_CRYPTHOOK */ } if (ptr) { ptr->next = p_new(hook_t, 1); ptr = ptr->next; - } - else + } else { Hooks = ptr = p_new(hook_t, 1); + } ptr->type = data; ptr->command = command.data; ptr->pattern = pat; @@ -260,7 +255,7 @@ void mutt_folder_hook (char *path) { lua_State *L = luaM_getruntime(); - lua_getfield(L, LUA_GLOBALSINDEX, "MCore"); + lua_getfield(L, LUA_GLOBALSINDEX, "mod_core"); lua_getfield(L, -1, "folder_hook"); lua_remove(L, -2); if (lua_isfunction(L, -1)) { @@ -360,23 +355,10 @@ void mutt_default_save (char *path, ssize_t pathlen, HEADER * hdr) void mutt_select_fcc (char *path, ssize_t pathlen, HEADER * hdr) { - address_t *adr; - char buf[_POSIX_PATH_MAX]; - ENVELOPE *env = hdr->env; - - if (mutt_addr_hook (path, pathlen, M_FCCHOOK, NULL, hdr) != 0) { - if ((option (OPTSAVENAME) || option (OPTFORCENAME)) && - (env->to || env->cc || env->bcc)) { - adr = env->to ? env->to : (env->cc ? env->cc : env->bcc); - mutt_safe_path (buf, sizeof (buf), adr); - mutt_concat_path(path, pathlen, NONULL(Maildir), buf); - if (!option (OPTFORCENAME) && mx_access (path, W_OK) != 0) + if (mutt_addr_hook (path, pathlen, M_FCCHOOK, NULL, hdr) != 0) { m_strcpy(path, pathlen, NONULL(MAlias.record)); } - else - m_strcpy(path, pathlen, NONULL(MAlias.record)); - } - mutt_pretty_mailbox (path); + mutt_pretty_mailbox (path); } static const char *_mutt_string_hook (const char *match, int hook) @@ -395,29 +377,3 @@ const char *mutt_crypt_hook (address_t * adr) { return _mutt_string_hook (adr->mailbox, M_CRYPTHOOK); } - -void mutt_account_hook (const char *url) -{ - hook_t *hook; - BUFFER token; - BUFFER err; - char buf[STRING]; - - err.data = buf; - err.dsize = sizeof (buf); - p_clear(&token, 1); - - for (hook = Hooks; hook; hook = hook->next) { - if (!(hook->command && (hook->type & M_ACCOUNTHOOK))) - continue; - - 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); - } - } - } - - p_delete(&token.data); -}