aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--database.cc20
-rw-r--r--notmuch.c5
-rw-r--r--notmuch.h11
3 files changed, 35 insertions, 1 deletions
diff --git a/database.cc b/database.cc
index b5986627..5049b47e 100644
--- a/database.cc
+++ b/database.cc
@@ -28,6 +28,26 @@
using namespace std;
+const char *
+notmuch_status_to_string (notmuch_status_t status)
+{
+ switch (status) {
+ case NOTMUCH_STATUS_SUCCESS:
+ return "No error occurred";
+ case NOTMUCH_STATUS_XAPIAN_EXCEPTION:
+ return "A Xapian exception occurred";
+ case NOTMUCH_STATUS_FILE_NOT_EMAIL:
+ return "File is not an email";
+ case NOTMUCH_STATUS_NULL_POINTER:
+ return "Erroneous NULL pointer";
+ case NOTMUCH_STATUS_TAG_TOO_LONG:
+ return "Tag value is too long";
+ default:
+ case NOTMUCH_STATUS_LAST_STATUS:
+ return "Unknown error status value";
+ }
+}
+
/* "128 bits of thread-id ought to be enough for anybody" */
#define NOTMUCH_THREAD_ID_BITS 128
#define NOTMUCH_THREAD_ID_DIGITS (NOTMUCH_THREAD_ID_BITS / 4)
diff --git a/notmuch.c b/notmuch.c
index bc04bc1b..e1409209 100644
--- a/notmuch.c
+++ b/notmuch.c
@@ -527,8 +527,11 @@ restore_command (int argc, char *argv[])
continue;
status = notmuch_message_add_tag (message, tag);
if (status) {
- fprintf (stderr, "Error applying tag %s to message %s.\n",
+ fprintf (stderr,
+ "Error applying tag %s to message %s:\n",
tag, message_id);
+ fprintf (stderr, "%s\n",
+ notmuch_status_to_string (status));
}
}
diff --git a/notmuch.h b/notmuch.h
index 02c743aa..912cbd26 100644
--- a/notmuch.h
+++ b/notmuch.h
@@ -49,6 +49,10 @@ typedef int notmuch_bool_t;
*
* NOTMUCH_STATUS_SUCCESS: No error occurred.
*
+ * XXX: We don't really want to expose this lame XAPIAN_EXCEPTION
+ * value. Instead we should map to things like DATABASE_LOCKED or
+ * whatever.
+ *
* NOTMUCH_STATUS_XAPIAN_EXCEPTION: A Xapian exception occurred
*
* NOTMUCH_STATUS_FILE_NOT_EMAIL: A file was presented that doesn't
@@ -72,6 +76,13 @@ typedef enum _notmuch_status {
NOTMUCH_STATUS_LAST_STATUS
} notmuch_status_t;
+/* Get a string representation of a notmuch_status_t value.
+ *
+ * The result is readonly.
+ */
+const char *
+notmuch_status_to_string (notmuch_status_t status);
+
/* Various opaque data types. For each notmuch_<foo>_t see the various
* notmuch_<foo> functions below. */
typedef struct _notmuch_database notmuch_database_t;