/*
+ * Copyright notice from original mutt:
* Copyright (C) 1999-2000 Thomas Roessler <roessler@does-not-exist.org>
- *
- * 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.
*/
/*
# include "config.h"
#endif
+#include <lib-lib/mem.h>
+#include <lib-lib/str.h>
+#include <lib-lib/macros.h>
+
#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 <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/file.h>
#include <fcntl.h>
+#define SW (option(OPTMBOXPANE)?SidebarWidth:0)
+
#ifdef MIXMASTER
struct coord {
{
if (*used == *slots) {
*slots += 5;
- safe_realloc (type2_list, sizeof (REMAILER *) * (*slots));
+ p_realloc(type2_list, *slots);
}
(*type2_list)[(*used)++] = entry;
static REMAILER *mix_new_remailer (void)
{
- return safe_calloc (1, sizeof (REMAILER));
+ return p_new(REMAILER, 1);
}
static void mix_free_remailer (REMAILER ** r)
{
- FREE (&(*r)->shortname);
- FREE (&(*r)->addr);
- FREE (&(*r)->ver);
+ p_delete(&(*r)->shortname);
+ p_delete(&(*r)->addr);
+ p_delete(&(*r)->ver);
- FREE (r);
+ p_delete(r);
}
/* parse the type2.list as given by mixmaster -T */
/* first, generate the "random" remailer */
p = mix_new_remailer ();
- p->shortname = safe_strdup ("<random>");
+ p->shortname = m_strdup("<random>");
mix_add_entry (&type2_list, p, &slots, &used);
while (fgets (line, sizeof (line), fp)) {
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;
for (i = 0; type2_list[i]; i++)
mix_free_remailer (&type2_list[i]);
- FREE (type2_list);
+ p_delete(type2_list);
}
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;
+ coords[i - 1].c + m_strlen(type2_list[chain->ch[i - 1]]->shortname) + 2;
r = coords[i - 1].r;
}
else {
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) {
oc = c = MIX_HOFFSET;
static void mix_entry (char *b, size_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);
}
if (chain->cl >= MAXMIXES)
return -1;
- if (!mutt_strcmp (s, "0") || !ascii_strcasecmp (s, "<random>")) {
+ if (!str_cmp (s, "0") || !ascii_strcasecmp (s, "<random>")) {
chain->ch[chain->cl++] = 0;
return 0;
}
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!");
*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);
}
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 */