X-Git-Url: https://git.llucax.com/software/mutt-debian.git/blobdiff_plain/14c29200cb58d3c4a0830265f2433849781858d0..3dba9e5c9fc1d796291f92d6bf08ed88ef540637:/main.c?ds=sidebyside diff --git a/main.c b/main.c index 0a566da..25fc33d 100644 --- a/main.c +++ b/main.c @@ -65,7 +65,7 @@ To contact the developers, please mail to .\n\ To report a bug, please visit http://bugs.mutt.org/.\n"); static const char *Notice = N_("\ -Copyright (C) 1996-2008 Michael R. Elkins and others.\n\ +Copyright (C) 1996-2009 Michael R. Elkins and others.\n\ Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\n\ Mutt is free software, and you are welcome to redistribute it\n\ under certain conditions; type `mutt -vv' for details.\n"); @@ -73,11 +73,12 @@ under certain conditions; type `mutt -vv' for details.\n"); static const char *Copyright = N_("\ Copyright (C) 1996-2007 Michael R. Elkins \n\ Copyright (C) 1996-2002 Brandon Long \n\ -Copyright (C) 1997-2007 Thomas Roessler \n\ +Copyright (C) 1997-2008 Thomas Roessler \n\ Copyright (C) 1998-2005 Werner Koch \n\ -Copyright (C) 1999-2008 Brendan Cully \n\ +Copyright (C) 1999-2009 Brendan Cully \n\ Copyright (C) 1999-2002 Tommi Komulainen \n\ Copyright (C) 2000-2002 Edmund Grimley Evans \n\ +Copyright (C) 2006-2008 Rocco Rutte \n\ \n\ Many others not mentioned here contributed code, fixes,\n\ and suggestions.\n"); @@ -111,6 +112,7 @@ static void mutt_usage (void) puts _( "usage: mutt [] [-z] [-f | -yZ]\n\ mutt [] [-x] [-Hi ] [-s ] [-bc ] [-a [...]] [--] [...]\n\ + mutt [] [-x] [-s ] [-bc ] [-a [...]] [--] [...] < message\n\ mutt [] -p\n\ mutt [] -A [...]\n\ mutt [] -Q [...]\n\ @@ -234,8 +236,6 @@ static void show_version (void) "-DL_STANDALONE " #endif - "\n" - #ifdef USE_FCNTL "+USE_FCNTL " #else @@ -247,7 +247,7 @@ static void show_version (void) #else "-USE_FLOCK " #endif - ); + ); puts ( #ifdef USE_POP "+USE_POP " @@ -266,13 +266,7 @@ static void show_version (void) #else "-USE_SMTP " #endif - -#ifdef USE_GSS - "+USE_GSS " -#else - "-USE_GSS " -#endif - + "\n" #ifdef USE_SSL_OPENSSL "+USE_SSL_OPENSSL " @@ -291,6 +285,11 @@ static void show_version (void) #else "-USE_SASL " #endif +#ifdef USE_GSS + "+USE_GSS " +#else + "-USE_GSS " +#endif #if HAVE_GETADDRINFO "+HAVE_GETADDRINFO " @@ -544,7 +543,7 @@ int main (int argc, char **argv) int dump_variables = 0; extern char *optarg; extern int optind; - int attach_sep = 0; + int double_dash = argc, nargc = 1; /* sanity check against stupid administrators */ @@ -572,16 +571,32 @@ int main (int argc, char **argv) memset (Options, 0, sizeof (Options)); memset (QuadOptions, 0, sizeof (QuadOptions)); - for (i = 1; i < argc; i++) - if (!strcmp(argv[i], "--")) + for (optind = 1; optind < double_dash; ) + { + /* We're getopt'ing POSIXLY, so we'll be here every time getopt() + * encounters a non-option. That could be a file to attach + * (all non-options between -a and --) or it could be an address + * (which gets collapsed to the front of argv). + */ + for (; optind < argc; optind++) { - attach_sep = i; - break; + if (argv[optind][0] == '-' && argv[optind][1] != '\0') + { + if (argv[optind][1] == '-' && argv[optind][2] == '\0') + double_dash = optind; /* quit outer loop after getopt */ + break; /* drop through to getopt */ + } + + /* non-option, either an attachment or address */ + if (attach) + attach = mutt_add_list (attach, argv[optind]); + else + argv[nargc++] = argv[optind]; } - while ((i = getopt (argc, argv, "A:a:b:F:f:c:Dd:e:H:s:i:hm:npQ:RvxyzZ")) != EOF) - switch (i) - { + if ((i = getopt (argc, argv, "+A:a:b:F:f:c:Dd:e:H:s:i:hm:npQ:RvxyzZ")) != EOF) + switch (i) + { case 'A': alias_queries = mutt_add_list (alias_queries, optarg); break; @@ -682,7 +697,14 @@ int main (int argc, char **argv) default: mutt_usage (); - } + } + } + + /* collapse remaining argv */ + while (optind < argc) + argv[nargc++] = argv[optind++]; + optind = 1; + argc = nargc; switch (version) { @@ -751,11 +773,6 @@ int main (int argc, char **argv) return rv; } - /* if an -a option is present, all non-option arguments before -- are considered attachments */ - if (attach) - for (; optind <= attach_sep; optind++) - attach = mutt_add_list (attach, argv[optind]); - if (newMagic) mx_set_magic (newMagic);