#define MAIN_C 1
-#if HAVE_CONFIG_H
+#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
+#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/url.h>
+
+#include <lib-sys/mutt_signal.h>
+
+#include <lib-mime/mime.h>
+
+#include <lib-ui/curses.h>
#include "mutt.h"
+#include "alias.h"
#include "mx.h"
#include "buffy.h"
#include "sort.h"
-#include "mutt_crypt.h"
-#include "mutt_curses.h"
+#include <lib-crypt/crypt.h>
#include "keymap.h"
-#include "url.h"
#include "mutt_idna.h"
#include "xterm.h"
-#include "lib/debug.h"
-
-#include <string.h>
-#include <stdlib.h>
-#include <locale.h>
-#include <unistd.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <sys/utsname.h>
-
#ifdef HAVE_GETOPT_H
#include <getopt.h>
#else
#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 <openssl/opensslv.h>
#endif
-static const char *ReachingUs = N_("\
-To contact the developers, please mail to <mutt-ng-devel@lists.berlios.de>.\n\
-To visit the Mutt-ng homepage go to http://www.muttng.org.\n\
-To report a bug, please use the fleang(1) utility.\n");
-
static const char *Notice = N_("\
Copyright (C) 1996-2002 Michael R. Elkins and others.\n\
-Mutt-ng comes with ABSOLUTELY NO WARRANTY; for details type `muttng -vv'.\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 `muttng -vv' for details.\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\
puts (mutt_make_version (1));
puts
- _("usage: muttng [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f <file> ]\n\
- muttng [ -nR ] [ -e <cmd> ] [ -F <file> ] -Q <query> [ -Q <query> ] [...]\n\
- muttng [ -nR ] [ -e <cmd> ] [ -F <file> ] -A <alias> [ -A <alias> ] [...]\n\
- muttng [ -nR ] [ -e <cmd> ] [ -F <file> ] -t");
+ _("usage: madmutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f <file> ]\n\
+ madmutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -Q <query> [ -Q <query> ] [...]\n\
+ madmutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -A <alias> [ -A <alias> ] [...]\n\
+ madmutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -t");
puts
_("\
- muttng [ -nR ] [ -e <cmd> ] [ -F <file> ] -T\n\
- muttng [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H <file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> [ ... ]\n\
- muttng [ -n ] [ -e <cmd> ] [ -F <file> ] -p\n\
- muttng -v[v]\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\
\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 ~/.muttngdebug0");
-#endif
puts _("\
-e <command>\tspecify a command to be executed after initialization\n\
-f <file>\tspecify which mailbox to read\n\
-g <server>\tspecify a newsserver (if compiled with NNTP)\n\
-G\t\tselect a newsgroup (if compiled with NNTP)\n\
-H <file>\tspecify a draft file to read header and body from\n\
- -i <file>\tspecify a file which Mutt-ng should include in the body");
+ -i <file>\tspecify a file which Madmutt should include in the body");
puts _("\
- -d <level>\t specify debugging level of Mutt-ng\n\
+ -d <level>\t specify debugging level of Madmutt\n\
-m <type>\tspecify a default mailbox type\n\
- -n\t\tcauses Mutt-ng not to read the system Muttngrc\n\
+ -n\t\tcauses Madmutt not to read the system Madmuttrc\n\
-p\t\trecall a postponed message\n\
-Q <variable>\tquery a configuration variable\n\
-R\t\topen mailbox in read-only mode\n\
-t\t\tprint the value of all variables to stdout\n\
-T\t\tprint the value of all changed variables to stdout\n\
-v\t\tshow version and compile-time definitions\n\
- -x\t\tsimulate the mailx send mode\n\
-y\t\tselect a mailbox specified in your `mailboxes' list\n\
-z\t\texit immediately if there are no messages in the mailbox\n\
-Z\t\topen the first folder with new message, exit immediately if none\n\
#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
puts (_("Compile Options:"));
-#ifdef DEBUG
- puts (" +DEBUG");
-#else
- puts (" -DEBUG");
-#endif
-
puts (
#ifdef HOMESPOOL
" +HOMESPOOL "
#else
"-USE_DOTLOCK "
#endif
-#ifdef DL_STANDALONE
- "+DL_STANDALONE "
-#else
- "-DL_STANDALONE "
-#endif
- "\n "
#ifdef USE_FCNTL
"+USE_FCNTL "
#else
#else
"-USE_FLOCK "
#endif
-#ifdef USE_INODESORT
- "+USE_INODESORT "
-#else
- "-USE_INODESORT "
-#endif
#ifdef USE_HCACHE
"+USE_HCACHE "
#else
#endif
);
puts (
-#ifdef USE_POP
- " +USE_POP "
-#else
- " -USE_POP "
-#endif
#ifdef USE_NNTP
"+USE_NNTP "
#else
"-USE_NNTP "
#endif
-#ifdef USE_IMAP
- "+USE_IMAP "
-#else
- "-USE_IMAP "
-#endif
#ifdef USE_GSS
"+USE_GSS "
#else
"+HAVE_REGCOMP "
#else
"-HAVE_REGCOMP "
-#endif
-#ifdef USE_GNU_REGEX
- "+USE_GNU_REGEX "
-#else
- "-USE_GNU_REGEX "
-#endif
-#ifdef USE_COMPRESSED
- "+COMPRESSED "
-#else
- "-COMPRESSED "
#endif
"\n "
#ifdef HAVE_COLOR
);
puts (
-#ifdef CRYPT_BACKEND_CLASSIC_PGP
- " +CRYPT_BACKEND_CLASSIC_PGP "
-#else
- " -CRYPT_BACKEND_CLASSIC_PGP "
-#endif
-#ifdef CRYPT_BACKEND_CLASSIC_SMIME
- "+CRYPT_BACKEND_CLASSIC_SMIME "
-#else
- "-CRYPT_BACKEND_CLASSIC_SMIME "
-#endif
#ifdef CRYPT_BACKEND_GPGME
"+CRYPT_BACKEND_GPGME "
#else
"+BUFFY_SIZE "
#else
"-BUFFY_SIZE "
-#endif
-#ifdef SUN_ATTACHMENT
- "+SUN_ATTACHMENT "
-#else
- "-SUN_ATTACHMENT "
#endif
"\n "
#ifdef ENABLE_NLS
#else
"-ENABLE_NLS "
#endif
-#ifdef LOCALES_HACK
- "+LOCALES_HACK "
-#else
- "-LOCALES_HACK "
-#endif
#ifdef HAVE_WC_FUNCS
"+HAVE_WC_FUNCS "
#else
"-HAVE_LANGINFO_YESEXPR "
#endif
"\n "
-#if HAVE_ICONV
+#ifdef HAVE_ICONV
"+HAVE_ICONV "
#else
"-HAVE_ICONV "
#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 DOMAIN
- printf (" +DOMAIN=\"%s\"\n", DOMAIN);
-#else
- puts (" -DOMAIN");
-#endif
-
#ifdef ISPELL
printf (" +ISPELL=\"%s\"\n", ISPELL);
#else
printf (" +PKGDATADIR=\"%s\"\n", PKGDATADIR);
printf (" +PKGDOCDIR=\"%s\"\n", PKGDOCDIR);
printf (" +SYSCONFDIR=\"%s\"\n", SYSCONFDIR);
- printf (" +EXECSHELL=\"%s\"\n", EXECSHELL);
#ifdef MIXMASTER
printf (" +MIXMASTER=\"%s\"\n\n", MIXMASTER);
#else
puts (" -MIXMASTER\n");
#endif
- puts (_(ReachingUs));
-
- puts (_("MadMutt is based on Mutt-ng wich was based on Mutt before\n"));
+ puts (_("MadMutt is based on Madmutt wich was based on Mutt before\n"));
exit (0);
}
#else
/* should come before initscr() so that ncurses 4.2 doesn't try to install
its own SIGWINCH handler */
- mutt_signal_init ();
+ mutt_signal_initialize ();
#endif
if (initscr () == NULL) {
puts _("Error initializing terminal.");
exit (1);
}
-#if 1 /* USE_SLANG_CURSES - commenting out suggested in #455. */
- /* slang requires the signal handlers to be set after initializing */
- mutt_signal_init ();
-#endif
+ mutt_signal_initialize ();
ci_start_color ();
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, sizeof(Options));
- p_clear(QuadOptions, sizeof(QuadOptions));
+ p_clear(Options, countof(Options));
+ p_clear(QuadOptions, countof(QuadOptions));
#ifdef USE_NNTP
while ((i =
getopt (argc, argv,
- "A:a:b:F:f:c:d:e:g:GH:s:i:hm:npQ:RTtvxyzZ")) != EOF)
+ "A:a:b:F:f:c: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:RTtvxyzZ")) != EOF)
+ getopt (argc, argv, "A:a:b:F:f:c:e:H:s:i:hm:npQ:RTtvyzZ")) != EOF)
#endif
switch (i) {
case 'A':
case 'b':
case 'c':
if (!msg)
- msg = mutt_new_header ();
+ msg = header_new();
if (!msg->env)
- msg->env = mutt_new_envelope ();
+ msg->env = envelope_new();
if (i == 'b')
msg->env->bcc = rfc822_parse_adrlist (msg->env->bcc, optarg);
else
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;
version++;
break;
- case 'x': /* mailx compatible send mode */
- sendflags |= SENDMAILX;
- break;
-
case 'y': /* My special hack mode */
flags |= M_SELECT;
break;
puts (_(Copyright_GPL_1));
puts (_(Copyright_GPL_2));
puts (_(Copyright_GPL_3));
- puts (_(ReachingUs));
exit (0);
}
/* set defaults and read init files */
mx_init ();
mutt_init (flags & M_NOSYSRC, commands);
- mutt_free_list (&commands);
+ string_list_wipe(&commands);
/* Initialize crypto */
crypt_init ();
address_t *a;
for (; alias_queries; alias_queries = alias_queries->next) {
- if ((a = mutt_lookup_alias (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);
}
if (!option (OPTNOCURSES) && Maildir) {
struct stat sb;
char fpath[_POSIX_PATH_MAX];
- char msg[STRING];
+ char mesg[STRING];
m_strcpy(fpath, sizeof(fpath), Maildir);
mutt_expand_path (fpath, sizeof (fpath));
-#ifdef USE_IMAP
/* we're not connected yet - skip mail folder creation */
if (mx_get_magic (fpath) != M_IMAP)
-#endif
if (stat (fpath, &sb) == -1 && errno == ENOENT) {
- snprintf (msg, sizeof (msg), _("%s does not exist. Create it?"),
+ snprintf (mesg, sizeof (mesg), _("%s does not exist. Create it?"),
Maildir);
- if (mutt_yesorno (msg, M_YES) == M_YES) {
+ if (mutt_yesorno (mesg, M_YES) == M_YES) {
if (mkdir (fpath, 0700) == -1 && errno != EEXIST)
mutt_error (_("Can't create %s: %s."), Maildir, strerror (errno));
}
mutt_flushinp ();
if (!msg)
- msg = mutt_new_header ();
+ msg = header_new();
if (draftFile)
infile = draftFile;
else {
if (!msg->env)
- msg->env = mutt_new_envelope ();
+ msg->env = envelope_new();
for (i = optind; i < argc; i++) {
if (url_check_scheme (argv[i]) == U_MAILTO)
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);