X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=remailer.c;h=b4e526e73e7036de6fc49ced60c5459acff443e1;hp=8172f7c217ab45e364aa02553282f8b4b555ef54;hb=c660c8cbae7f647c637502779862e4a36ad6a074;hpb=6833ce8bdca2d64e14485118f2a4417b7e1cb1b1 diff --git a/remailer.c b/remailer.c index 8172f7c..b4e526e 100644 --- a/remailer.c +++ b/remailer.c @@ -1,36 +1,36 @@ /* + * Copyright notice from original mutt: * Copyright (C) 1999-2000 Thomas Roessler - * - * This program is free software; you can redistribute it - * and/or modify it under the terms of the GNU General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later - * version. - * - * This program is distributed in the hope that it will be - * useful, but WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more - * details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the Free - * Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111, USA. - */ + * + * This file is part of mutt-ng, see http://www.muttng.org/. + * It's licensed under the GNU General Public License, + * please see the file GPL in the top level source directory. + */ /* * Mixmaster support for Mutt */ +#if HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include +#include +#include +#include + #include "mutt.h" +#include "recvattach.h" #include "mutt_curses.h" #include "mutt_menu.h" -#include "mutt_regex.h" -#include "mapping.h" #include "remailer.h" +#include "lib/rx.h" + #include #include #include @@ -39,95 +39,98 @@ #include #include +#define SW (option(OPTMBOXPANE)?SidebarWidth:0) + #ifdef MIXMASTER -struct coord -{ +struct coord { short r, c; }; -static REMAILER **mix_type2_list (size_t *l); +static REMAILER **mix_type2_list (size_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 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_free_remailer (REMAILER **r); -static void mix_free_type2_list (REMAILER ***ttlp); -static void mix_redraw_ce (REMAILER **type2_list, struct coord *coords, MIXCHAIN *chain, int i, short selected); -static void mix_redraw_chain (REMAILER **type2_list, struct coord *coords, MIXCHAIN *chain, int cur); +static void mix_entry (char *b, size_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, + MIXCHAIN * chain, int i, short selected); +static void mix_redraw_chain (REMAILER ** type2_list, struct coord *coords, + MIXCHAIN * chain, int cur); static void mix_redraw_head (MIXCHAIN *); -static void mix_screen_coordinates (REMAILER **type2_list, struct coord **, MIXCHAIN *, int); +static void mix_screen_coordinates (REMAILER ** type2_list, struct coord **, + MIXCHAIN *, int); static int mix_get_caps (const char *capstr) { int caps = 0; - while (*capstr) - { - switch (*capstr) - { - case 'C': - caps |= MIX_CAP_COMPRESS; - break; - - case 'M': - caps |= MIX_CAP_MIDDLEMAN; - break; - - case 'N': + while (*capstr) { + switch (*capstr) { + case 'C': + caps |= MIX_CAP_COMPRESS; + break; + + case 'M': + caps |= MIX_CAP_MIDDLEMAN; + break; + + case 'N': { - switch (*++capstr) - { - case 'm': - caps |= MIX_CAP_NEWSMAIL; - break; - - case 'p': - caps |= MIX_CAP_NEWSPOST; - break; - - } + switch (*++capstr) { + case 'm': + caps |= MIX_CAP_NEWSMAIL; + break; + + case 'p': + caps |= MIX_CAP_NEWSPOST; + break; + + } } } - - if (*capstr) capstr++; + + if (*capstr) + capstr++; } - + return caps; } -static void mix_add_entry (REMAILER ***type2_list, REMAILER *entry, - size_t *slots, size_t *used) +static void mix_add_entry (REMAILER *** type2_list, REMAILER * entry, + size_t * slots, size_t * used) { - if (*used == *slots) - { + if (*used == *slots) { *slots += 5; - safe_realloc (type2_list, sizeof (REMAILER *) * (*slots)); + p_realloc(type2_list, *slots); } - + (*type2_list)[(*used)++] = entry; - if (entry) entry->num = *used; + if (entry) + entry->num = *used; } static REMAILER *mix_new_remailer (void) { - return safe_calloc (1, sizeof (REMAILER)); + return p_new(REMAILER, 1); } -static void mix_free_remailer (REMAILER **r) +static void mix_free_remailer (REMAILER ** r) { - FREE (&(*r)->shortname); - FREE (&(*r)->addr); - FREE (&(*r)->ver); - - FREE (r); + p_delete(&(*r)->shortname); + p_delete(&(*r)->addr); + p_delete(&(*r)->ver); + + 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 (size_t * l) { FILE *fp; pid_t mm_pid; @@ -136,83 +139,83 @@ static REMAILER **mix_type2_list (size_t *l) char cmd[HUGE_STRING + _POSIX_PATH_MAX]; char line[HUGE_STRING]; char *t; - + REMAILER **type2_list = NULL, *p; size_t slots = 0, used = 0; if (!l) return NULL; - + if ((devnull = open ("/dev/null", O_RDWR)) == -1) return NULL; - + snprintf (cmd, sizeof (cmd), "%s -T", Mixmaster); - - if ((mm_pid = mutt_create_filter_fd (cmd, NULL, &fp, NULL, devnull, -1, devnull)) == -1) - { + + if ((mm_pid = + mutt_create_filter_fd (cmd, NULL, &fp, NULL, devnull, -1, + devnull)) == -1) { close (devnull); return NULL; } /* first, generate the "random" remailer */ - + p = mix_new_remailer (); - p->shortname = safe_strdup (""); + p->shortname = m_strdup(""); mix_add_entry (&type2_list, p, &slots, &used); - - while (fgets (line, sizeof (line), fp)) - { + + while (fgets (line, sizeof (line), fp)) { p = mix_new_remailer (); - + if (!(t = strtok (line, " \t\n"))) goto problem; - - p->shortname = safe_strdup (t); - + + p->shortname = m_strdup(t); + if (!(t = strtok (NULL, " \t\n"))) goto problem; - p->addr = safe_strdup (t); - + p->addr = m_strdup(t); + if (!(t = strtok (NULL, " \t\n"))) goto problem; if (!(t = strtok (NULL, " \t\n"))) goto problem; - p->ver = safe_strdup (t); - + p->ver = m_strdup(t); + if (!(t = strtok (NULL, " \t\n"))) goto problem; p->caps = mix_get_caps (t); - + mix_add_entry (&type2_list, p, &slots, &used); continue; - - problem: + + problem: mix_free_remailer (&p); } - + *l = used; mix_add_entry (&type2_list, NULL, &slots, &used); mutt_wait_filter (mm_pid); close (devnull); - + return type2_list; } -static void mix_free_type2_list (REMAILER ***ttlp) +static void mix_free_type2_list (REMAILER *** ttlp) { int i; REMAILER **type2_list = *ttlp; - + for (i = 0; type2_list[i]; i++) mix_free_remailer (&type2_list[i]); - - FREE (type2_list); + + p_delete(type2_list); } @@ -221,68 +224,61 @@ static void mix_free_type2_list (REMAILER ***ttlp) #define MIX_MAXROW (LINES - 3) -static void mix_screen_coordinates (REMAILER **type2_list, - struct coord **coordsp, - MIXCHAIN *chain, - int i) +static void mix_screen_coordinates (REMAILER ** type2_list, + struct coord **coordsp, + MIXCHAIN * chain, int i) { short c, r, oc; struct coord *coords; if (!chain->cl) return; - - safe_realloc (coordsp, sizeof (struct coord) * chain->cl); - + + p_realloc(coordsp, chain->cl); + coords = *coordsp; - - if (i) - { - c = coords[i-1].c + strlen (type2_list[chain->ch[i-1]]->shortname) + 2; - r = coords[i-1].r; + + if (i) { + c = + coords[i - 1].c + m_strlen(type2_list[chain->ch[i - 1]]->shortname) + 2; + r = coords[i - 1].r; } - else - { + else { r = MIX_VOFFSET; c = MIX_HOFFSET; } - - - for (; i < chain->cl; i++) - { + + + for (; i < chain->cl; i++) { oc = c; - c += strlen (type2_list[chain->ch[i]]->shortname) + 2; + c += m_strlen(type2_list[chain->ch[i]]->shortname) + 2; - if (c >= COLS) - { + if (c >= COLS) { oc = c = MIX_HOFFSET; r++; } - + coords[i].c = oc; coords[i].r = r; - + } - + } -static void mix_redraw_ce (REMAILER **type2_list, - struct coord *coords, - MIXCHAIN *chain, - int i, - short selected) +static void mix_redraw_ce (REMAILER ** type2_list, + struct coord *coords, + MIXCHAIN * chain, int i, short selected) { if (!coords || !chain) return; - - if (coords[i].r < MIX_MAXROW) - { - + + if (coords[i].r < MIX_MAXROW) { + if (selected) SETCOLOR (MT_COLOR_INDICATOR); else SETCOLOR (MT_COLOR_NORMAL); - + mvaddstr (coords[i].r, coords[i].c, type2_list[chain->ch[i]]->shortname); SETCOLOR (MT_COLOR_NORMAL); @@ -291,18 +287,15 @@ static void mix_redraw_ce (REMAILER **type2_list, } } -static void mix_redraw_chain (REMAILER **type2_list, - struct coord *coords, - MIXCHAIN *chain, - int cur) +static void mix_redraw_chain (REMAILER ** type2_list, + struct coord *coords, MIXCHAIN * chain, int cur) { int i; - + SETCOLOR (MT_COLOR_NORMAL); BKGDSET (MT_COLOR_NORMAL); - - for (i = MIX_VOFFSET; i < MIX_MAXROW; i++) - { + + for (i = MIX_VOFFSET; i < MIX_MAXROW; i++) { move (i, 0); clrtoeol (); } @@ -311,57 +304,54 @@ static void mix_redraw_chain (REMAILER **type2_list, mix_redraw_ce (type2_list, coords, chain, i, i == cur); } -static void mix_redraw_head (MIXCHAIN *chain) +static void mix_redraw_head (MIXCHAIN * chain) { SETCOLOR (MT_COLOR_STATUS); - mvprintw (MIX_VOFFSET - 1, 0, "-- Remailer chain [Length: %d]", chain ? chain->cl : 0); - + mvprintw (MIX_VOFFSET - 1, 0, "-- Remailer chain [Length: %d]", + chain ? chain->cl : 0); + BKGDSET (MT_COLOR_STATUS); clrtoeol (); - + BKGDSET (MT_COLOR_NORMAL); SETCOLOR (MT_COLOR_NORMAL); } -static const char *mix_format_caps (REMAILER *r) +static const char *mix_format_caps (REMAILER * r) { static char capbuff[10]; char *t = capbuff; - + if (r->caps & MIX_CAP_COMPRESS) *t++ = 'C'; else *t++ = ' '; - + if (r->caps & MIX_CAP_MIDDLEMAN) *t++ = 'M'; else *t++ = ' '; - - if (r->caps & MIX_CAP_NEWSPOST) - { + + if (r->caps & MIX_CAP_NEWSPOST) { *t++ = 'N'; *t++ = 'p'; } - else - { + else { *t++ = ' '; *t++ = ' '; } - - if (r->caps & MIX_CAP_NEWSMAIL) - { + + if (r->caps & MIX_CAP_NEWSMAIL) { *t++ = 'N'; *t++ = 'm'; } - else - { + else { *t++ = ' '; *t++ = ' '; } - + *t = '\0'; - + return capbuff; } @@ -376,56 +366,50 @@ static const char *mix_format_caps (REMAILER *r) */ static const char *mix_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) + size_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]; REMAILER *remailer = (REMAILER *) data; int optional = (flags & M_FORMAT_OPTIONAL); - switch (op) - { - case 'n': - if (!optional) - { - snprintf (fmt, sizeof (fmt), "%%%sd", prefix); - snprintf (dest, destlen, fmt, remailer->num); - } - break; - case 'c': - if (!optional) - { - snprintf (fmt, sizeof (fmt), "%%%ss", prefix); - snprintf (dest, destlen, fmt, mix_format_caps(remailer)); - } - break; - case 's': - if (!optional) - { - snprintf (fmt, sizeof (fmt), "%%%ss", prefix); - snprintf (dest, destlen, fmt, NONULL(remailer->shortname)); - } - else if (!remailer->shortname) - optional = 0; - break; - case 'a': - if (!optional) - { - snprintf (fmt, sizeof (fmt), "%%%ss", prefix); - snprintf (dest, destlen, fmt, NONULL(remailer->addr)); - } - else if (!remailer->addr) - optional = 0; - break; - - default: - *dest = '\0'; + switch (op) { + case 'n': + if (!optional) { + snprintf (fmt, sizeof (fmt), "%%%sd", prefix); + snprintf (dest, destlen, fmt, remailer->num); + } + break; + case 'c': + if (!optional) { + snprintf (fmt, sizeof (fmt), "%%%ss", prefix); + snprintf (dest, destlen, fmt, mix_format_caps (remailer)); + } + break; + case 's': + if (!optional) { + snprintf (fmt, sizeof (fmt), "%%%ss", prefix); + snprintf (dest, destlen, fmt, NONULL (remailer->shortname)); + } + else if (!remailer->shortname) + optional = 0; + break; + case 'a': + if (!optional) { + snprintf (fmt, sizeof (fmt), "%%%ss", prefix); + snprintf (dest, destlen, fmt, NONULL (remailer->addr)); + } + else if (!remailer->addr) + optional = 0; + break; + + default: + *dest = '\0'; } if (optional) @@ -436,100 +420,97 @@ 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, size_t blen, MUTTMENU * menu, int num) { REMAILER **type2_list = (REMAILER **) menu->data; - mutt_FormatString (b, blen, NONULL (MixEntryFormat), mix_entry_fmt, - (unsigned long) type2_list[num], M_FORMAT_ARROWCURSOR); + int w=(COLS-SW)>blen?blen:(COLS-SW); + + mutt_FormatString (b, w, NONULL (MixEntryFormat), mix_entry_fmt, + (unsigned long) type2_list[num], M_FORMAT_ARROWCURSOR); } -static int mix_chain_add (MIXCHAIN *chain, const char *s, - REMAILER **type2_list) +static int mix_chain_add (MIXCHAIN * chain, const char *s, + REMAILER ** type2_list) { int i; - + if (chain->cl >= MAXMIXES) return -1; - - if (!mutt_strcmp (s, "0") || !ascii_strcasecmp (s, "")) - { + + if (!m_strcmp(s, "0") || !ascii_strcasecmp (s, "")) { chain->ch[chain->cl++] = 0; return 0; } - for (i = 0; type2_list[i]; i++) - { - if (!ascii_strcasecmp (s, type2_list[i]->shortname)) - { + for (i = 0; type2_list[i]; i++) { + if (!ascii_strcasecmp (s, type2_list[i]->shortname)) { chain->ch[chain->cl++] = i; return 0; } } - + /* replace unknown remailers by */ - + if (!type2_list[i]) chain->ch[chain->cl++] = 0; return 0; } -static struct mapping_t RemailerHelp[] = -{ - { N_("Append"), OP_MIX_APPEND }, - { N_("Insert"), OP_MIX_INSERT }, - { N_("Delete"), OP_MIX_DELETE }, - { N_("Abort"), OP_EXIT }, - { N_("OK"), OP_MIX_USE }, - { NULL } +static struct mapping_t RemailerHelp[] = { + {N_("Append"), OP_MIX_APPEND}, + {N_("Insert"), OP_MIX_INSERT}, + {N_("Delete"), OP_MIX_DELETE}, + {N_("Abort"), OP_EXIT}, + {N_("OK"), OP_MIX_USE}, + {NULL, OP_NULL} }; - -void mix_make_chain (LIST **chainp, int *redraw) + +void mix_make_chain (LIST ** chainp, int *redraw) { LIST *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; - + struct coord *coords = NULL; - + MUTTMENU *menu; char helpstr[SHORT_STRING]; short loop = 1; int op; - + int i, j; - char *t; + const char *t; - if (!(type2_list = mix_type2_list (&ttll))) - { + if (!(type2_list = mix_type2_list (&ttll))) { mutt_error _("Can't get mixmaster's type2.list!"); + return; } *redraw = REDRAW_FULL; - - chain = safe_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); - + /* safety check */ - for (i = 0; i < chain->cl; i++) - { + for (i = 0; i < chain->cl; i++) { if (chain->ch[i] >= ttll) chain->ch[i] = 0; } - + mix_screen_coordinates (type2_list, &coords, chain, 0); - + menu = mutt_new_menu (); menu->menu = MENU_MIX; menu->max = ttll; @@ -537,177 +518,167 @@ void mix_make_chain (LIST **chainp, int *redraw) menu->tag = NULL; menu->title = _("Select a remailer chain."); menu->data = type2_list; - menu->help = mutt_compile_help (helpstr, sizeof (helpstr), MENU_MIX, RemailerHelp); + menu->help = + mutt_compile_help (helpstr, sizeof (helpstr), MENU_MIX, RemailerHelp); m_len = menu->pagelen = MIX_VOFFSET - menu->offset - 1; - - while (loop) - { - if (menu->pagelen != m_len) - { + + while (loop) { + if (menu->pagelen != m_len) { menu->pagelen = m_len; menu->redraw = REDRAW_FULL; } - - if (c_redraw) - { + + if (c_redraw) { mix_redraw_head (chain); mix_redraw_chain (type2_list, coords, chain, c_cur); c_redraw = 0; } - else if (c_cur != c_old) - { + else if (c_cur != c_old) { mix_redraw_ce (type2_list, coords, chain, c_old, 0); mix_redraw_ce (type2_list, coords, chain, c_cur, 1); } - + c_old = c_cur; - - switch ((op = mutt_menuLoop (menu))) - { - case OP_REDRAW: + + switch ((op = mutt_menuLoop (menu))) { + case OP_REDRAW: { - menu_redraw_status (menu); - mix_redraw_head (chain); - mix_screen_coordinates (type2_list, &coords, chain, 0); - mix_redraw_chain (type2_list, coords, chain, c_cur); - menu->pagelen = m_len = MIX_VOFFSET - menu->offset - 1; - break; + menu_redraw_status (menu); + mix_redraw_head (chain); + mix_screen_coordinates (type2_list, &coords, chain, 0); + mix_redraw_chain (type2_list, coords, chain, c_cur); + menu->pagelen = m_len = MIX_VOFFSET - menu->offset - 1; + break; } - - case OP_EXIT: + + case OP_EXIT: { - chain->cl = 0; - loop = 0; - break; + chain->cl = 0; + loop = 0; + break; } - case OP_MIX_USE: + case OP_MIX_USE: { - if (!chain->cl) - { - chain->cl++; - chain->ch[0] = menu->current; - mix_screen_coordinates (type2_list, &coords, chain, c_cur); - c_redraw = 1; - } - - if (chain->cl && chain->ch[chain->cl - 1] && - (type2_list[chain->ch[chain->cl-1]]->caps & MIX_CAP_MIDDLEMAN)) - { - mutt_error ( _("Error: %s can't be used as the final remailer of a chain."), - type2_list[chain->ch[chain->cl - 1]]->shortname); - } - else - { - loop = 0; - } - break; + if (!chain->cl) { + chain->cl++; + chain->ch[0] = menu->current; + mix_screen_coordinates (type2_list, &coords, chain, c_cur); + c_redraw = 1; + } + + if (chain->cl && chain->ch[chain->cl - 1] && + (type2_list[chain->ch[chain->cl - 1]]->caps & MIX_CAP_MIDDLEMAN)) + { + mutt_error (_ + ("Error: %s can't be used as the final remailer of a chain."), + type2_list[chain->ch[chain->cl - 1]]->shortname); + } + else { + loop = 0; + } + break; } - case OP_GENERIC_SELECT_ENTRY: - case OP_MIX_APPEND: + case OP_GENERIC_SELECT_ENTRY: + case OP_MIX_APPEND: { - if (chain->cl < MAXMIXES && c_cur < chain->cl) - c_cur++; + if (chain->cl < MAXMIXES && c_cur < chain->cl) + c_cur++; } /* fallthrough */ - case OP_MIX_INSERT: + case OP_MIX_INSERT: { - if (chain->cl < MAXMIXES) - { - chain->cl++; - for (i = chain->cl - 1; i > c_cur; i--) - chain->ch[i] = chain->ch[i-1]; - - chain->ch[c_cur] = menu->current; - mix_screen_coordinates (type2_list, &coords, chain, c_cur); - c_redraw = 1; - } - else - mutt_error ( _("Mixmaster chains are limited to %d elements."), - MAXMIXES); - - break; + if (chain->cl < MAXMIXES) { + chain->cl++; + for (i = chain->cl - 1; i > c_cur; i--) + chain->ch[i] = chain->ch[i - 1]; + + chain->ch[c_cur] = menu->current; + mix_screen_coordinates (type2_list, &coords, chain, c_cur); + c_redraw = 1; + } + else + mutt_error (_("Mixmaster chains are limited to %d elements."), + MAXMIXES); + + break; } - - case OP_MIX_DELETE: + + case OP_MIX_DELETE: { - if (chain->cl) - { - chain->cl--; - - for (i = c_cur; i < chain->cl; i++) - chain->ch[i] = chain->ch[i+1]; - - if (c_cur == chain->cl && c_cur) - c_cur--; - - mix_screen_coordinates (type2_list, &coords, chain, c_cur); - c_redraw = 1; - } - else - { - mutt_error _("The remailer chain is already empty."); - } - break; + if (chain->cl) { + chain->cl--; + + for (i = c_cur; i < chain->cl; i++) + chain->ch[i] = chain->ch[i + 1]; + + if (c_cur == chain->cl && c_cur) + c_cur--; + + mix_screen_coordinates (type2_list, &coords, chain, c_cur); + c_redraw = 1; + } + else { + mutt_error _("The remailer chain is already empty."); + } + break; } - - case OP_MIX_CHAIN_PREV: + + case OP_MIX_CHAIN_PREV: { - if (c_cur) - c_cur--; - else - mutt_error _("You already have the first chain element selected."); - - break; + if (c_cur) + c_cur--; + else + mutt_error _("You already have the first chain element selected."); + + break; } - - case OP_MIX_CHAIN_NEXT: + + case OP_MIX_CHAIN_NEXT: { - if (chain->cl && c_cur < chain->cl - 1) - c_cur++; - else - mutt_error _("You already have the last chain element selected."); - - break; + if (chain->cl && c_cur < chain->cl - 1) + c_cur++; + else + mutt_error _("You already have the last chain element selected."); + + break; } } } - + mutt_menuDestroy (&menu); /* construct the remailer list */ - - if (chain->cl) - { - for (i = 0; i < chain->cl; i++) - { + + if (chain->cl) { + for (i = 0; i < chain->cl; i++) { if ((j = chain->ch[i])) - t = type2_list[j]->shortname; + t = type2_list[j]->shortname; else - t = "*"; - + t = "*"; + *chainp = mutt_add_list (*chainp, t); } } - + mix_free_type2_list (&type2_list); - FREE (&coords); - FREE (&chain); + p_delete(&coords); + p_delete(&chain); } /* some safety checks before piping the message to mixmaster */ -int mix_check_message (HEADER *msg) +int mix_check_message (HEADER * msg) { const char *fqdn; short need_hostname = 0; ADDRESS *p; - - if (msg->env->cc || msg->env->bcc) - { + + if (msg->env->cc || msg->env->bcc) { mutt_error _("Mixmaster doesn't accept Cc or Bcc headers."); + return -1; } @@ -717,24 +688,22 @@ int mix_check_message (HEADER *msg) * use_domain won't be respected at this point, hidden_host will. */ - for (p = msg->env->to; p; p = p->next) - { - if (!p->group && strchr (p->mailbox, '@') == NULL) - { + for (p = msg->env->to; p; p = p->next) { + if (!p->group && strchr (p->mailbox, '@') == NULL) { need_hostname = 1; break; } } - - if (need_hostname) - { - - if (!(fqdn = mutt_fqdn (1))) - { - mutt_error _("Please set the hostname variable to a proper value when using mixmaster!"); + + if (need_hostname) { + + if (!(fqdn = mutt_fqdn (1))) { + mutt_error + _ + ("Please set the hostname variable to a proper value when using mixmaster!"); return (-1); } - + /* Cc and Bcc are empty at this point. */ rfc822_qualify (msg->env->to, fqdn); rfc822_qualify (msg->env->reply_to, fqdn); @@ -744,7 +713,7 @@ int mix_check_message (HEADER *msg) return 0; } -int mix_send_message (LIST *chain, const char *tempfile) +int mix_send_message (LIST * chain, const char *tempfile) { char cmd[HUGE_STRING]; char tmp[HUGE_STRING]; @@ -752,22 +721,19 @@ int mix_send_message (LIST *chain, const char *tempfile) int i; snprintf (cmd, sizeof (cmd), "cat %s | %s -m ", tempfile, Mixmaster); - - for (i = 0; chain; chain = chain->next, i = 1) - { - strfcpy (tmp, cmd, sizeof (tmp)); + + for (i = 0; chain; chain = chain->next, i = 1) { + 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); } if (!option (OPTNOCURSES)) mutt_endwin (NULL); - - if ((i = mutt_system (cmd))) - { + + if ((i = mutt_system (cmd))) { fprintf (stderr, _("Error sending message, child exited %d.\n"), i); - if (!option (OPTNOCURSES)) - { + if (!option (OPTNOCURSES)) { mutt_any_key_to_continue (NULL); mutt_error _("Error sending message."); } @@ -776,6 +742,6 @@ int mix_send_message (LIST *chain, const char *tempfile) unlink (tempfile); return i; } - + #endif