]> git.notmuchmail.org Git - notmuch/blobdiff - contrib/notmuch-deliver/src/main.c
Merge tag '0.13.2'
[notmuch] / contrib / notmuch-deliver / src / main.c
index 4e0a6bba395b0cd7a157e5132adefb1c474e79e8..032b9d6297daa14f850b4cccfb83013e53716070 100644 (file)
@@ -1,22 +1,23 @@
-/* vim: set cino= fo=croql sw=8 ts=8 sts=0 noet cin fdm=syntax : */
-
-/*
- * Copyright (c) 2010 Ali Polatel <alip@exherbo.org>
+/* notmuch-deliver - If you make the user a promise... make sure you deliver it!
+ *
+ * Copyright © 2010 Ali Polatel
  * Based in part upon deliverquota of maildrop which is:
  *   Copyright 1998 - 2009 Double Precision, Inc.
  *
- * This file is part of the notmuch-deliver. notmuch-deliver is free software;
- * you can redistribute it and/or modify it under the terms of the GNU General
- * Public License version 2, as published by the Free Software Foundation.
+ * 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 3 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.
  *
- * notmuch-deliver 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, see http://www.gnu.org/licenses/ .
  *
- * 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., 59 Temple
- * Place, Suite 330, Boston, MA  02111-1307  USA
+ * Author: Ali Polatel <polatel@gmail.com>
  */
 
 #ifdef HAVE_CONFIG_H
@@ -167,8 +168,7 @@ save_splice(int fdin, int fdout)
                do {
                        written = splice(pfd[0], NULL, fdout, NULL, ret, 0);
                        if (!written) {
-                               g_critical("Splicing data to temporary file failed: %s",
-                                       g_strerror(errno));
+                               g_critical("Splicing data to temporary file failed: internal error");
                                close(pfd[0]);
                                close(pfd[1]);
                                return EX_IOERR;
@@ -359,6 +359,7 @@ main(int argc, char **argv)
        GOptionContext *ctx;
        GError *error = NULL;
        notmuch_database_t *db;
+       notmuch_status_t status;
 
        ctx = g_option_context_new("[FOLDER]");
        g_option_context_add_main_entries(ctx, options, PACKAGE);
@@ -415,6 +416,11 @@ main(int argc, char **argv)
        }
        g_free(conf_path);
 
+       if ((argc - 1) > 1) {
+               g_critical("Won't deliver to %d folders", argc - 1);
+               return EX_USAGE;
+       }
+
        if (argc > 1) {
                folder = g_strdup_printf("%s%s", opt_folder ? "." : "", argv[1]);
                maildir = g_build_filename(db_path, folder, NULL);
@@ -424,7 +430,14 @@ main(int argc, char **argv)
                maildir = g_strdup(db_path);
 
        g_debug("Opening notmuch database `%s'", db_path);
-       db = notmuch_database_open(db_path, NOTMUCH_DATABASE_MODE_READ_WRITE);
+       status = notmuch_database_open(db_path, NOTMUCH_DATABASE_MODE_READ_WRITE,
+                                      &db);
+       if (status) {
+           g_critical("Failed to open database `%s': %s",
+                      db_path, notmuch_status_to_string(status));
+           g_free(maildir);
+           return EX_SOFTWARE;
+       }
        g_free(db_path);
        if (db == NULL)
                return EX_SOFTWARE;
@@ -450,7 +463,7 @@ main(int argc, char **argv)
        g_strfreev(opt_rtags);
        g_free(mail);
 
-       notmuch_database_close(db);
+       notmuch_database_destroy(db);
 
        return 0;
 }