X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=remailer.c;h=a7b385b91fabb8ff49ce0eddecc6e706dba3dbd9;hp=7825407eeea768882a09b67dbbcc2ef2ff2f9bb9;hb=6be673363a420d4f21e9ab1fbd5835ffba38a7ed;hpb=ba5e3af4ea19e1d20c80941c077039871ec84258 diff --git a/remailer.c b/remailer.c index 7825407..a7b385b 100644 --- a/remailer.c +++ b/remailer.c @@ -11,29 +11,18 @@ * Mixmaster support for Mutt */ -#if HAVE_CONFIG_H -# include "config.h" -#endif +#include + +#include +#include +#include #include "mutt.h" -#include "mutt_curses.h" -#include "mutt_menu.h" -#include "mapping.h" +#include "recvattach.h" #include "remailer.h" -#include "lib/mem.h" -#include "lib/intl.h" -#include "lib/str.h" -#include "lib/rx.h" - -#include -#include -#include - -#include -#include -#include +#define SW (option(OPTMBOXPANE)?SidebarWidth:0) #ifdef MIXMASTER @@ -41,14 +30,14 @@ struct coord { short r, c; }; -static REMAILER **mix_type2_list (size_t * l); +static REMAILER **mix_type2_list (ssize_t * l); static REMAILER *mix_new_remailer (void); static const char *mix_format_caps (REMAILER * r); static int mix_chain_add (MIXCHAIN * chain, const char *s, REMAILER ** type2_list); static int mix_get_caps (const char *capstr); -static void mix_add_entry (REMAILER ***, REMAILER *, size_t *, size_t *); -static void mix_entry (char *b, size_t blen, MUTTMENU * menu, int num); +static void mix_add_entry (REMAILER ***, REMAILER *, ssize_t *, ssize_t *); +static void mix_entry (char *b, ssize_t blen, MUTTMENU * menu, int num); static void mix_free_remailer (REMAILER ** r); static void mix_free_type2_list (REMAILER *** ttlp); static void mix_redraw_ce (REMAILER ** type2_list, struct coord *coords, @@ -96,11 +85,11 @@ static int mix_get_caps (const char *capstr) } static void mix_add_entry (REMAILER *** type2_list, REMAILER * entry, - size_t * slots, size_t * used) + ssize_t * slots, ssize_t * used) { if (*used == *slots) { *slots += 5; - mem_realloc (type2_list, sizeof (REMAILER *) * (*slots)); + p_realloc(type2_list, *slots); } (*type2_list)[(*used)++] = entry; @@ -110,21 +99,21 @@ static void mix_add_entry (REMAILER *** type2_list, REMAILER * entry, static REMAILER *mix_new_remailer (void) { - return mem_calloc (1, sizeof (REMAILER)); + return p_new(REMAILER, 1); } static void mix_free_remailer (REMAILER ** r) { - mem_free (&(*r)->shortname); - mem_free (&(*r)->addr); - mem_free (&(*r)->ver); + p_delete(&(*r)->shortname); + p_delete(&(*r)->addr); + p_delete(&(*r)->ver); - mem_free (r); + p_delete(r); } /* parse the type2.list as given by mixmaster -T */ -static REMAILER **mix_type2_list (size_t * l) +static REMAILER **mix_type2_list (ssize_t * l) { FILE *fp; pid_t mm_pid; @@ -135,7 +124,7 @@ static REMAILER **mix_type2_list (size_t * l) char *t; REMAILER **type2_list = NULL, *p; - size_t slots = 0, used = 0; + ssize_t slots = 0, used = 0; if (!l) return NULL; @@ -155,7 +144,7 @@ static REMAILER **mix_type2_list (size_t * l) /* first, generate the "random" remailer */ p = mix_new_remailer (); - p->shortname = str_dup (""); + p->shortname = m_strdup(""); mix_add_entry (&type2_list, p, &slots, &used); while (fgets (line, sizeof (line), fp)) { @@ -164,12 +153,12 @@ static REMAILER **mix_type2_list (size_t * l) if (!(t = strtok (line, " \t\n"))) goto problem; - p->shortname = str_dup (t); + p->shortname = m_strdup(t); if (!(t = strtok (NULL, " \t\n"))) goto problem; - p->addr = str_dup (t); + p->addr = m_strdup(t); if (!(t = strtok (NULL, " \t\n"))) goto problem; @@ -177,7 +166,7 @@ static REMAILER **mix_type2_list (size_t * l) if (!(t = strtok (NULL, " \t\n"))) goto problem; - p->ver = str_dup (t); + p->ver = m_strdup(t); if (!(t = strtok (NULL, " \t\n"))) goto problem; @@ -209,7 +198,7 @@ static void mix_free_type2_list (REMAILER *** ttlp) for (i = 0; type2_list[i]; i++) mix_free_remailer (&type2_list[i]); - mem_free (type2_list); + p_delete(type2_list); } @@ -228,13 +217,13 @@ static void mix_screen_coordinates (REMAILER ** type2_list, if (!chain->cl) return; - mem_realloc (coordsp, sizeof (struct coord) * chain->cl); + p_realloc(coordsp, chain->cl); coords = *coordsp; if (i) { c = - coords[i - 1].c + str_len (type2_list[chain->ch[i - 1]]->shortname) + 2; + coords[i - 1].c + m_strlen(type2_list[chain->ch[i - 1]]->shortname) + 2; r = coords[i - 1].r; } else { @@ -245,7 +234,7 @@ static void mix_screen_coordinates (REMAILER ** type2_list, for (; i < chain->cl; i++) { oc = c; - c += str_len (type2_list[chain->ch[i]]->shortname) + 2; + c += m_strlen(type2_list[chain->ch[i]]->shortname) + 2; if (c >= COLS) { oc = c = MIX_HOFFSET; @@ -360,7 +349,7 @@ static const char *mix_format_caps (REMAILER * r) */ static const char *mix_entry_fmt (char *dest, - size_t destlen, + ssize_t destlen, char op, const char *src, const char *prefix, @@ -415,11 +404,12 @@ static const char *mix_entry_fmt (char *dest, -static void mix_entry (char *b, size_t blen, MUTTMENU * menu, int num) +static void mix_entry (char *b, ssize_t blen, MUTTMENU * menu, int num) { REMAILER **type2_list = (REMAILER **) menu->data; + int w = (COLS-SW) > blen ? blen : (COLS-SW); - mutt_FormatString (b, blen, NONULL (MixEntryFormat), mix_entry_fmt, + mutt_FormatString (b, w, NONULL (MixEntryFormat), mix_entry_fmt, (unsigned long) type2_list[num], M_FORMAT_ARROWCURSOR); } @@ -431,7 +421,7 @@ static int mix_chain_add (MIXCHAIN * chain, const char *s, if (chain->cl >= MAXMIXES) return -1; - if (!str_cmp (s, "0") || !ascii_strcasecmp (s, "")) { + if (!m_strcmp(s, "0") || !ascii_strcasecmp (s, "")) { chain->ch[chain->cl++] = 0; return 0; } @@ -457,20 +447,20 @@ static struct mapping_t RemailerHelp[] = { {N_("Delete"), OP_MIX_DELETE}, {N_("Abort"), OP_EXIT}, {N_("OK"), OP_MIX_USE}, - {NULL} + {NULL, OP_NULL} }; -void mix_make_chain (LIST ** chainp, int *redraw) +void mix_make_chain (string_list_t ** chainp, int *redraw) { - LIST *p; + string_list_t *p; MIXCHAIN *chain; int c_cur = 0, c_old = 0; int m_len; short c_redraw = 1; REMAILER **type2_list = NULL; - size_t ttll = 0; + ssize_t ttll = 0; struct coord *coords = NULL; @@ -480,7 +470,7 @@ void mix_make_chain (LIST ** chainp, int *redraw) int op; int i, j; - char *t; + const char *t; if (!(type2_list = mix_type2_list (&ttll))) { mutt_error _("Can't get mixmaster's type2.list!"); @@ -490,11 +480,11 @@ void mix_make_chain (LIST ** chainp, int *redraw) *redraw = REDRAW_FULL; - chain = mem_calloc (sizeof (MIXCHAIN), 1); + chain = p_new(MIXCHAIN, 1); for (p = *chainp; p; p = p->next) mix_chain_add (chain, (char *) p->data, type2_list); - mutt_free_list (chainp); + string_list_wipe(chainp); /* safety check */ for (i = 0; i < chain->cl; i++) { @@ -657,8 +647,8 @@ void mix_make_chain (LIST ** chainp, int *redraw) } mix_free_type2_list (&type2_list); - mem_free (&coords); - mem_free (&chain); + p_delete(&coords); + p_delete(&chain); } /* some safety checks before piping the message to mixmaster */ @@ -667,7 +657,7 @@ int mix_check_message (HEADER * msg) { const char *fqdn; short need_hostname = 0; - ADDRESS *p; + address_t *p; if (msg->env->cc || msg->env->bcc) { mutt_error _("Mixmaster doesn't accept Cc or Bcc headers."); @@ -706,7 +696,7 @@ int mix_check_message (HEADER * msg) return 0; } -int mix_send_message (LIST * chain, const char *tempfile) +int mix_send_message (string_list_t * chain, const char *tempfile) { char cmd[HUGE_STRING]; char tmp[HUGE_STRING]; @@ -716,7 +706,7 @@ int mix_send_message (LIST * chain, const char *tempfile) snprintf (cmd, sizeof (cmd), "cat %s | %s -m ", tempfile, Mixmaster); for (i = 0; chain; chain = chain->next, i = 1) { - strfcpy (tmp, cmd, sizeof (tmp)); + m_strcpy(tmp, sizeof(tmp), cmd); mutt_quote_filename (cd_quoted, sizeof (cd_quoted), (char *) chain->data); snprintf (cmd, sizeof (cmd), "%s%s%s", tmp, i ? "," : " -l ", cd_quoted); }