summaryrefslogtreecommitdiff
path: root/guimb/main.c
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2001-07-19 14:52:25 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2001-07-19 14:52:25 +0000
commit6567d383b2fbc7c333d59f7878432ecb7912b83f (patch)
treeb35e59baa9828033079caf90ff6e9a311c3dda89 /guimb/main.c
parent1f2f9ff2e417f51e8f487241a7ef4609f5432c70 (diff)
downloadmailutils-6567d383b2fbc7c333d59f7878432ecb7912b83f.tar.gz
mailutils-6567d383b2fbc7c333d59f7878432ecb7912b83f.tar.bz2
Main functions.
Diffstat (limited to 'guimb/main.c')
-rw-r--r--guimb/main.c139
1 files changed, 139 insertions, 0 deletions
diff --git a/guimb/main.c b/guimb/main.c
new file mode 100644
index 000000000..f97b16eaf
--- /dev/null
+++ b/guimb/main.c
@@ -0,0 +1,139 @@
+/* GNU mailutils - a suite of utilities for electronic mail
+ Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+
+ 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, 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include "guimb.h"
+#include "getopt.h"
+
+static char short_options[] = "de:f:g:hm:v";
+static struct option long_options[] = {
+ {"debug", no_argument, 0, 'd'},
+ {"expression", required_argument, 0, 'e'},
+ {"file", required_argument, 0, 'f'},
+ {"help", no_argument, 0, 'h'},
+ {"guile-command", required_argument, 0, 'g'},
+ {"version", no_argument, 0, 'v'},
+ {0, 0, 0, 0}
+};
+
+char *program_file;
+char *program_expr;
+int debug_guile;
+
+static void usage (void);
+
+static int g_size;
+static int g_argc;
+static char **g_argv;
+
+#define ARG_INC 16
+
+void
+append_arg (char *arg)
+{
+ if (g_argc == g_size)
+ {
+ g_size += ARG_INC;
+ g_argv = realloc (g_argv, g_size * sizeof (g_argv[0]));
+ if (!g_argv)
+ {
+ util_error ("not enough memory");
+ exit (1);
+ }
+ }
+ g_argv[g_argc++] = arg;
+}
+
+int
+main (int argc, char *argv[])
+{
+ int c;
+
+ while ((c = getopt_long (argc, argv, short_options, long_options, NULL))
+ != -1)
+ switch (c)
+ {
+ case 'd':
+ debug_guile = 1;
+ break;
+ case 'f':
+ program_file = optarg;
+ break;
+ case 'e':
+ program_expr = optarg;
+ break;
+ case 'g':
+ append_arg (optarg);
+ break;
+ case 'h':
+ usage ();
+ exit (0);
+ case 'v':
+ printf ("guimb (" PACKAGE " " VERSION ")\n");
+ exit (0);
+ default:
+ fprintf (stderr,
+ "Invalid argument. Try guimb --help for more info\n");
+ exit (1);
+ }
+ append_arg (NULL);
+ g_argc--;
+
+ /* Register the desired formats. */
+ {
+ list_t lst;
+ registrar_get_list (&lst);
+ list_append (lst, mbox_record);
+ list_append (lst, path_record);
+ list_append (lst, pop_record);
+ list_append (lst, imap_record);
+ /* Possible supported mailers. */
+ list_append (lst, sendmail_record);
+ list_append (lst, smtp_record);
+ }
+
+ collect_open_mailbox_file ();
+ if (argv[optind])
+ {
+ for (; argv[optind]; optind++)
+ collect_append_file (argv[optind]);
+ }
+ else
+ collect_append_file ("-");
+ run_main (g_argc, g_argv);
+}
+
+static char usage_str[] =
+ "Usage: guimb [OPTIONS] [MBOX ...]\n"
+ "Process the contents of the specified mailboxes using a Scheme program\n"
+ "or expression.\n"
+ "Options are:\n"
+ " -d, --debug Start with debugging evaluator and backtraces.\n"
+ " -e, --expression EXPR Execute scheme expression.\n"
+ " -f, --file PROGFILE Read program from PROGFILE.\n"
+ " -g, --guile-command ARG Append ARG to the command line passed to guile\n"
+ " program.\n"
+ " -h, --help Display help message.\n"
+ " -v, --version Display program version.\n"
+ "\n"
+ "When both --file and --expression are specified, file is evaluated first.\n"
+ "If no mailboxes are specified the standard input is read.\n";
+
+void
+usage ()
+{
+ printf ("%s\n" "Report bugs to <bug-mailutils@gnu.org>\n", usage_str);
+}

Return to:

Send suggestions and report system problems to the System administrator.