#define MAIN_C 1
-#if HAVE_CONFIG_H
-# include "config.h"
-#endif
+#include <lib-lib/lib-lib.h>
-#include <string.h>
-#include <stdlib.h>
-#include <locale.h>
-#include <unistd.h>
-#include <errno.h>
-#include <sys/stat.h>
#include <sys/utsname.h>
-#include <lib-lib/mem.h>
-#include <lib-lib/str.h>
-#include <lib-lib/macros.h>
-#include <lib-lib/file.h>
-#include <lib-lib/debug.h>
-#include <lib-lib/url.h>
-
+#include <lib-lua/lib-lua.h>
#include <lib-sys/mutt_signal.h>
-
#include <lib-mime/mime.h>
-
#include <lib-ui/curses.h>
+#include <lib-crypt/crypt.h>
+#include <lib-mx/mx.h>
#include "mutt.h"
-#include "mx.h"
+#include "alias.h"
#include "buffy.h"
#include "sort.h"
-#include <lib-crypt/crypt.h>
#include "keymap.h"
#include "mutt_idna.h"
-#include "xterm.h"
#ifdef HAVE_GETOPT_H
#include <getopt.h>
#endif
#ifdef USE_NNTP
-#include "nntp/nntp.h"
+#include <nntp/nntp.h>
#endif
#ifdef USE_LIBESMTP
#endif
#ifdef USE_HCACHE
-#if HAVE_QDBM
+#if defined(HAVE_QDBM)
#include <depot.h>
-#elif HAVE_GDBM
+#elif defined(HAVE_GDBM)
#include <gdbm.h>
-#elif HAVE_DB4
+#elif defined(HAVE_DB4)
#include <db.h>
#endif
#endif
#include <gnutls/gnutls.h>
#endif
-#ifdef CRYPT_BACKEND_GPGME
#include <gpgme.h>
-#endif
#ifdef USE_SSL
#include <openssl/opensslv.h>
static const char *Notice = N_("\
Copyright (C) 1996-2002 Michael R. Elkins and others.\n\
-Madmutt comes with ABSOLUTELY NO WARRANTY; for details type `madmutt -vv'.\n\
-Mutt is free software, and you are welcome to redistribute it\n\
-under certain conditions; type `madmutt -vv' for details.\n");
-
-static const char *Copyright_Mutt = N_("\
-Copyright (C) 1996-2004 Michael R. Elkins <me@mutt.org>\n\
-Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\n\
-Copyright (C) 1997-2005 Thomas Roessler <roessler@does-not-exist.org>\n\
-Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\n\
-Copyright (C) 1999-2005 Brendan Cully <brendan@kublai.com>\n\
-Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\n\
-Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\n");
-
-static const char *Copyright_Mutt_NG = N_("\
-Copyright (C) 2005:\n\
- Parts were written/modified by:\n\
- Andreas Krennmair <ak@synflood.at>\n\
- Nico Golde <nico@ngolde.de>\n\
- Rocco Rutte <pdmef@cs.tu-berlin.de>\n\
-\n\
-Lots of others not mentioned here contributed lots of code,\n\
-fixes, and suggestions.");
-
-static const char* Copyright_GPL_1 = N_("\
-\n\
- This program is free software; you can redistribute it and/or modify\n\
- it under the terms of the GNU General Public License as published by\n\
- the Free Software Foundation; either version 2 of the License, or\n\
- (at your option) any later version.\n");
-
-static const char* Copyright_GPL_2 = N_("\
- This program is distributed in the hope that it will be useful,\n\
- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\
- GNU General Public License for more details.\n");
-
-static const char* Copyright_GPL_3 = N_("\
- You should have received a copy of the GNU General Public License\n\
- along with this program; if not, write to the Free Software\n\
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n\
-");
+Copyright (C) 2005 The Mutt-ng Team\n\
+Copyright (C) 2006 Pierre Habouzit undation, Inc.\n\
+This is free software. You may redistribute copies of it under the terms of\n\
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n\
+There is NO WARRANTY, to the extent permitted by law.\n");
void mutt_exit (int code)
{
static void mutt_usage (void)
{
- puts (mutt_make_version (1));
+ puts (mutt_make_version());
puts
_("usage: madmutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f <file> ]\n\
madmutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -T\n\
madmutt [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H <file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> [ ... ]\n\
madmutt [ -n ] [ -e <cmd> ] [ -F <file> ] -p\n\
- madmutt -v[v]\n\
+ madmutt -v\n\
\n\
options:\n\
-A <alias>\texpand the given alias\n\
-a <file>\tattach a file to the message\n\
-b <address>\tspecify a blind carbon-copy (BCC) address\n\
-c <address>\tspecify a carbon-copy (CC) address");
-#if DEBUG
- puts _(" -d <level>\tlog debugging output to ~/.madmuttdebug0");
-#endif
puts _("\
-e <command>\tspecify a command to be executed after initialization\n\
-f <file>\tspecify which mailbox to read\n\
char buf[STRING];
#endif
- puts (mutt_make_version (1));
+ puts (mutt_make_version());
puts (_(Notice));
uname (&uts);
#endif
#ifdef USE_HCACHE
-#if HAVE_QDBM
+#if defined(HAVE_QDBM)
printf (" qdbm %s\n", dpversion);
-#elif HAVE_GDBM
+#elif defined(HAVE_GDBM)
printf (" gdbm %s\n", gdbm_version);
-#elif HAVE_DB4
+#elif defined(HAVE_DB4)
printf (" DB4 %d.%d.%d\n", DB_VERSION_MAJOR, DB_VERSION_MINOR,
DB_VERSION_PATCH);
#endif
printf (" %s\n",OPENSSL_VERSION_TEXT);
#endif
-#ifdef CRYPT_BACKEND_GPGME
printf (" gpgme %s\n", GPGME_VERSION);
-#endif
-
puts (_("Compile Options:"));
-#ifdef DEBUG
- puts (" +DEBUG");
-#else
- puts (" -DEBUG");
-#endif
-
puts (
#ifdef HOMESPOOL
" +HOMESPOOL "
#else
"-USE_SETGID "
#endif
-#ifdef USE_DOTLOCK
- "+USE_DOTLOCK "
-#else
- "-USE_DOTLOCK "
-#endif
#ifdef USE_FCNTL
"+USE_FCNTL "
#else
"-HAVE_REGCOMP "
#endif
"\n "
-#ifdef HAVE_COLOR
- "+HAVE_COLOR "
-#else
- "-HAVE_COLOR "
-#endif
#ifdef HAVE_START_COLOR
"+HAVE_START_COLOR "
#else
);
puts (
-#ifdef CRYPT_BACKEND_GPGME
"+CRYPT_BACKEND_GPGME "
-#else
- "-CRYPT_BACKEND_GPGME "
-#endif
-#ifdef BUFFY_SIZE
- "+BUFFY_SIZE "
-#else
- "-BUFFY_SIZE "
-#endif
"\n "
#ifdef ENABLE_NLS
"+ENABLE_NLS "
"-HAVE_LANGINFO_YESEXPR "
#endif
"\n "
-#if HAVE_ICONV
+#ifdef HAVE_ICONV
"+HAVE_ICONV "
#else
"-HAVE_ICONV "
#endif
-#if ICONV_NONTRANS
- "+ICONV_NONTRANS "
-#else
- "-ICONV_NONTRANS "
-#endif
-#if HAVE_LIBIDN
+#ifdef HAVE_LIBIDN
"+HAVE_LIBIDN "
#else
"-HAVE_LIBIDN "
#endif
-#if HAVE_GETSID
+#ifdef HAVE_GETSID
"+HAVE_GETSID "
#else
"-HAVE_GETSID "
#endif
-#if HAVE_GETADDRINFO
+#ifdef HAVE_GETADDRINFO
"+HAVE_GETADDRINFO "
#else
"-HAVE_GETADDRINFO "
);
puts (_("Built-In Defaults:"));
-
-#ifdef ISPELL
- printf (" +ISPELL=\"%s\"\n", ISPELL);
-#else
- puts (" -ISPELL");
-#endif
-
printf (" +SENDMAIL=\"%s\"\n", SENDMAIL);
printf (" +MAILPATH=\"%s\"\n", MAILPATH);
printf (" +PKGDATADIR=\"%s\"\n", PKGDATADIR);
printf (" +PKGDOCDIR=\"%s\"\n", PKGDOCDIR);
printf (" +SYSCONFDIR=\"%s\"\n", SYSCONFDIR);
-#ifdef MIXMASTER
printf (" +MIXMASTER=\"%s\"\n\n", MIXMASTER);
-#else
- puts (" -MIXMASTER\n");
-#endif
puts (_("MadMutt is based on Madmutt wich was based on Mutt before\n"));
keypad (stdscr, TRUE);
cbreak ();
noecho ();
-#if HAVE_TYPEAHEAD
+#ifdef HAVE_TYPEAHEAD
typeahead (-1); /* simulate smooth scrolling */
#endif
-#if HAVE_META
+#ifdef HAVE_META
meta (stdscr, TRUE);
#endif
}
char *draftFile = NULL;
char *newMagic = NULL;
HEADER *msg = NULL;
- LIST *attach = NULL;
- LIST *commands = NULL;
- LIST *queries = NULL;
- LIST *alias_queries = NULL;
+ string_list_t *attach = NULL;
+ string_list_t *commands = NULL;
+ string_list_t *queries = NULL;
+ string_list_t *alias_queries = NULL;
int sendflags = 0;
int flags = 0;
int version = 0;
int dump_variables = -1;
/* initialize random number for tmp file creation */
- srand ((unsigned int) time (NULL));
+ srand48((unsigned int) time (NULL));
/* sanity check against stupid administrators */
mutt_error = mutt_nocurses_error;
mutt_message = mutt_nocurses_error;
- SRAND (time (NULL));
+ srand48 (time (NULL));
umask (077);
p_clear(Options, countof(Options));
p_clear(QuadOptions, countof(QuadOptions));
+ while ((i = getopt(argc, argv, "A:a:b:F:f:c:e:H:s:i:hm:npQ:RTtvyzZ"
#ifdef USE_NNTP
- while ((i =
- getopt (argc, argv,
- "A:a:b:F:f:c:d:e:g:GH:s:i:hm:npQ:RTtvyzZ")) != EOF)
-#else
- while ((i =
- getopt (argc, argv, "A:a:b:F:f:c:d:e:H:s:i:hm:npQ:RTtvyzZ")) != EOF)
+ "g:G"
#endif
+ )) >= 0)
switch (i) {
case 'A':
alias_queries = mutt_add_list (alias_queries, optarg);
msg->env->cc = rfc822_parse_adrlist (msg->env->cc, optarg);
break;
- case 'd':
- {
- char buf[LONG_STRING];
- int level = atoi (optarg);
-
- snprintf (buf, sizeof (buf), "set debug_level=%d", level);
- commands = mutt_add_list (commands, buf);
- debug_setlevel (level);
- }
- break;
-
case 't':
dump_variables = 2;
break;
mutt_usage ();
}
- switch (version) {
- case 0:
- break;
- case 1:
+ if (version) {
show_version ();
- break;
- default:
- puts (mutt_make_version (1));
- puts (_(Copyright_Mutt));
- puts (_(Copyright_Mutt_NG));
- puts (_(Copyright_GPL_1));
- puts (_(Copyright_GPL_2));
- puts (_(Copyright_GPL_3));
- exit (0);
}
/* Check for a batch send. */
start_curses ();
/* set defaults and read init files */
- mx_init ();
mutt_init (flags & M_NOSYSRC, commands);
- mutt_free_list (&commands);
-
- /* Initialize crypto */
- crypt_init ();
+ string_list_wipe(&commands);
if (queries)
return mutt_query_variables (queries);
address_t *a;
for (; alias_queries; alias_queries = alias_queries->next) {
- if ((a = alias_lookup(Aliases, alias_queries->data))) {
+ if ((a = address_list_dup(alias_lookup(alias_queries->data)))) {
/* output in machine-readable form */
mutt_addrlist_to_idna (a, NULL);
mutt_write_address_list (a, stdout, 0, 0);
- }
- else {
+ address_list_wipe(&a);
+ } else {
rv = 1;
printf ("%s\n", alias_queries->data);
}
char buf[LONG_STRING];
char *tempfile = NULL, *infile = NULL;
char *bodytext = NULL;
+ FILE *fout;
if (!option (OPTNOCURSES))
mutt_flushinp ();
else
fin = NULL;
- mutt_mktemp (buf);
- tempfile = m_strdup(buf);
-
if (draftFile)
msg->env = mutt_read_rfc822_header (fin, NULL, 1, 0);
/* is the following if still needed? */
- if (tempfile) {
- FILE *fout;
+ fout = m_tempfile(buf, sizeof(buf), NONULL(MCore.tmpdir), NULL);
+ tempfile = m_strdup(buf);
- if ((fout = safe_fopen (tempfile, "w")) == NULL) {
+ if (tempfile) {
+ if (!fout) {
if (!option (OPTNOCURSES))
mutt_endwin (NULL);
perror (tempfile);
- fclose (fin);
+ m_fclose(&fin);
p_delete(&tempfile);
exit (1);
}
mutt_copy_stream (fin, fout);
else if (bodytext)
fputs (bodytext, fout);
- fclose (fout);
+ m_fclose(&fout);
if (fin && fin != stdin)
- fclose (fin);
+ m_fclose(&fin);
}
}
p_delete(&bodytext);
if (attach) {
- LIST *t = attach;
+ string_list_t *t = attach;
BODY *a = NULL;
while (t) {
if (!option (OPTNOCURSES))
mutt_endwin (NULL);
fprintf (stderr, _("%s: unable to attach file.\n"), t->data);
- mutt_free_list (&attach);
+ string_list_wipe(&attach);
exit (1);
}
t = t->next;
}
- mutt_free_list (&attach);
+ string_list_wipe(&attach);
}
ci_send_message (sendflags, msg, tempfile, NULL, NULL);
mutt_endwin (Errorbuf);
exit (1);
}
- }
- else
+ } else
#endif
- if (!Incoming) {
+ if (!Incoming.len) {
mutt_endwin _("No incoming mailboxes defined.");
exit (1);
unset_option (OPTNEWS);
nntp_expand_path (folder, sizeof (folder),
&CurrentNewsSrv->conn->account);
- }
- else
+ } else
#endif
mutt_expand_path (folder, sizeof (folder));
|| !explicit_folder) {
mutt_index_menu ();
if (option (OPTXTERMSETTITLES))
- mutt_xterm_set_title (NONULL (XtermLeave));
+ printf("\033]2;%s\007", NONULL(XtermLeave));
if (Context)
p_delete(&Context);
}
mutt_endwin (Errorbuf);
}
+ luaM_shutdown();
exit (0);
}