X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=crypt.cpkg;h=0dded60ed141896295aa71a6958769fe085534c0;hb=33b9fa940ce6aa57c6fa68a4b5b505f9dcbbb436;hp=1387f54463546564fd91c0ebfcd8057fdad5b093;hpb=125a7c903f7928f682cbea847f4436c9dd5b1b4d;p=apps%2Fmadmutt.git diff --git a/crypt.cpkg b/crypt.cpkg index 1387f54..0dded60 100644 --- a/crypt.cpkg +++ b/crypt.cpkg @@ -16,8 +16,7 @@ #include #include -#include -#include +#include #include #include @@ -1217,7 +1216,6 @@ static int crypt_verify_one(BODY *sigbdy, STATE *s, FILE *fp, int is_smime) state_attach_puts (_("[-- Begin signature information --]\n"), s); err = gpgme_op_verify (ctx, signature, message, NULL); - mutt_need_hard_redraw (); if (err) { char buf[200]; @@ -2269,8 +2267,8 @@ static void crypt_entry (char *s, ssize_t l, MUTTMENU * menu, int num) entry.key = cryptkey_table[num]; entry.num = num + 1; - m_strformat(s, l, COLS - SW, mod_crypt.pgp_entry_format, crypt_entry_fmt, - &entry, 0); + m_strformat(s, l, getmaxx(main_w), mod_crypt.pgp_entry_format, + crypt_entry_fmt, &entry, 0); } /* Compare two addresses and the keyid to be used for sorting. */ @@ -3036,7 +3034,7 @@ static cryptkey_t *crypt_select_key (cryptkey_t * keys, cryptkey_t **cryptkey_table; MUTTMENU *menu; int i, done = 0; - char helpstr[STRING], buf[LONG_STRING]; + char buf[LONG_STRING]; cryptkey_t *k; int (*f) (const void *, const void *); int menu_to_use = 0; @@ -3090,23 +3088,10 @@ static cryptkey_t *crypt_select_key (cryptkey_t * keys, else if (app & APPLICATION_SMIME) menu_to_use = MENU_KEY_SELECT_SMIME; - helpstr[0] = 0; - mutt_make_help (buf, sizeof (buf), _("Exit "), menu_to_use, OP_EXIT); - m_strcat(helpstr, sizeof(helpstr), buf); - mutt_make_help (buf, sizeof (buf), _("Select "), menu_to_use, - OP_GENERIC_SELECT_ENTRY); - m_strcat(helpstr, sizeof(helpstr), buf); - mutt_make_help (buf, sizeof (buf), _("Check key "), - menu_to_use, OP_VERIFY_KEY); - m_strcat(helpstr, sizeof(helpstr), buf); - mutt_make_help (buf, sizeof (buf), _("Help"), menu_to_use, OP_HELP); - m_strcat(helpstr, sizeof(helpstr), buf); - menu = mutt_new_menu (); menu->max = i; menu->make_entry = crypt_entry; menu->menu = menu_to_use; - menu->help = helpstr; menu->data = cryptkey_table; { @@ -3415,6 +3400,23 @@ crypt_ask_for_key(const char *tag, int abilities, int app, int *forced_valid) } } +static char *crypt_hook(address_t *adr) +{ + char *res = NULL; + lua_State *L = luaM_getruntime(); + lua_getglobal(L, "mod_core"); /* push mod_core 1 */ + lua_getfield(L, -1, "crypt_hook"); /* push folder_hook() 2 */ + if (lua_isfunction(L, -1)) { + lua_pushstring(L, adr->mailbox); + if (!lua_pcall(L, 1, 1, 0)) { + res = m_strdup(lua_tostring(L, -1)); + } + lua_pop(L, 1); + } + lua_pop(L, 2); + return res; +} + /* This routine attempts to find the keyids of the recipients of a message. It returns NULL if any of the keys can not be found. */ static char *find_keys(ENVELOPE *env, unsigned int app) @@ -3437,10 +3439,10 @@ static char *find_keys(ENVELOPE *env, unsigned int app) while ((addr = address_list_pop(&lst))) { char buf[STRING]; int forced_valid = 0; - const char *keyID; + char *keyID; cryptkey_t *key = NULL; - if ((keyID = mutt_crypt_hook(addr))) { + if ((keyID = crypt_hook(addr))) { int r; snprintf(buf, sizeof(buf), _("Use keyID = \"%s\" for %s?"), keyID, @@ -3451,6 +3453,7 @@ static char *find_keys(ENVELOPE *env, unsigned int app) address_list_wipe(&lst); address_list_wipe(&addr); buffer_delete(&keylist); + p_delete(&keyID); return NULL; } @@ -3467,6 +3470,7 @@ static char *find_keys(ENVELOPE *env, unsigned int app) } } } + p_delete(&keyID); if (!key) { key = crypt_getkeybyaddr(addr, KEYFLAG_CANENCRYPT, app, &forced_valid);