From 302d54834d090d7e62377883f36dc709c95e5673 Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Wed, 21 Oct 2009 16:12:53 -0700 Subject: [PATCH] Add notmuch_status_to_string function. Be kind and let the user print error messages, not just error codes. --- database.cc | 20 ++++++++++++++++++++ notmuch.c | 5 ++++- notmuch.h | 11 +++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) 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__t see the various * notmuch_ functions below. */ typedef struct _notmuch_database notmuch_database_t;