X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=bindings%2Fruby%2Fdatabase.c;h=c03d7011f8406931045183a02eeb0d1395eb0107;hp=b75dfd1897a6bb2578ca9e284ee880185997366e;hb=f5db7ad7d243785c274a99734c681e69d13313d0;hpb=05dddf883dd762420bb8e6b86790e68d734fd568 diff --git a/bindings/ruby/database.c b/bindings/ruby/database.c index b75dfd18..c03d7011 100644 --- a/bindings/ruby/database.c +++ b/bindings/ruby/database.c @@ -42,10 +42,8 @@ notmuch_rb_database_initialize (int argc, VALUE *argv, VALUE self) int create, mode; VALUE pathv, hashv; VALUE modev; - -#if !defined(RSTRING_PTR) -# define RSTRING_PTR(v) (RSTRING((v))->ptr) -#endif /* !defined(RSTRING_PTR) */ + notmuch_database_t *database; + notmuch_status_t ret; /* Check arguments */ rb_scan_args (argc, argv, "11", &pathv, &hashv); @@ -77,9 +75,13 @@ notmuch_rb_database_initialize (int argc, VALUE *argv, VALUE self) } Check_Type (self, T_DATA); - DATA_PTR (self) = create ? notmuch_database_create (path) : notmuch_database_open (path, mode); - if (!DATA_PTR (self)) - rb_raise (notmuch_rb_eDatabaseError, "Failed to open database"); + if (create) + ret = notmuch_database_create (path, &database); + else + ret = notmuch_database_open (path, mode, &database); + notmuch_rb_status_raise (ret); + + DATA_PTR (self) = database; return self; } @@ -111,11 +113,13 @@ notmuch_rb_database_open (int argc, VALUE *argv, VALUE klass) VALUE notmuch_rb_database_close (VALUE self) { + notmuch_status_t ret; notmuch_database_t *db; Data_Get_Notmuch_Database (self, db); - notmuch_database_close (db); + ret = notmuch_database_destroy (db); DATA_PTR (self) = NULL; + notmuch_rb_status_raise (ret); return Qnil; } @@ -250,23 +254,20 @@ VALUE notmuch_rb_database_get_directory (VALUE self, VALUE pathv) { const char *path; + notmuch_status_t ret; notmuch_directory_t *dir; notmuch_database_t *db; Data_Get_Notmuch_Database (self, db); -#if !defined(RSTRING_PTR) -# define RSTRING_PTR(v) (RSTRING((v))->ptr) -#endif /* !defined(RSTRING_PTR) */ - SafeStringValue (pathv); path = RSTRING_PTR (pathv); - dir = notmuch_database_get_directory (db, path); - if (!dir) - rb_raise (notmuch_rb_eXapianError, "Xapian exception"); - - return Data_Wrap_Struct (notmuch_rb_cDirectory, NULL, NULL, dir); + ret = notmuch_database_get_directory (db, path, &dir); + notmuch_rb_status_raise (ret); + if (dir) + return Data_Wrap_Struct (notmuch_rb_cDirectory, NULL, NULL, dir); + return Qnil; } /* @@ -287,10 +288,6 @@ notmuch_rb_database_add_message (VALUE self, VALUE pathv) Data_Get_Notmuch_Database (self, db); -#if !defined(RSTRING_PTR) -# define RSTRING_PTR(v) (RSTRING((v))->ptr) -#endif /* !defined(RSTRING_PTR) */ - SafeStringValue (pathv); path = RSTRING_PTR (pathv); @@ -317,10 +314,6 @@ notmuch_rb_database_remove_message (VALUE self, VALUE pathv) Data_Get_Notmuch_Database (self, db); -#if !defined(RSTRING_PTR) -# define RSTRING_PTR(v) (RSTRING((v))->ptr) -#endif /* !defined (RSTRING_PTR) */ - SafeStringValue (pathv); path = RSTRING_PTR (pathv); @@ -344,10 +337,6 @@ notmuch_rb_database_find_message (VALUE self, VALUE idv) Data_Get_Notmuch_Database (self, db); -#if !defined(RSTRING_PTR) -# define RSTRING_PTR(v) (RSTRING((v))->ptr) -#endif /* !defined (RSTRING_PTR) */ - SafeStringValue (idv); id = RSTRING_PTR (idv); @@ -374,10 +363,6 @@ notmuch_rb_database_find_message_by_filename (VALUE self, VALUE pathv) Data_Get_Notmuch_Database (self, db); -#if !defined(RSTRING_PTR) -# define RSTRING_PTR(v) (RSTRING((v))->ptr) -#endif /* !defined (RSTRING_PTR) */ - SafeStringValue (pathv); path = RSTRING_PTR (pathv); @@ -403,10 +388,6 @@ notmuch_rb_database_query_create (VALUE self, VALUE qstrv) Data_Get_Notmuch_Database (self, db); -#if !defined(RSTRING_PTR) -# define RSTRING_PTR(v) (RSTRING((v))->ptr) -#endif /* !defined (RSTRING_PTR) */ - SafeStringValue (qstrv); qstr = RSTRING_PTR (qstrv);