X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=main.c;h=1d3d349a2d786f961e0f03de99fee8c7cd551b96;hp=8f8ca9d5ccff5fbcad4a23024dc54883af29bf6f;hb=afa60149c4d2bb71c8195091d3658b3bdc12d59d;hpb=85486f8623f6d9a12f7b251445ac9d203d3ae348 diff --git a/main.c b/main.c index 8f8ca9d..1d3d349 100644 --- a/main.c +++ b/main.c @@ -1,22 +1,17 @@ /* + * Copyright notice from original mutt: * Copyright (C) 1996-2002 Michael R. Elkins * Copyright (C) 1999-2002 Thomas Roessler * Copyright (C) 2004 g10 Code GmbH - * - * 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. - */ + * + * Parts written/modified by: + * Nico Golde + * Andreas Krennmair + * + * 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. + */ #define MAIN_C 1 @@ -27,10 +22,15 @@ #include "mutt.h" #include "mutt_curses.h" #include "keymap.h" -#include "mailbox.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 @@ -49,7 +49,7 @@ #endif #ifdef USE_NNTP -#include +#include "nntp/nntp.h" #endif static const char *ReachingUs = N_("\ @@ -64,14 +64,18 @@ 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-2002 Michael R. Elkins \n\ +Copyright (C) 1996-2004 Michael R. Elkins \n\ Copyright (C) 1996-2002 Brandon Long \n\ -Copyright (C) 1997-2002 Thomas Roessler \n\ -Copyright (C) 1998-2002 Werner Koch \n\ -Copyright (C) 1999-2002 Brendan Cully \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\ -Copyright (C) 2004-2005 Andreas Krennmair \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\ @@ -101,10 +105,12 @@ static void mutt_usage (void) { puts (mutt_make_version ()); - puts _( -"usage: muttng [ -nRyzZ ] [ -e ] [ -F ] [ -m ] [ -f ]\n\ + 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\ @@ -114,6 +120,7 @@ options:\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\ -e \tspecify a command to be executed after initialization\n\ -f \tspecify which mailbox to read\n\ -F \tspecify an alternate muttrc file\n\ @@ -121,6 +128,7 @@ options:\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\ -m \tspecify a default mailbox type\n\ -n\t\tcauses Mutt-ng not to read the system Muttngrc\n\ -p\t\trecall a postponed message\n\ @@ -141,7 +149,7 @@ static void show_version (void) { struct utsname uts; - puts (mutt_make_version()); + puts (mutt_make_version ()); puts (_(Notice)); uname (&uts); @@ -164,14 +172,14 @@ static void show_version (void) #ifdef _LIBICONV_VERSION printf (" [using libiconv %d.%d]", _LIBICONV_VERSION >> 8, - _LIBICONV_VERSION & 0xff); + _LIBICONV_VERSION & 0xff); #endif #ifdef HAVE_LIBIDN - printf (" [using libidn %s (compiled with %s)]", stringprep_check_version (NULL), - STRINGPREP_VERSION); + printf (" [using libidn %s (compiled with %s)]", + stringprep_check_version (NULL), STRINGPREP_VERSION); #endif - + puts (_("\nCompile options:")); #ifdef DOMAIN @@ -185,300 +193,232 @@ static void show_version (void) #else puts ("-DEBUG"); #endif - - - puts ( + + puts ( #ifdef HOMESPOOL - "+HOMESPOOL " + "+HOMESPOOL " #else - "-HOMESPOOL " + "-HOMESPOOL " #endif - #ifdef USE_SETGID - "+USE_SETGID " + "+USE_SETGID " #else - "-USE_SETGID " + "-USE_SETGID " #endif - #ifdef USE_DOTLOCK - "+USE_DOTLOCK " + "+USE_DOTLOCK " #else - "-USE_DOTLOCK " + "-USE_DOTLOCK " #endif - #ifdef DL_STANDALONE - "+DL_STANDALONE " + "+DL_STANDALONE " #else - "-DL_STANDALONE " + "-DL_STANDALONE " #endif - - "\n" - + "\n" #ifdef USE_FCNTL - "+USE_FCNTL " + "+USE_FCNTL " #else - "-USE_FCNTL " + "-USE_FCNTL " #endif - #ifdef USE_FLOCK - "+USE_FLOCK " + "+USE_FLOCK " #else - "-USE_FLOCK " + "-USE_FLOCK " #endif - #ifdef USE_INODESORT - "+USE_INODESORT " + "+USE_INODESORT " +#else + "-USE_INODESORT " +#endif +#if USE_HCACHE + "+USE_HCACHE " #else - "-USE_INODESORT " + "-USE_HCACHE " #endif - ); + ); puts ( #ifdef USE_POP - "+USE_POP " + "+USE_POP " #else - "-USE_POP " + "-USE_POP " #endif - #ifdef USE_NNTP - "+USE_NNTP " + "+USE_NNTP " #else - "-USE_NNTP " + "-USE_NNTP " #endif - #ifdef USE_IMAP - "+USE_IMAP " -#else - "-USE_IMAP " -#endif - -#ifdef IMAP_EDIT_THREADS - "+IMAP_EDIT_THREADS " + "+USE_IMAP " #else - "-IMAP_EDIT_THREADS " + "-USE_IMAP " #endif - #ifdef USE_GSS - "+USE_GSS " + "+USE_GSS " #else - "-USE_GSS " + "-USE_GSS " #endif - - #ifdef USE_SSL - "+USE_SSL " + "+USE_SSL " #else - "-USE_SSL " + "-USE_SSL " #endif - -#ifdef USE_GNUTLS - "+USE_GNUTLS " -#else - "-USE_GNUTLS " -#endif - #ifdef USE_GNUTLS - "+USE_GNUTLS " + "+USE_GNUTLS " #else - "-USE_GNUTLS " + "-USE_GNUTLS " #endif - #ifdef USE_SASL - "+USE_SASL " + "+USE_SASL " #else - "-USE_SASL " + "-USE_SASL " #endif #ifdef USE_SASL2 - "+USE_SASL2 " + "+USE_SASL2 " #else - "-USE_SASL2 " + "-USE_SASL2 " #endif - #ifdef USE_LIBESMTP - "+USE_LIBESMTP " + "+USE_LIBESMTP " #else - "-USE_LIBESMTP " + "-USE_LIBESMTP " #endif - "\n" - + "\n" #ifdef HAVE_REGCOMP - "+HAVE_REGCOMP " + "+HAVE_REGCOMP " #else - "-HAVE_REGCOMP " + "-HAVE_REGCOMP " #endif - #ifdef USE_GNU_REGEX - "+USE_GNU_REGEX " + "+USE_GNU_REGEX " #else - "-USE_GNU_REGEX " + "-USE_GNU_REGEX " #endif - #ifdef USE_COMPRESSED - "+COMPRESSED " + "+COMPRESSED " #else - "-COMPRESSED " + "-COMPRESSED " #endif - - "\n" - + "\n" #ifdef HAVE_COLOR - "+HAVE_COLOR " + "+HAVE_COLOR " #else - "-HAVE_COLOR " + "-HAVE_COLOR " #endif - #ifdef HAVE_START_COLOR - "+HAVE_START_COLOR " + "+HAVE_START_COLOR " #else - "-HAVE_START_COLOR " + "-HAVE_START_COLOR " #endif - #ifdef HAVE_TYPEAHEAD - "+HAVE_TYPEAHEAD " + "+HAVE_TYPEAHEAD " #else - "-HAVE_TYPEAHEAD " + "-HAVE_TYPEAHEAD " #endif - #ifdef HAVE_BKGDSET - "+HAVE_BKGDSET " + "+HAVE_BKGDSET " #else - "-HAVE_BKGDSET " + "-HAVE_BKGDSET " #endif - - "\n" - + "\n" #ifdef HAVE_CURS_SET - "+HAVE_CURS_SET " + "+HAVE_CURS_SET " #else - "-HAVE_CURS_SET " + "-HAVE_CURS_SET " #endif - #ifdef HAVE_META - "+HAVE_META " + "+HAVE_META " #else - "-HAVE_META " + "-HAVE_META " #endif - #ifdef HAVE_RESIZETERM - "+HAVE_RESIZETERM " + "+HAVE_RESIZETERM " #else - "-HAVE_RESIZETERM " + "-HAVE_RESIZETERM " #endif - ); - + ); + puts ( #ifdef CRYPT_BACKEND_CLASSIC_PGP - "+CRYPT_BACKEND_CLASSIC_PGP " + "+CRYPT_BACKEND_CLASSIC_PGP " #else - "-CRYPT_BACKEND_CLASSIC_PGP " + "-CRYPT_BACKEND_CLASSIC_PGP " #endif #ifdef CRYPT_BACKEND_CLASSIC_SMIME - "+CRYPT_BACKEND_CLASSIC_SMIME " + "+CRYPT_BACKEND_CLASSIC_SMIME " #else - "-CRYPT_BACKEND_CLASSIC_SMIME " + "-CRYPT_BACKEND_CLASSIC_SMIME " #endif #ifdef CRYPT_BACKEND_GPGME - "+CRYPT_BACKEND_GPGME " + "+CRYPT_BACKEND_GPGME " #else - "-CRYPT_BACKEND_GPGME " + "-CRYPT_BACKEND_GPGME " #endif - #ifdef BUFFY_SIZE - "+BUFFY_SIZE " -#else - "-BUFFY_SIZE " -#endif -#ifdef EXACT_ADDRESS - "+EXACT_ADDRESS " + "+BUFFY_SIZE " #else - "-EXACT_ADDRESS " + "-BUFFY_SIZE " #endif - #ifdef SUN_ATTACHMENT - "+SUN_ATTACHMENT " + "+SUN_ATTACHMENT " #else - "-SUN_ATTACHMENT " + "-SUN_ATTACHMENT " #endif - - "\n" - + "\n" #ifdef ENABLE_NLS - "+ENABLE_NLS " + "+ENABLE_NLS " #else - "-ENABLE_NLS " + "-ENABLE_NLS " #endif - #ifdef LOCALES_HACK - "+LOCALES_HACK " + "+LOCALES_HACK " #else - "-LOCALES_HACK " + "-LOCALES_HACK " #endif - #ifdef HAVE_WC_FUNCS - "+HAVE_WC_FUNCS " + "+HAVE_WC_FUNCS " #else - "-HAVE_WC_FUNCS " + "-HAVE_WC_FUNCS " #endif - #ifdef HAVE_LANGINFO_CODESET - "+HAVE_LANGINFO_CODESET " + "+HAVE_LANGINFO_CODESET " #else - "-HAVE_LANGINFO_CODESET " + "-HAVE_LANGINFO_CODESET " #endif - - #ifdef HAVE_LANGINFO_YESEXPR - "+HAVE_LANGINFO_YESEXPR " + "+HAVE_LANGINFO_YESEXPR " #else - "-HAVE_LANGINFO_YESEXPR " + "-HAVE_LANGINFO_YESEXPR " #endif - - "\n" - + "\n" #if HAVE_ICONV - "+HAVE_ICONV " + "+HAVE_ICONV " #else - "-HAVE_ICONV " + "-HAVE_ICONV " #endif - #if ICONV_NONTRANS - "+ICONV_NONTRANS " + "+ICONV_NONTRANS " #else - "-ICONV_NONTRANS " + "-ICONV_NONTRANS " #endif - #if HAVE_LIBIDN - "+HAVE_LIBIDN " + "+HAVE_LIBIDN " #else - "-HAVE_LIBIDN " + "-HAVE_LIBIDN " #endif - #if HAVE_GETSID - "+HAVE_GETSID " + "+HAVE_GETSID " #else - "-HAVE_GETSID " + "-HAVE_GETSID " #endif - #if HAVE_GETADDRINFO - "+HAVE_GETADDRINFO " + "+HAVE_GETADDRINFO " #else - "-HAVE_GETADDRINFO " + "-HAVE_GETADDRINFO " #endif - -#if USE_HCACHE - "+USE_HCACHE " -#else - "-USE_HCACHE " -#endif - -#if USE_HCACHE - "+USE_HCACHE " -#else - "-USE_HCACHE " -#endif - - ); + ); #ifdef ISPELL printf ("ISPELL=\"%s\"\n", ISPELL); @@ -497,32 +437,33 @@ static void show_version (void) puts ("-MIXMASTER"); #endif - puts(_(ReachingUs)); + puts (_(ReachingUs)); + + puts (_("Mutt-ng is based on the following patches written for mutt:\n")); + mutt_print_patchlist (); - mutt_print_patchlist(); - exit (0); } static void start_curses (void) { - km_init (); /* must come before mutt_init */ + km_init (); /* must come before mutt_init */ #ifdef USE_SLANG_CURSES - SLtt_Ignore_Beep = 1; /* don't do that #*$@^! annoying visual beep! */ - SLsmg_Display_Eight_Bit = 128; /* characters above this are printable */ - SLtt_set_color(0, NULL, "default", "default"); + SLtt_Ignore_Beep = 1; /* don't do that #*$@^! annoying visual beep! */ + SLsmg_Display_Eight_Bit = 128; /* characters above this are printable */ + SLtt_set_color (0, NULL, "default", "default"); #else /* should come before initscr() so that ncurses 4.2 doesn't try to install its own SIGWINCH handler */ mutt_signal_init (); #endif - if (initscr () == NULL) - { + if (initscr () == NULL) { puts _("Error initializing terminal."); + exit (1); } -#if 1 /* USE_SLANG_CURSES - commenting out suggested in #455. */ +#if 1 /* USE_SLANG_CURSES - commenting out suggested in #455. */ /* slang requires the signal handlers to be set after initializing */ mutt_signal_init (); #endif @@ -531,20 +472,20 @@ static void start_curses (void) cbreak (); noecho (); #if HAVE_TYPEAHEAD - typeahead (-1); /* simulate smooth scrolling */ + typeahead (-1); /* simulate smooth scrolling */ #endif #if HAVE_META meta (stdscr, TRUE); #endif } -#define M_IGNORE (1<<0) /* -z */ -#define M_BUFFY (1<<1) /* -Z */ -#define M_NOSYSRC (1<<2) /* -n */ -#define M_RO (1<<3) /* -R */ -#define M_SELECT (1<<4) /* -y */ +#define M_IGNORE (1<<0) /* -z */ +#define M_BUFFY (1<<1) /* -Z */ +#define M_NOSYSRC (1<<2) /* -n */ +#define M_RO (1<<3) /* -R */ +#define M_SELECT (1<<4) /* -y */ #ifdef USE_NNTP -#define M_NEWS (1<<5) /* -g and -G */ +#define M_NEWS (1<<5) /* -g and -G */ #endif int main (int argc, char **argv) @@ -564,16 +505,18 @@ int main (int argc, char **argv) int version = 0; int i; int explicit_folder = 0; + int dump_variables = 0; extern char *optarg; extern int optind; + /* initialize random number for tmp file creation */ + srand ((unsigned int) time (NULL)); + /* sanity check against stupid administrators */ - if(getegid() != getgid()) - { - fprintf(stderr, "%s: I don't want to run with privileges!\n", - argv[0]); - exit(1); + if (getegid () != getgid ()) { + fprintf (stderr, "%s: I don't want to run with privileges!\n", argv[0]); + exit (1); } #ifdef ENABLE_NLS @@ -592,143 +535,158 @@ int main (int argc, char **argv) memset (Options, 0, sizeof (Options)); memset (QuadOptions, 0, sizeof (QuadOptions)); - + #ifdef USE_NNTP - while ((i = getopt (argc, argv, "A:a:b:F:f:c:d:e:g:GH:s:i:hm:npQ:RvxyzZ")) != EOF) + 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:d:e:H:s:i:hm:npQ:RvxyzZ")) != EOF) -#endif - switch (i) - { - case 'A': - alias_queries = mutt_add_list (alias_queries, optarg); - break; - case 'a': - attach = mutt_add_list (attach, optarg); - break; - - case 'F': - mutt_str_replace (&Muttrc, optarg); - break; - - case 'f': - strfcpy (folder, optarg, sizeof (folder)); - explicit_folder = 1; - break; - - case 'b': - case 'c': - if (!msg) - msg = mutt_new_header (); - if (!msg->env) - msg->env = mutt_new_envelope (); - 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': + while ((i = + getopt (argc, argv, "A:a:b:F:f:c:Dd:e:H:s:i:hm:npQ:RvxyzZ")) != EOF) +#endif + switch (i) { + case 'A': + alias_queries = mutt_add_list (alias_queries, optarg); + break; + case 'a': + if (strlen(optarg)<=512) + attach = mutt_add_list (attach, optarg); + else{ + printf("too long arguments. exiting ...\n"); + exit(1); + } + break; + + case 'F': + str_replace (&Muttrc, optarg); + break; + + case 'f': + strfcpy (folder, optarg, sizeof (folder)); + explicit_folder = 1; + break; + + case 'b': + case 'c': + if (!msg) + msg = mutt_new_header (); + if (!msg->env) + msg->env = mutt_new_envelope (); + 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 - debuglevel = atoi (optarg); - printf (_("Debugging at level %d.\n"), debuglevel); + if (atoi(optarg) <= DEBUG_MAX_LEVEL && atoi(optarg) >= DEBUG_MIN_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"); + printf _("DEBUG was not defined during compilation. Ignored.\n"); #endif - break; + break; + + case 'D': + dump_variables = 1; + break; + + case 'e': + commands = mutt_add_list (commands, optarg); + break; - case 'e': - commands = mutt_add_list (commands, optarg); - break; + case 'H': + draftFile = optarg; + break; - case 'H': - draftFile = optarg; - break; + case 'i': + includeFile = optarg; + break; - case 'i': - includeFile = optarg; - break; + case 'm': + /* should take precedence over .muttrc setting, so save it for later */ + newMagic = optarg; + break; - case 'm': - /* should take precedence over .muttrc setting, so save it for later */ - newMagic = optarg; - break; + case 'n': + flags |= M_NOSYSRC; + break; - case 'n': - flags |= M_NOSYSRC; - break; + case 'p': + sendflags |= SENDPOSTPONED; + break; - case 'p': - sendflags |= SENDPOSTPONED; - break; + case 'Q': + queries = mutt_add_list (queries, optarg); + break; - case 'Q': - queries = mutt_add_list (queries, optarg); - break; - - case 'R': - flags |= M_RO; /* read-only mode */ - break; + case 'R': + flags |= M_RO; /* read-only mode */ + break; - case 's': - subject = optarg; - break; + case 's': + subject = optarg; + break; - case 'v': - version++; - break; + case 'v': + version++; + break; - case 'x': /* mailx compatible send mode */ - sendflags |= SENDMAILX; - break; + case 'x': /* mailx compatible send mode */ + sendflags |= SENDMAILX; + break; - case 'y': /* My special hack mode */ - flags |= M_SELECT; - break; + case 'y': /* My special hack mode */ + flags |= M_SELECT; + break; #ifdef USE_NNTP - case 'g': /* Specify a newsserver */ - { - char buf[LONG_STRING]; + case 'g': /* Specify a newsserver */ + { + char buf[LONG_STRING]; - snprintf (buf, sizeof (buf), "set news_server=%s", optarg); - commands = mutt_add_list (commands, buf); - } + snprintf (buf, sizeof (buf), "set news_server=%s", optarg); + commands = mutt_add_list (commands, buf); + } - case 'G': /* List of newsgroups */ - flags |= M_SELECT | M_NEWS; - break; + case 'G': /* List of newsgroups */ + flags |= M_SELECT | M_NEWS; + break; #endif - case 'z': - flags |= M_IGNORE; - break; + case 'z': + flags |= M_IGNORE; + break; - case 'Z': - flags |= M_BUFFY | M_IGNORE; - break; + case 'Z': + flags |= M_BUFFY | M_IGNORE; + break; - default: - mutt_usage (); + default: + mutt_usage (); } - switch (version) - { - case 0: - break; - case 1: - show_version (); - break; - default: - puts (mutt_make_version ()); - puts (_(Copyright)); - puts (_(ReachingUs)); - exit (0); + switch (version) { + case 0: + break; + case 1: + 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) - { + if (!isatty (0) || queries || alias_queries || dump_variables) { set_option (OPTNOCURSES); sendflags = SENDBATCH; } @@ -739,41 +697,40 @@ 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 backends. */ + /* Initialize crypto */ crypt_init (); if (queries) return mutt_query_variables (queries); + if (dump_variables) + return (mutt_dump_variables ()); - if (alias_queries) - { + if (alias_queries) { int rv = 0; ADDRESS *a; - for (; alias_queries; alias_queries = alias_queries->next) - { - if ((a = mutt_lookup_alias (alias_queries->data))) - { - /* output in machine-readable form */ - mutt_addrlist_to_idna (a, NULL); - mutt_write_address_list (a, stdout, 0, 0); + + for (; alias_queries; alias_queries = alias_queries->next) { + if ((a = mutt_lookup_alias (alias_queries->data))) { + /* output in machine-readable form */ + mutt_addrlist_to_idna (a, NULL); + mutt_write_address_list (a, stdout, 0, 0); } - else - { - rv = 1; - printf ("%s\n", alias_queries->data); + else { + rv = 1; + printf ("%s\n", alias_queries->data); } } return rv; } - + if (newMagic) mx_set_magic (newMagic); - if (!option (OPTNOCURSES)) - { + if (!option (OPTNOCURSES)) { SETCOLOR (MT_COLOR_NORMAL); clear (); mutt_error = mutt_curses_error; @@ -781,8 +738,7 @@ int main (int argc, char **argv) } /* Create the Maildir directory if it doesn't exist. */ - if (!option (OPTNOCURSES) && Maildir) - { + if (!option (OPTNOCURSES) && Maildir) { struct stat sb; char fpath[_POSIX_PATH_MAX]; char msg[STRING]; @@ -791,34 +747,31 @@ int main (int argc, char **argv) mutt_expand_path (fpath, sizeof (fpath)); #ifdef USE_IMAP /* we're not connected yet - skip mail folder creation */ - if (!mx_is_imap (fpath)) -#endif - if (stat (fpath, &sb) == -1 && errno == ENOENT) - { - snprintf (msg, sizeof (msg), _("%s does not exist. Create it?"), Maildir); - if (mutt_yesorno (msg, M_YES) == M_YES) - { - if (mkdir (fpath, 0700) == -1 && errno != EEXIST) - mutt_error ( _("Can't create %s: %s."), Maildir, strerror (errno)); + 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?"), + Maildir); + if (mutt_yesorno (msg, M_YES) == M_YES) { + if (mkdir (fpath, 0700) == -1 && errno != EEXIST) + mutt_error (_("Can't create %s: %s."), Maildir, strerror (errno)); + } } - } } - if (sendflags & SENDPOSTPONED) - { + if (sendflags & SENDPOSTPONED) { if (!option (OPTNOCURSES)) mutt_flushinp (); ci_send_message (SENDPOSTPONED, NULL, NULL, NULL, NULL); mutt_endwin (NULL); } - else if (subject || msg || sendflags || draftFile || includeFile || attach || - optind < argc) - { + else if (subject || msg || sendflags || draftFile || includeFile || attach + || optind < argc) { FILE *fin = NULL; char buf[LONG_STRING]; char *tempfile = NULL, *infile = NULL; char *bodytext = NULL; - + if (!option (OPTNOCURSES)) mutt_flushinp (); @@ -827,114 +780,101 @@ int main (int argc, char **argv) if (draftFile) infile = draftFile; - else - { + else { if (!msg->env) - msg->env = mutt_new_envelope (); + msg->env = mutt_new_envelope (); - for (i = optind; i < argc; i++) - { - if (url_check_scheme (argv[i]) == U_MAILTO) - url_parse_mailto (msg->env, &bodytext, argv[i]); - else - msg->env->to = rfc822_parse_adrlist (msg->env->to, argv[i]); + for (i = optind; i < argc; i++) { + if (url_check_scheme (argv[i]) == U_MAILTO) + url_parse_mailto (msg->env, &bodytext, argv[i]); + else + msg->env->to = rfc822_parse_adrlist (msg->env->to, argv[i]); } - if (option (OPTAUTOEDIT) && !msg->env->to && !msg->env->cc) - { - if (!option (OPTNOCURSES)) - mutt_endwin (NULL); - fputs (_("No recipients specified.\n"), stderr); - exit (1); + if (option (OPTAUTOEDIT) && !msg->env->to && !msg->env->cc) { + if (!option (OPTNOCURSES)) + mutt_endwin (NULL); + fputs (_("No recipients specified.\n"), stderr); + exit (1); } if (subject) - msg->env->subject = safe_strdup (subject); + msg->env->subject = safe_strdup (subject); if (includeFile) - infile = includeFile; + infile = includeFile; } - if (infile || bodytext) - { - if (infile) - { - if (mutt_strcmp ("-", infile) == 0) - fin = stdin; - else - { - char path[_POSIX_PATH_MAX]; - - strfcpy (path, infile, sizeof (path)); - mutt_expand_path (path, sizeof (path)); - if ((fin = fopen (path, "r")) == NULL) - { - if (!option (OPTNOCURSES)) - mutt_endwin (NULL); - perror (path); - exit (1); - } - } + if (infile || bodytext) { + if (infile) { + if (mutt_strcmp ("-", infile) == 0) + fin = stdin; + else { + char path[_POSIX_PATH_MAX]; + + strfcpy (path, infile, sizeof (path)); + mutt_expand_path (path, sizeof (path)); + if ((fin = fopen (path, "r")) == NULL) { + if (!option (OPTNOCURSES)) + mutt_endwin (NULL); + perror (path); + exit (1); + } + } } else - fin = NULL; + fin = NULL; mutt_mktemp (buf); tempfile = safe_strdup (buf); if (draftFile) - msg->env = mutt_read_rfc822_header (fin, NULL, 1, 0); + msg->env = mutt_read_rfc822_header (fin, NULL, 1, 0); /* is the following if still needed? */ - - if (tempfile) - { - FILE *fout; - - if ((fout = safe_fopen (tempfile, "w")) == NULL) - { - if (!option (OPTNOCURSES)) - mutt_endwin (NULL); - perror (tempfile); - fclose (fin); - FREE (&tempfile); - exit (1); - } - if (fin) - mutt_copy_stream (fin, fout); - else if (bodytext) - fputs (bodytext, fout); - fclose (fout); - if (fin && fin != stdin) - fclose (fin); + + if (tempfile) { + FILE *fout; + + if ((fout = safe_fopen (tempfile, "w")) == NULL) { + if (!option (OPTNOCURSES)) + mutt_endwin (NULL); + perror (tempfile); + fclose (fin); + FREE (&tempfile); + exit (1); + } + if (fin) + mutt_copy_stream (fin, fout); + else if (bodytext) + fputs (bodytext, fout); + fclose (fout); + if (fin && fin != stdin) + fclose (fin); } } FREE (&bodytext); - - if (attach) - { + + if (attach) { LIST *t = attach; BODY *a = NULL; - while (t) - { - if (a) - { - a->next = mutt_make_file_attach (t->data); - a = a->next; - } - else - msg->content = a = mutt_make_file_attach (t->data); - if (!a) - { - if (!option (OPTNOCURSES)) - mutt_endwin (NULL); - fprintf (stderr, _("%s: unable to attach file.\n"), t->data); - mutt_free_list (&attach); - exit (1); - } - t = t->next; + while (t) { + if (a) { + a->next = mutt_make_file_attach (t->data); + a = a->next; + } + else + msg->content = a = mutt_make_file_attach (t->data); + if (!a) { + if (!option (OPTNOCURSES)) + mutt_endwin (NULL); + fprintf (stderr, _("%s: unable to attach file.\n"), t->data); + mutt_free_list (&attach); + exit (1); + } + t = t->next; } mutt_free_list (&attach); } @@ -944,83 +884,79 @@ int main (int argc, char **argv) if (!option (OPTNOCURSES)) mutt_endwin (NULL); } - else - { - if (flags & M_BUFFY) - { - if (!mutt_buffy_check (0)) - { - mutt_endwin _("No mailbox with new mail."); - exit (1); + else { + if (flags & M_BUFFY) { + if (!buffy_check (0)) { + mutt_endwin _("No mailbox with new mail."); + + exit (1); } folder[0] = 0; - mutt_buffy (folder, sizeof (folder)); + buffy_next (folder, sizeof (folder)); } - else if (flags & M_SELECT) - { + else if (flags & M_SELECT) { #ifdef USE_NNTP - if (flags & M_NEWS) - { - set_option (OPTNEWS); - if(!(CurrentNewsSrv = mutt_select_newsserver (NewsServer))) - { - mutt_endwin (Errorbuf); - exit (1); - } + if (flags & M_NEWS) { + set_option (OPTNEWS); + if (!(CurrentNewsSrv = mutt_select_newsserver (NewsServer))) { + mutt_endwin (Errorbuf); + exit (1); + } } else #endif if (!Incoming) { - mutt_endwin _("No incoming mailboxes defined."); - exit (1); + mutt_endwin _("No incoming mailboxes defined."); + + exit (1); } folder[0] = 0; mutt_select_file (folder, sizeof (folder), M_SEL_FOLDER | M_SEL_BUFFY); - if (!folder[0]) - { - mutt_endwin (NULL); - exit (0); + if (!folder[0]) { + mutt_endwin (NULL); + exit (0); } } if (!folder[0]) - strfcpy (folder, NONULL(Spoolfile), sizeof (folder)); + strfcpy (folder, NONULL (Spoolfile), sizeof (folder)); #ifdef USE_NNTP - if (option (OPTNEWS)) - { + if (option (OPTNEWS)) { unset_option (OPTNEWS); - nntp_expand_path (folder, sizeof (folder), &CurrentNewsSrv->conn->account); + nntp_expand_path (folder, sizeof (folder), + &CurrentNewsSrv->conn->account); } else #endif - mutt_expand_path (folder, sizeof (folder)); - - mutt_str_replace (&CurrentFolder, folder); - mutt_str_replace (&LastFolder, folder); + mutt_expand_path (folder, sizeof (folder)); - if (flags & M_IGNORE) - { + str_replace (&CurrentFolder, folder); + str_replace (&LastFolder, folder); + + if (flags & M_IGNORE) { /* check to see if there are any messages in the folder */ - switch (mx_check_empty (folder)) - { - case -1: - mutt_endwin (strerror (errno)); - exit (1); - case 1: - mutt_endwin _("Mailbox is empty."); - exit (1); + switch (mx_check_empty (folder)) { + case -1: + mutt_endwin (strerror (errno)); + exit (1); + case 1: + mutt_endwin _("Mailbox is empty."); + exit (1); } } mutt_folder_hook (folder); - if((Context = mx_open_mailbox (folder, ((flags & M_RO) || option (OPTREADONLY)) ? M_READONLY : 0, NULL)) - || !explicit_folder) - { + if ((Context = mx_open_mailbox (folder, ((flags & M_RO) + || option (OPTREADONLY)) ? + M_READONLY : 0, NULL)) + || !explicit_folder) { mutt_index_menu (); + if (option (OPTXTERMSETTITLES)) + mutt_xterm_set_title (NONULL (XtermLeave)); if (Context) - FREE (&Context); + FREE (&Context); } mutt_endwin (Errorbuf); }