- notmuch_database_t *notmuch = NULL;
- char *default_path, *mail_directory = NULL;
- size_t line_size;
- int count;
- add_files_state_t add_files_state;
- double elapsed;
- struct timeval tv_now;
- notmuch_status_t ret = NOTMUCH_STATUS_SUCCESS;
-
- printf ("Welcome to notmuch!\n\n");
-
- printf ("The goal of notmuch is to help you manage and search your collection of\n"
- "email, and to efficiently keep up with the flow of email as it comes in.\n\n");
-
- printf ("Notmuch needs to know the top-level directory of your email archive,\n"
- "(where you already have mail stored and where messages will be delivered\n"
- "in the future). This directory can contain any number of sub-directories\n"
- "and primarily just files with indvidual email messages (eg. maildir or mh\n"
- "archives are perfect). If there are other, non-email files (such as\n"
- "indexes maintained by other email programs) then notmuch will do its\n"
- "best to detect those and ignore them.\n\n");
-
- printf ("Mail storage that uses mbox format, (where one mbox file contains many\n"
- "messages), will not work with notmuch. If that's how your mail is currently\n"
- "stored, we recommend you first convert it to maildir format with a utility\n"
- "such as mb2md. In that case, press Control-C now and run notmuch again\n"
- "once the conversion is complete.\n\n");
-
-
- default_path = notmuch_database_default_path ();
- printf ("Top-level mail directory [%s]: ", default_path);
- fflush (stdout);
-
- getline (&mail_directory, &line_size, stdin);
- chomp_newline (mail_directory);
-
- printf ("\n");
-
- if (mail_directory == NULL || strlen (mail_directory) == 0) {
- if (mail_directory)
- free (mail_directory);
- mail_directory = default_path;
- } else {
- /* XXX: Instead of telling the user to use an environment
- * variable here, we should really be writing out a configuration
- * file and loading that on the next run. */
- if (strcmp (mail_directory, default_path)) {
- printf ("Note: Since you are not using the default path, you will want to set\n"
- "the NOTMUCH_BASE environment variable to %s so that\n"
- "future calls to notmuch commands will know where to find your mail.\n",
- mail_directory);
- printf ("For example, if you are using bash for your shell, add:\n\n");
- printf ("\texport NOTMUCH_BASE=%s\n\n", mail_directory);
- printf ("to your ~/.bashrc file.\n\n");
- }
- free (default_path);
- }
-
- notmuch = notmuch_database_create (mail_directory);
- if (notmuch == NULL) {
- fprintf (stderr, "Failed to create new notmuch database at %s\n",
- mail_directory);
- ret = NOTMUCH_STATUS_FILE_ERROR;
- goto DONE;
- }
-
- printf ("OK. Let's take a look at the mail we can find in the directory\n");
- printf ("%s ...\n", mail_directory);
-
- count = 0;
- count_files (mail_directory, &count);
-
- printf ("Found %d total files. That's not much mail.\n\n", count);
-
- printf ("Next, we'll inspect the messages and create a database of threads:\n");
-
- add_files_state.ignore_read_only_directories = FALSE;
- add_files_state.total_files = count;
- add_files_state.processed_files = 0;
- add_files_state.added_messages = 0;
- gettimeofday (&add_files_state.tv_start, NULL);
-
- ret = add_files (notmuch, mail_directory, &add_files_state);
-
- gettimeofday (&tv_now, NULL);
- elapsed = tv_elapsed (add_files_state.tv_start,
- tv_now);
- printf ("Processed %d %s in ", add_files_state.processed_files,
- add_files_state.processed_files == 1 ?
- "file" : "total files");
- print_formatted_seconds (elapsed);
- if (elapsed > 1) {
- printf (" (%d files/sec.). \n",
- (int) (add_files_state.processed_files / elapsed));
- } else {
- printf (". \n");
- }
- if (add_files_state.added_messages) {
- printf ("Added %d %s to the database.\n\n",
- add_files_state.added_messages,
- add_files_state.added_messages == 1 ?
- "message" : "unique messages");
- }
-
- printf ("When new mail is delivered to %s in the future,\n"
- "run \"notmuch new\" to add it to the database.\n\n",
- mail_directory);
- printf ("And if you have any sub-directories that are archives (that is,\n"
- "they will never receive new mail), marking these directores as\n"
- "read-only (chmod u-w /path/to/dir) will make \"notmuch new\"\n"
- "much more efficient (it won't even look in those directories).\n\n");
-
- if (ret) {
- printf ("Note: At least one error was encountered: %s\n",
- notmuch_status_to_string (ret));
- }
+ void *local;
+ char *talloc_report;
+ const char *command_name = NULL;
+ command_t *command;
+ char *config_file_name = NULL;
+ notmuch_config_t *config = NULL;
+ notmuch_bool_t print_help=FALSE, print_version=FALSE;
+ int opt_index;
+ int ret;
+
+ notmuch_opt_desc_t options[] = {
+ { NOTMUCH_OPT_BOOLEAN, &print_help, "help", 'h', 0 },
+ { NOTMUCH_OPT_BOOLEAN, &print_version, "version", 'v', 0 },
+ { NOTMUCH_OPT_STRING, &config_file_name, "config", 'c', 0 },
+ { 0, 0, 0, 0, 0 }
+ };
+
+ talloc_enable_null_tracking ();
+
+ local = talloc_new (NULL);
+
+ g_mime_init (GMIME_ENABLE_RFC2047_WORKAROUNDS);
+#if !GLIB_CHECK_VERSION(2, 35, 1)
+ g_type_init ();
+#endif