Rocco Rutte:
[apps/madmutt.git] / main.c
diff --git a/main.c b/main.c
index 1a7f4d3..d7c9674 100644 (file)
--- a/main.c
+++ b/main.c
 #include "nntp/nntp.h"
 #endif
 
+#ifdef USE_LIBESMTP
+#include <libesmtp.h>
+#endif
+
+#if USE_HCACHE
+#if HAVE_QDBM
+#include <depot.h>
+#elif HAVE_GDBM
+#include <gdbm.h>
+#elif HAVE_DB4
+#include <db.h>
+#endif
+#endif
+
+#ifdef USE_GNUTLS
+#include <gnutls/gnutls.h>
+#endif
+
+#ifdef CRYPT_BACKEND_GPGME
+#include <gpgme/gpgme.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\
@@ -103,14 +125,15 @@ void mutt_exit (int code)
 
 static void mutt_usage (void)
 {
-  puts (mutt_make_version ());
+  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> ] -D\n\
+       muttng [ -nR ] [ -e <cmd> ] [ -F <file> ] -t\n\
+       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\
@@ -119,8 +142,7 @@ 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");
+  -c <address>\tspecify a carbon-copy (CC) address");
 #if DEBUG
   puts _("  -d <level>\tlog debugging output to ~/.muttngdebug0");
 #endif
@@ -139,6 +161,8 @@ options:\n\
   -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\
+  -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\
@@ -152,59 +176,78 @@ options:\n\
 static void show_version (void)
 {
   struct utsname uts;
+#ifdef USE_LIBESMTP
+  char buf[STRING];
+#endif
 
-  puts (mutt_make_version ());
+  puts (mutt_make_version (1));
   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 USE_LIBESMTP
+  smtp_version (buf, sizeof (buf), 0);
+  printf ("  libESMTP %s\n", buf);
+#endif
 
-#ifdef DOMAIN
-  printf ("DOMAIN=\"%s\"\n", DOMAIN);
-#else
-  puts ("-DOMAIN");
+#if USE_HCACHE
+#if HAVE_QDBM
+  printf ("  qdbm %s\n", dpversion);
+#elif HAVE_GDBM
+  printf ("  gdbm %s\n", gdbm_version);
+#elif HAVE_DB4
+  printf ("  DB4 %d.%d.%d\n", DB_VERSION_MAJOR, DB_VERSION_MINOR,
+          DB_VERSION_PATCH);
+#endif
 #endif
 
-#ifdef DEBUG
-  puts ("+DEBUG");
-#else
-  puts ("-DEBUG");
+#ifdef USE_GNUTLS
+  printf ("  gnutls %s\n", LIBGNUTLS_VERSION);
+#endif
+
+#ifdef CRYPT_BACKEND_GPGME
+  printf ("  gpgme %s\n", GPGME_VERSION);
 #endif
 
+  puts (_("Compile Options:"));
 
+#ifdef DEBUG
+  puts ("  +DEBUG");
+#else
+  puts ("  -DEBUG");
+#endif
 
   puts (
 #ifdef HOMESPOOL
-         "+HOMESPOOL  "
+         "  +HOMESPOOL  "
 #else
-         "-HOMESPOOL  "
+         "  -HOMESPOOL  "
 #endif
 #ifdef USE_SETGID
          "+USE_SETGID  "
@@ -221,7 +264,7 @@ static void show_version (void)
 #else
          "-DL_STANDALONE  "
 #endif
-         "\n"
+         "\n  "
 #ifdef USE_FCNTL
          "+USE_FCNTL  "
 #else
@@ -245,9 +288,9 @@ static void show_version (void)
     );
   puts (
 #ifdef USE_POP
-         "+USE_POP  "
+         "  +USE_POP  "
 #else
-         "-USE_POP  "
+         "  -USE_POP  "
 #endif
 #ifdef USE_NNTP
          "+USE_NNTP  "
@@ -289,7 +332,7 @@ static void show_version (void)
 #else
          "-USE_LIBESMTP  "
 #endif
-         "\n"
+         "\n  "
 #ifdef HAVE_REGCOMP
          "+HAVE_REGCOMP  "
 #else
@@ -305,7 +348,7 @@ static void show_version (void)
 #else
          "-COMPRESSED  "
 #endif
-         "\n"
+         "\n  "
 #ifdef HAVE_COLOR
          "+HAVE_COLOR  "
 #else
@@ -326,7 +369,7 @@ static void show_version (void)
 #else
          "-HAVE_BKGDSET  "
 #endif
-         "\n"
+         "\n  "
 #ifdef HAVE_CURS_SET
          "+HAVE_CURS_SET  "
 #else
@@ -346,9 +389,9 @@ static void show_version (void)
 
   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  "
@@ -370,7 +413,7 @@ static void show_version (void)
 #else
          "-SUN_ATTACHMENT  "
 #endif
-         "\n"
+         "\n  "
 #ifdef ENABLE_NLS
          "+ENABLE_NLS  "
 #else
@@ -396,7 +439,7 @@ static void show_version (void)
 #else
          "-HAVE_LANGINFO_YESEXPR  "
 #endif
-         "\n"
+         "\n  "
 #if HAVE_ICONV
          "+HAVE_ICONV  "
 #else
@@ -424,21 +467,30 @@ static void show_version (void)
 #endif
     );
 
+  puts (_("Built-In Defaults:"));
+
+#ifdef DOMAIN
+  printf ("  +DOMAIN=\"%s\"\n", DOMAIN);
+#else
+  puts ("  -DOMAIN");
+#endif
+
 #ifdef ISPELL
-  printf ("ISPELL=\"%s\"\n", ISPELL);
+  printf ("  +ISPELL=\"%s\"\n", ISPELL);
 #else
-  puts ("-ISPELL");
+  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);
+  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 ("  +EXECSHELL=\"%s\"\n", EXECSHELL);
 #ifdef MIXMASTER
-  printf ("MIXMASTER=\"%s\"\n", MIXMASTER);
+  printf ("  +MIXMASTER=\"%s\"\n\n", MIXMASTER);
 #else
-  puts ("-MIXMASTER");
+  puts ("  -MIXMASTER\n");
 #endif
 
   puts (_(ReachingUs));
@@ -509,7 +561,7 @@ int main (int argc, char **argv)
   int version = 0;
   int i;
   int explicit_folder = 0;
-  int dump_variables = 0;
+  int dump_variables = -1;
   extern char *optarg;
   extern int optind;
 
@@ -543,10 +595,10 @@ int main (int argc, char **argv)
 #ifdef USE_NNTP
   while ((i =
           getopt (argc, argv,
-                  "A:a:b:F:f:c:Dd:e:g:GH:s:i:hm:npQ:RvxyzZ")) != EOF)
+                  "A:a:b:F:f:c:d:e:g:GH:s:i:hm:npQ:RTtvxyzZ")) != EOF)
 #else
   while ((i =
-          getopt (argc, argv, "A:a:b:F:f:c:Dd:e:H:s:i:hm:npQ:RvxyzZ")) != EOF)
+          getopt (argc, argv, "A:a:b:F:f:c:d:e:H:s:i:hm:npQ:RTtvxyzZ")) != EOF)
 #endif
     switch (i) {
     case 'A':
@@ -584,20 +636,16 @@ int main (int argc, char **argv)
 
     case 'd':
       debug_setlevel(atoi(optarg));
-#ifdef DEBUG
-      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
+#ifndef DEBUG
       printf _("DEBUG was not defined during compilation.  Ignored.\n");
 #endif
       break;
 
-    case 'D':
+    case 't':
+      dump_variables = 2;
+      break;
+
+    case 'T':
       dump_variables = 1;
       break;
 
@@ -683,14 +731,14 @@ int main (int argc, char **argv)
     show_version ();
     break;
   default:
-    puts (mutt_make_version ());
+    puts (mutt_make_version (1));
     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;
   }
@@ -710,8 +758,8 @@ int main (int argc, char **argv)
 
   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;