* please see the file GPL in the top level source directory.
*/
-#if HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <lib-lib/mem.h>
-#include <lib-lib/str.h>
-#include <lib-lib/ascii.h>
-#include <lib-lib/macros.h>
-#include <lib-lib/file.h>
+#include <lib-lib/lib-lib.h>
#include <lib-mime/mime.h>
+#include <lib-sys/unix.h>
#include <lib-ui/curses.h>
+#include <lib-ui/enter.h>
+#include <lib-ui/menu.h>
-#include "mutt.h"
-#include "enter.h"
#include "recvattach.h"
-#include "mutt_menu.h"
#include "pgp.h"
#include "pager.h"
#include "sort.h"
-#include "lib/debug.h"
-
-#include <string.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-
-#include <locale.h>
-
struct pgp_cache {
char *what;
char *dflt;
*/
typedef struct pgp_entry {
- size_t num;
+ ssize_t num;
pgp_uid_t *uid;
} pgp_entry_t;
-static const char *pgp_entry_fmt (char *dest,
- size_t destlen,
- char op,
- const char *src,
- const char *prefix,
- const char *ifstring,
- const char *elsestring,
- unsigned long data, format_flag flags)
+static const char *
+pgp_entry_fmt (char *dest, ssize_t destlen, char op,
+ const char *src, const char *prefix,
+ const char *ifstring, const char *elsestring,
+ unsigned long data, format_flag flags)
{
char fmt[16];
pgp_entry_t *entry;
char buf2[SHORT_STRING], *p;
int do_locales;
struct tm *tm;
- size_t len;
+ ssize_t len;
p = dest;
return (src);
}
-static void pgp_entry (char *s, size_t l, MUTTMENU * menu, int num)
+static void pgp_entry (char *s, ssize_t l, MUTTMENU * menu, int num)
{
pgp_uid_t **KeyTable = (pgp_uid_t **) menu->data;
pgp_entry_t entry;
case OP_VERIFY_KEY:
- mutt_mktemp (tempfile);
if ((devnull = fopen ("/dev/null", "w")) == NULL) { /* __FOPEN_CHECKED__ */
mutt_perror (_("Can't open /dev/null"));
break;
}
- if ((fp = safe_fopen (tempfile, "w")) == NULL) {
- fclose (devnull);
+
+ fp = m_tempfile (tempfile, sizeof(tempfile), NONULL(Tempdir), NULL);
+ if (!fp) {
+ m_fclose(&devnull);
mutt_perror (_("Can't create temporary file"));
break;
mutt_perror (_("Can't create filter"));
unlink (tempfile);
- fclose (fp);
- fclose (devnull);
+ m_fclose(&fp);
+ m_fclose(&devnull);
}
mutt_wait_filter (thepid);
- fclose (fp);
- fclose (devnull);
+ m_fclose(&fp);
+ m_fclose(&devnull);
mutt_clear_error ();
snprintf (cmd, sizeof (cmd), _("Key ID: 0x%s"),
pgp_keyid (pgp_principal_key
if (option (OPTPGPCHECKTRUST) &&
(!pgp_id_is_valid (KeyTable[menu->current])
|| !pgp_id_is_strong (KeyTable[menu->current]))) {
- const char *s = "";
+ const char *q = "";
char buff[LONG_STRING];
if (KeyTable[menu->current]->flags & KEYFLAG_CANTUSE)
- s = N_("ID is expired/disabled/revoked.");
+ q = N_("ID is expired/disabled/revoked.");
else
switch (KeyTable[menu->current]->trust & 0x03) {
case 0:
- s = N_("ID has undefined validity.");
+ q = N_("ID has undefined validity.");
break;
case 1:
- s = N_("ID is not valid.");
+ q = N_("ID is not valid.");
break;
case 2:
- s = N_("ID is only marginally valid.");
+ q = N_("ID is only marginally valid.");
break;
}
snprintf (buff, sizeof (buff),
- _("%s Do you really want to use the key?"), _(s));
+ _("%s Do you really want to use the key?"), _(q));
if (mutt_yesorno (buff, M_NO) != M_YES) {
mutt_clear_error ();
pgp_free_key (&key);
if (!tempf) {
- mutt_mktemp (tempfb);
+ tempfp = m_tempfile (tempfb, sizeof(tempfb), NONULL(Tempdir), NULL);
tempf = tempfb;
+ } else {
+ tempfp = safe_fopen(tempf, "a");
}
- if ((tempfp = safe_fopen (tempf, tempf == tempfb ? "w" : "a")) == NULL) {
+ if (!tempfp) {
mutt_perror (_("Can't create temporary file"));
-
return NULL;
}
if ((devnull = fopen ("/dev/null", "w")) == NULL) { /* __FOPEN_CHECKED__ */
mutt_perror (_("Can't open /dev/null"));
- fclose (tempfp);
+ m_fclose(&tempfp);
if (tempf == tempfb)
unlink (tempf);
return NULL;
mutt_perror (_("Can't create filter"));
unlink (tempf);
- fclose (tempfp);
- fclose (devnull);
+ m_fclose(&tempfp);
+ m_fclose(&devnull);
return NULL;
}
mutt_wait_filter (thepid);
- fclose (tempfp);
- fclose (devnull);
+ m_fclose(&tempfp);
+ m_fclose(&devnull);
- att = mutt_new_body ();
+ att = body_new();
att->filename = m_strdup(tempf);
att->unlink = 1;
att->use_disp = 0;
return att;
}
-static LIST *pgp_add_string_to_hints (LIST * hints, const char *str)
+static string_list_t *pgp_add_string_to_hints (string_list_t * hints, const char *str)
{
char *scratch;
char *t;
pgp_key_t pgp_getkeybyaddr (address_t * a, short abilities, pgp_ring_t keyring)
{
address_t *r, *p;
- LIST *hints = NULL;
+ string_list_t *hints = NULL;
int weak = 0;
int invalid = 0;
mutt_message (_("Looking for keys matching \"%s\"..."), a->mailbox);
keys = pgp_get_candidates (keyring, hints);
- mutt_free_list (&hints);
+ string_list_wipe(&hints);
if (!keys)
return NULL;
- debug_print (5, ("looking for %s <%s>\n", a->personal, a->mailbox));
-
for (k = keys; k; k = kn) {
kn = k->next;
- debug_print (5, (" looking at key: %s\n", pgp_keyid (k)));
-
if (abilities && !(k->flags & abilities)) {
- debug_print (5, (" insufficient abilities: Has %x, want %x\n",
- k->flags, abilities));
continue;
}
this_key_has_weak = 1;
}
- address_delete (&r);
+ address_list_wipe(&r);
}
if (match && !this_key_has_strong && this_key_has_invalid)
return NULL;
}
-pgp_key_t pgp_getkeybystr (char *p, short abilities, pgp_ring_t keyring)
+pgp_key_t pgp_getkeybystr (const char *p, short abilities, pgp_ring_t keyring)
{
- LIST *hints = NULL;
+ string_list_t *hints = NULL;
pgp_key_t keys;
pgp_key_t matches = NULL;
pgp_key_t *last = &matches;
hints = pgp_add_string_to_hints (hints, p);
keys = pgp_get_candidates (keyring, hints);
- mutt_free_list (&hints);
+ string_list_wipe(&hints);
if (!keys)
return NULL;
match = 0;
for (a = k->address; a; a = a->next) {
- debug_print (5, ("matching \"%s\" against key %s, \"%s\":\n", p, pgp_keyid (k), a->addr));
if (!*p || m_strcasecmp(p, pgp_keyid (k)) == 0
|| (!m_strncasecmp(p, "0x", 2)
&& !m_strcasecmp(p + 2, pgp_keyid (k)))
|| (option (OPTPGPLONGIDS) && !m_strncasecmp(p, "0x", 2)
&& !m_strcasecmp(p + 2, k->keyid + 8))
|| m_stristr(a->addr, p)) {
- debug_print (5, ("match.\n"));
match = 1;
break;
}