X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=main.c;h=801966b3c6b5bfec63c491ca7047baed4b447fad;hp=826602c85e996a447ec551e05ca1fe02314f4598;hb=4f8cd7c03aba20081ae3403ee194ce7e54f224fd;hpb=bad8211c28d4b229878e0264012009493db48da5 diff --git a/main.c b/main.c index 826602c..801966b 100644 --- a/main.c +++ b/main.c @@ -15,33 +15,30 @@ #define MAIN_C 1 -#if HAVE_CONFIG_H -# include "config.h" -#endif +#include + +#include + +#include +#include +#include +#include +#include #include "mutt.h" -#include "mutt_curses.h" +#include "crypt.h" +#include "alias.h" +#include "buffy.h" +#include "sort.h" #include "keymap.h" -#include "url.h" -#include "mutt_crypt.h" #include "mutt_idna.h" -#include "xterm.h" - -#include "lib/mem.h" -#include "lib/intl.h" -#include "lib/str.h" -#include "lib/debug.h" - -#include -#include -#include -#include -#include -#include -#include +#include "mutt_sasl.h" #ifdef HAVE_GETOPT_H #include +#else +extern char *optarg; +extern int optind; #endif #ifdef HAVE_LIBIDN @@ -49,51 +46,27 @@ #endif #ifdef USE_NNTP -#include "nntp/nntp.h" +#include +#endif + +#ifdef USE_HCACHE +#if defined(HAVE_QDBM) +#include +#elif defined(HAVE_GDBM) +#include +#endif #endif -static const char *ReachingUs = N_("\ -To contact the developers, please mail to .\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"); +#include +#include 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\ -Mutt is free software, and you are welcome to redistribute it\n\ -under certain conditions; type `muttng -vv' for details.\n"); - -static const char *Copyright = N_("\ -Copyright (C) 1996-2004 Michael R. Elkins \n\ -Copyright (C) 1996-2002 Brandon Long \n\ -Copyright (C) 1997-2005 Thomas Roessler \n\ -Copyright (C) 1998-2005 Werner Koch \n\ -Copyright (C) 1999-2005 Brendan Cully \n\ -Copyright (C) 1999-2002 Tommi Komulainen \n\ -Copyright (C) 2000-2002 Edmund Grimley Evans \n\n\ -Copyright (C) 2005:\n\ - Parts were written/modified by:\n\ - Andreas Krennmair \n\ - Nico Golde \n\ - Rocco Rutte \n\ -\n\ -Lots of others not mentioned here contributed lots of code,\n\ -fixes, and suggestions.\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\ -\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\ -\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., 59 Temple Place - Suite 330, Boston, MA 02111, 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 .\n\ +There is NO WARRANTY, to the extent permitted by law.\n"); void mutt_exit (int code) { @@ -103,40 +76,45 @@ void mutt_exit (int code) static void mutt_usage (void) { - puts (mutt_make_version ()); + puts (mutt_make_version()); puts - _ - ("usage: muttng [ -nRyzZ ] [ -e ] [ -F ] [ -m ] [ -f ]\n\ - muttng [ -nR ] [ -e ] [ -F ] -Q [ -Q ] [...]\n\ - muttng [ -nR ] [ -e ] [ -F ] -A [ -A ] [...]\n\ - muttng [ -nR ] [ -e ] [ -F ] -D\n\ - muttng [ -nx ] [ -e ] [ -a ] [ -F ] [ -H ] [ -i ] [ -s ] [ -b ] [ -c ] [ ... ]\n\ - muttng [ -n ] [ -e ] [ -F ] -p\n\ - muttng -v[v]\n\ + _("usage: madmutt [ -nRyzZ ] [ -e ] [ -F ] [ -m ] [ -f ]\n\ + madmutt [ -nR ] [ -e ] [ -F ] -Q [ -Q ] [...]\n\ + madmutt [ -nR ] [ -e ] [ -F ] -A [ -A ] [...]\n\ + madmutt [ -nR ] [ -e ] [ -F ] -t"); + puts + _("\ + madmutt [ -nR ] [ -e ] [ -F ] -T\n\ + madmutt [ -nx ] [ -e ] [ -a ] [ -F ] [ -H ] [ -i ] [ -s ] [ -b ] [ -c ] [ ... ]\n\ + madmutt [ -n ] [ -e ] [ -F ] -p\n\ + madmutt -v\n\ \n\ options:\n\ -A \texpand the given alias\n\ -a \tattach a file to the message\n\ -b
\tspecify a blind carbon-copy (BCC) address\n\ - -c
\tspecify a carbon-copy (CC) address\n\ - -D\t\tprint the value of all variables to stdout\n\ + -c
\tspecify a carbon-copy (CC) address"); + puts _("\ -e \tspecify a command to be executed after initialization\n\ -f \tspecify which mailbox to read\n\ - -F \tspecify an alternate muttrc file\n\ + -F \tspecify an alternate muttrngc file\n\ -g \tspecify a newsserver (if compiled with NNTP)\n\ -G\t\tselect a newsgroup (if compiled with NNTP)\n\ -H \tspecify a draft file to read header and body from\n\ - -i \tspecify a file which Mutt-ng should include in the body\n\ - -d \t specify debugging level of Mutt-ng\n\ + -i \tspecify a file which Madmutt should include in the body"); + puts _("\ + -d \t specify debugging level of Madmutt\n\ -m \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 \tquery a configuration variable\n\ -R\t\topen mailbox in read-only mode\n\ - -s \tspecify a subject (must be in quotes if it has spaces)\n\ + -s \tspecify a subject (must be in quotes if it has spaces)"); + puts _("\ + -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\ @@ -149,75 +127,55 @@ static void show_version (void) { struct utsname uts; - puts (mutt_make_version ()); + puts (mutt_make_version()); puts (_(Notice)); uname (&uts); #ifdef _AIX - printf ("System: %s %s.%s", uts.sysname, uts.version, uts.release); + printf ("System:\n %s %s.%s", uts.sysname, uts.version, uts.release); #elif defined (SCO) - printf ("System: SCO %s", uts.release); + printf ("System:\n SCO %s", uts.release); #else - printf ("System: %s %s", uts.sysname, uts.release); + printf ("System:\n %s %s", uts.sysname, uts.release); #endif - printf (" (%s)", uts.machine); + printf (" (%s)\nExternal Libraries:\n", uts.machine); #ifdef NCURSES_VERSION - printf (" [using ncurses %s]", NCURSES_VERSION); + printf (" ncurses %s\n", NCURSES_VERSION); #elif defined(USE_SLANG_CURSES) - printf (" [using slang %d]", SLANG_VERSION); + printf (" slang %d\n", SLANG_VERSION); #endif #ifdef _LIBICONV_VERSION - printf (" [using libiconv %d.%d]", _LIBICONV_VERSION >> 8, + printf (" libiconv %d.%d\n", _LIBICONV_VERSION >> 8, _LIBICONV_VERSION & 0xff); #endif #ifdef HAVE_LIBIDN - printf (" [using libidn %s (compiled with %s)]", + printf (" libidn %s (compiled with %s)\n", stringprep_check_version (NULL), STRINGPREP_VERSION); #endif - puts (_("\nCompile options:")); - -#ifdef DOMAIN - printf ("DOMAIN=\"%s\"\n", DOMAIN); -#else - puts ("-DOMAIN"); +#ifdef USE_HCACHE +#if defined(HAVE_QDBM) + printf (" qdbm %s\n", dpversion); +#elif defined(HAVE_GDBM) + printf (" gdbm %s\n", gdbm_version); #endif - -#ifdef DEBUG - puts ("+DEBUG"); -#else - puts ("-DEBUG"); #endif - + printf (" gnutls %s\n", LIBGNUTLS_VERSION); + printf (" gpgme %s\n", GPGME_VERSION); + puts (_("Compile Options:")); puts ( -#ifdef HOMESPOOL - "+HOMESPOOL " -#else - "-HOMESPOOL " -#endif #ifdef USE_SETGID "+USE_SETGID " #else "-USE_SETGID " #endif -#ifdef USE_DOTLOCK - "+USE_DOTLOCK " -#else - "-USE_DOTLOCK " -#endif -#ifdef DL_STANDALONE - "+DL_STANDALONE " -#else - "-DL_STANDALONE " -#endif - "\n" #ifdef USE_FCNTL "+USE_FCNTL " #else @@ -228,219 +186,34 @@ static void show_version (void) #else "-USE_FLOCK " #endif -#ifdef USE_INODESORT - "+USE_INODESORT " -#else - "-USE_INODESORT " -#endif -#if USE_HCACHE +#ifdef USE_HCACHE "+USE_HCACHE " #else "-USE_HCACHE " #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 - "-USE_GSS " -#endif -#ifdef USE_SSL - "+USE_SSL " -#else - "-USE_SSL " -#endif -#ifdef USE_GNUTLS - "+USE_GNUTLS " -#else - "-USE_GNUTLS " -#endif -#ifdef USE_SASL - "+USE_SASL " -#else - "-USE_SASL " -#endif -#ifdef USE_SASL2 - "+USE_SASL2 " -#else - "-USE_SASL2 " -#endif -#ifdef USE_LIBESMTP - "+USE_LIBESMTP " -#else - "-USE_LIBESMTP " -#endif - "\n" -#ifdef HAVE_REGCOMP - "+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 - "+HAVE_COLOR " -#else - "-HAVE_COLOR " -#endif -#ifdef HAVE_START_COLOR - "+HAVE_START_COLOR " -#else - "-HAVE_START_COLOR " -#endif -#ifdef HAVE_TYPEAHEAD - "+HAVE_TYPEAHEAD " -#else - "-HAVE_TYPEAHEAD " -#endif -#ifdef HAVE_BKGDSET - "+HAVE_BKGDSET " -#else - "-HAVE_BKGDSET " -#endif - "\n" -#ifdef HAVE_CURS_SET - "+HAVE_CURS_SET " -#else - "-HAVE_CURS_SET " -#endif -#ifdef HAVE_META - "+HAVE_META " -#else - "-HAVE_META " -#endif -#ifdef HAVE_RESIZETERM - "+HAVE_RESIZETERM " -#else - "-HAVE_RESIZETERM " -#endif - ); - - 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 - "-CRYPT_BACKEND_GPGME " -#endif -#ifdef BUFFY_SIZE - "+BUFFY_SIZE " -#else - "-BUFFY_SIZE " -#endif -#ifdef SUN_ATTACHMENT - "+SUN_ATTACHMENT " -#else - "-SUN_ATTACHMENT " -#endif - "\n" -#ifdef ENABLE_NLS - "+ENABLE_NLS " -#else - "-ENABLE_NLS " -#endif -#ifdef LOCALES_HACK - "+LOCALES_HACK " -#else - "-LOCALES_HACK " -#endif -#ifdef HAVE_WC_FUNCS - "+HAVE_WC_FUNCS " -#else - "-HAVE_WC_FUNCS " -#endif -#ifdef HAVE_LANGINFO_CODESET - "+HAVE_LANGINFO_CODESET " -#else - "-HAVE_LANGINFO_CODESET " -#endif -#ifdef HAVE_LANGINFO_YESEXPR - "+HAVE_LANGINFO_YESEXPR " -#else - "-HAVE_LANGINFO_YESEXPR " -#endif - "\n" -#if 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 - "+HAVE_GETSID " -#else - "-HAVE_GETSID " -#endif -#if HAVE_GETADDRINFO - "+HAVE_GETADDRINFO " -#else - "-HAVE_GETADDRINFO " #endif ); -#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 ("SYSCONFDIR=\"%s\"\n", SYSCONFDIR); - printf ("EXECSHELL=\"%s\"\n", EXECSHELL); -#ifdef MIXMASTER - printf ("MIXMASTER=\"%s\"\n", MIXMASTER); -#else - puts ("-MIXMASTER"); -#endif + puts (_("Built-In Defaults:")); + 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); + printf (" +MIXMASTER=\"%s\"\n\n", MIXMASTER); - puts (_(ReachingUs)); - - puts (_("Mutt-ng is based on the following patches written for mutt:\n")); - mutt_print_patchlist (); + puts (_("MadMutt is based on Madmutt wich was based on Mutt before\n")); exit (0); } @@ -456,25 +229,22 @@ static void start_curses (void) #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 } @@ -488,6 +258,17 @@ static void start_curses (void) #define M_NEWS (1<<5) /* -g and -G */ #endif +__attribute__((format(printf, 1, 0))) +static void mutt_nocurses_error (const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + fputc('\n', stderr); +} + int main (int argc, char **argv) { char folder[_POSIX_PATH_MAX] = ""; @@ -496,21 +277,19 @@ int main (int argc, char **argv) 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 i; int explicit_folder = 0; - int dump_variables = 0; - extern char *optarg; - extern int optind; + 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 */ @@ -519,31 +298,23 @@ int main (int argc, char **argv) exit (1); } -#ifdef ENABLE_NLS - /* FIXME what about init.c:1439 ? */ setlocale (LC_ALL, ""); bindtextdomain (PACKAGE, MUTTLOCALEDIR); textdomain (PACKAGE); -#endif - setlocale (LC_CTYPE, ""); - mutt_error = mutt_nocurses_error; - mutt_message = mutt_nocurses_error; - SRAND (time (NULL)); + mutt_error = mutt_message = mutt_nocurses_error; + srand48 (time (NULL)); umask (077); - memset (Options, 0, sizeof (Options)); - memset (QuadOptions, 0, sizeof (QuadOptions)); + 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:Dd:e:g:GH:s:i:hm:npQ:RvxyzZ")) != EOF) -#else - while ((i = - getopt (argc, argv, "A:a:b:F:f:c:Dd:e:H:s:i:hm:npQ:RvxyzZ")) != EOF) + "g:G" #endif + )) >= 0) switch (i) { case 'A': alias_queries = mutt_add_list (alias_queries, optarg); @@ -558,42 +329,31 @@ int main (int argc, char **argv) break; case 'F': - str_replace (&Muttrc, optarg); + m_strreplace(&Muttrc, optarg); break; case 'f': - strfcpy (folder, optarg, sizeof (folder)); + m_strcpy(folder, sizeof(folder), optarg); explicit_folder = 1; break; 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': - debug_setlevel(atoi(optarg)); -#ifdef DEBUG - if (atoi(optarg) < DEBUG_MIN_LEVEL && atoi(optarg) > DEBUG_MAX_LEVEL) - printf (_("Debugging at level %d.\n"), atoi(optarg)); - else { - printf(_("Please specify a valid debugging level (" - DEBUG_MIN_LEVEL_S "-" DEBUG_MAX_LEVEL_S ").\n")); - return 1; - } -#else - printf _("DEBUG was not defined during compilation. Ignored.\n"); -#endif + case 't': + dump_variables = 2; break; - case 'D': + case 'T': dump_variables = 1; break; @@ -638,10 +398,6 @@ int main (int argc, char **argv) version++; break; - case 'x': /* mailx compatible send mode */ - sendflags |= SENDMAILX; - break; - case 'y': /* My special hack mode */ flags |= M_SELECT; break; @@ -651,7 +407,7 @@ int main (int argc, char **argv) { char buf[LONG_STRING]; - snprintf (buf, sizeof (buf), "set news_server=%s", optarg); + snprintf (buf, sizeof (buf), "set nntp_host=%s", optarg); commands = mutt_add_list (commands, buf); } @@ -672,21 +428,12 @@ int main (int argc, char **argv) mutt_usage (); } - switch (version) { - case 0: - break; - case 1: + if (version) { show_version (); - break; - default: - puts (mutt_make_version ()); - puts (_(Copyright)); - puts (_(ReachingUs)); - exit (0); } /* Check for a batch send. */ - if (!isatty (0) || queries || alias_queries || dump_variables) { + if (!isatty (0) || queries || alias_queries || dump_variables > 0) { set_option (OPTNOCURSES); sendflags = SENDBATCH; } @@ -697,29 +444,25 @@ int main (int argc, char **argv) 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); - if (dump_variables) - return (mutt_dump_variables ()); + if (dump_variables > 0) + return (mutt_dump_variables (dump_variables-1)); if (alias_queries) { int rv = 0; - ADDRESS *a; + 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); } @@ -741,18 +484,16 @@ int main (int argc, char **argv) if (!option (OPTNOCURSES) && Maildir) { struct stat sb; char fpath[_POSIX_PATH_MAX]; - char msg[STRING]; + char mesg[STRING]; - strfcpy (fpath, Maildir, sizeof (fpath)); + 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)); } @@ -771,18 +512,19 @@ int main (int argc, char **argv) char buf[LONG_STRING]; char *tempfile = NULL, *infile = NULL; char *bodytext = NULL; + FILE *fout; if (!option (OPTNOCURSES)) 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) @@ -799,7 +541,7 @@ int main (int argc, char **argv) } if (subject) - msg->env->subject = safe_strdup (subject); + msg->env->subject = m_strdup(subject); if (includeFile) infile = includeFile; @@ -807,12 +549,12 @@ int main (int argc, char **argv) if (infile || bodytext) { if (infile) { - if (mutt_strcmp ("-", infile) == 0) + if (m_strcmp("-", infile) == 0) fin = stdin; else { char path[_POSIX_PATH_MAX]; - strfcpy (path, infile, sizeof (path)); + m_strcpy(path, sizeof(path), infile); mutt_expand_path (path, sizeof (path)); if ((fin = fopen (path, "r")) == NULL) { if (!option (OPTNOCURSES)) @@ -825,39 +567,37 @@ int main (int argc, char **argv) else fin = NULL; - mutt_mktemp (buf); - tempfile = safe_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(mod_core.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); - FREE (&tempfile); + m_fclose(&fin); + p_delete(&tempfile); exit (1); } if (fin) 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); } } - FREE (&bodytext); + p_delete(&bodytext); if (attach) { - LIST *t = attach; + string_list_t *t = attach; BODY *a = NULL; while (t) { @@ -871,12 +611,12 @@ int main (int argc, char **argv) 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); @@ -902,16 +642,16 @@ int main (int argc, char **argv) mutt_endwin (Errorbuf); exit (1); } - } - else + } else #endif - if (!Incoming) { + if (!Incoming.len) { mutt_endwin _("No incoming mailboxes defined."); exit (1); } folder[0] = 0; - mutt_select_file (folder, sizeof (folder), M_SEL_FOLDER | M_SEL_BUFFY); + mutt_select_file(folder, sizeof(folder), M_SEL_FOLDER | M_SEL_BUFFY, + NULL, NULL); if (!folder[0]) { mutt_endwin (NULL); exit (0); @@ -919,20 +659,19 @@ int main (int argc, char **argv) } if (!folder[0]) - strfcpy (folder, NONULL (Spoolfile), sizeof (folder)); + m_strcpy(folder, sizeof(folder), NONULL(Spoolfile)); #ifdef USE_NNTP if (option (OPTNEWS)) { unset_option (OPTNEWS); nntp_expand_path (folder, sizeof (folder), &CurrentNewsSrv->conn->account); - } - else + } else #endif mutt_expand_path (folder, sizeof (folder)); - str_replace (&CurrentFolder, folder); - str_replace (&LastFolder, folder); + m_strreplace(&CurrentFolder, folder); + m_strreplace(&LastFolder, folder); if (flags & M_IGNORE) { /* check to see if there are any messages in the folder */ @@ -954,12 +693,14 @@ int main (int argc, char **argv) || !explicit_folder) { mutt_index_menu (); if (option (OPTXTERMSETTITLES)) - mutt_xterm_set_title (NONULL (XtermLeave)); + printf("\033]2;%s\007", NONULL(XtermLeave)); if (Context) - FREE (&Context); + p_delete(&Context); } mutt_endwin (Errorbuf); } + luaM_shutdown(); + mutt_sasl_shutdown(); exit (0); }