⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 mutt-1.5.12 源代码。linux 下邮件接受的工具。
💻 C
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (C) 1996-2002 Michael R. Elkins <me@mutt.org> * Copyright (C) 1999-2002 Thomas Roessler <roessler@does-not-exist.org> * 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., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. */ #define MAIN_C 1#if HAVE_CONFIG_H# include "config.h"#endif#include "mutt.h"#include "mutt_curses.h"#include "keymap.h"#include "mailbox.h"#include "url.h"#include "mutt_crypt.h"#include "mutt_idna.h"#ifdef USE_SASL#include "mutt_sasl.h"#endif#ifdef USE_IMAP#include "imap/imap.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>#ifdef HAVE_GETOPT_H#include <getopt.h>#endif#ifdef HAVE_LIBIDN#include <stringprep.h>#endifstatic const char *ReachingUs = N_("\To contact the developers, please mail to <mutt-dev@mutt.org>.\n\To report a bug, please visit http://bugs.mutt.org/.\n");static const char *Notice = N_("\Copyright (C) 1996-2006 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");static const char *Copyright = 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-2006 Thomas Roessler <roessler@does-not-exist.org>\n\Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\n\Copyright (C) 1999-2006 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\\n\Many others not mentioned here contributed code, fixes,\n\and suggestions.\n");static const char *Licence = 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");static const char *Obtaining = 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\");void mutt_exit (int code){  mutt_endwin (NULL);  exit (code);}static void mutt_usage (void){  puts (mutt_make_version ());  puts _("usage: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f <file> ]\n\       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -Q <query> [ -Q <query> ] [...]\n\       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -A <alias> [ -A <alias> ] [...]\n\       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -D\n\       mutt [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H <file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> [ ... ]\n\       mutt [ -n ] [ -e <cmd> ] [ -F <file> ] -p\n\       mutt -v[v]\n");  puts _("\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\n\  -D\t\tprint the value of all variables to stdout");#if DEBUG  puts _("  -d <level>\tlog debugging output to ~/.muttdebug0");#endif  puts _("  -e <command>\tspecify a command to be executed after initialization\n\  -f <file>\tspecify which mailbox to read\n\  -F <file>\tspecify an alternate muttrc file\n\  -H <file>\tspecify a draft file to read header and body from\n\  -i <file>\tspecify a file which Mutt should include in the body\n\  -m <type>\tspecify a default mailbox type\n\  -n\t\tcauses Mutt not to read the system Muttrc\n\  -p\t\trecall a postponed message");    puts _("\  -Q <variable>\tquery a configuration variable\n\  -R\t\topen mailbox in read-only mode\n\  -s <subj>\tspecify a subject (must be in quotes if it has spaces)\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\  -h\t\tthis help message");  exit (0);}static void show_version (void){  struct utsname uts;  puts (mutt_make_version());  puts (_(Notice));  uname (&uts);#ifdef _AIX  printf ("System: %s %s.%s", uts.sysname, uts.version, uts.release);#elif defined (SCO)  printf ("System: SCO %s", uts.release);#else  printf ("System: %s %s", uts.sysname, uts.release);#endif  printf (" (%s)", uts.machine);#ifdef NCURSES_VERSION  printf (" [using ncurses %s]", NCURSES_VERSION);#elif defined(USE_SLANG_CURSES)  printf (" [using slang %d]", SLANG_VERSION);#endif#ifdef _LIBICONV_VERSION  printf (" [using libiconv %d.%d]", _LIBICONV_VERSION >> 8,	  _LIBICONV_VERSION & 0xff);#endif#ifdef HAVE_LIBIDN  printf (" [using libidn %s (compiled with %s)]", stringprep_check_version (NULL), 	  STRINGPREP_VERSION);#endif    puts (_("\nCompile options:"));#ifdef DOMAIN  printf ("DOMAIN=\"%s\"\n", DOMAIN);#else  puts ("-DOMAIN");#endif#ifdef DEBUG  puts ("+DEBUG");#else  puts ("-DEBUG");#endif      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	"-USE_FCNTL  "#endif#ifdef USE_FLOCK	"+USE_FLOCK   "#else	"-USE_FLOCK   "#endif	#ifdef USE_INODESORT	"+USE_INODESORT   "#else	"-USE_INODESORT   "#endif	);  puts (#ifdef USE_POP	"+USE_POP  "#else	"-USE_POP  "#endif#ifdef USE_IMAP        "+USE_IMAP  "#else        "-USE_IMAP  "#endif#ifdef USE_GSS	"+USE_GSS  "#else	"-USE_GSS  "#endif	#ifdef USE_SSL_OPENSSL	"+USE_SSL_OPENSSL  "#else	"-USE_SSL_OPENSSL  "#endif#ifdef USE_SSL_GNUTLS	"+USE_SSL_GNUTLS  "#else	"-USE_SSL_GNUTLS  "#endif#ifdef USE_SASL	"+USE_SASL  "#else	"-USE_SASL  "#endif#if HAVE_GETADDRINFO	"+HAVE_GETADDRINFO  "#else	"-HAVE_GETADDRINFO  "#endif        );  	  puts (#ifdef HAVE_REGCOMP	"+HAVE_REGCOMP  "#else	"-HAVE_REGCOMP  "#endif#ifdef USE_GNU_REGEX	"+USE_GNU_REGEX  "#else	"-USE_GNU_REGEX  "#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        );    puts (#ifdef BUFFY_SIZE	"+BUFFY_SIZE "#else	"-BUFFY_SIZE "#endif#ifdef EXACT_ADDRESS	"+EXACT_ADDRESS  "#else	"-EXACT_ADDRESS  "#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	"+HAVE_LIBIDN  "#else	"-HAVE_LIBIDN  "#endif	#if HAVE_GETSID	"+HAVE_GETSID  "#else	"-HAVE_GETSID  "#endif#if USE_HCACHE	"+USE_HCACHE  "#else	"-USE_HCACHE  "#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(_(ReachingUs));  mutt_print_patchlist();    exit (0);}static void start_curses (void){  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");#if SLANG_VERSION >= 20000  SLutf8_enable(-1);#endif#else

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -