X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=bindings%2Fruby%2Fdirectory.c;h=303523c2dc69df0c27af45a74e66eb837e99aa7d;hb=5c00af46ec5add69b3b2750ea2a9437e5953a7b0;hp=46fe11cf570699f3a0e3fe33310c4336254be4e7;hpb=06bf04500ba282052d38adf428219968ae62bb54;p=notmuch diff --git a/bindings/ruby/directory.c b/bindings/ruby/directory.c index 46fe11cf..303523c2 100644 --- a/bindings/ruby/directory.c +++ b/bindings/ruby/directory.c @@ -1,6 +1,6 @@ /* The Ruby interface to the notmuch mail library * - * Copyright © 2010 Ali Polatel + * Copyright © 2010, 2011 Ali Polatel * * 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 @@ -20,6 +20,24 @@ #include "defs.h" +/* + * call-seq: DIR.destroy! => nil + * + * Destroys the directory, freeing all resources allocated for it. + */ +VALUE +notmuch_rb_directory_destroy (VALUE self) +{ + notmuch_directory_t *dir; + + Data_Get_Struct (self, notmuch_directory_t, dir); + + notmuch_directory_destroy (dir); + DATA_PTR (self) = NULL; + + return Qnil; +} + /* * call-seq: DIR.mtime => fixnum * @@ -27,13 +45,13 @@ * stored. */ VALUE -notmuch_rb_directory_get_mtime(VALUE self) +notmuch_rb_directory_get_mtime (VALUE self) { - notmuch_rb_directory_t *dir; + notmuch_directory_t *dir; - Data_Get_Struct(self, notmuch_rb_directory_t, dir); + Data_Get_Notmuch_Directory (self, dir); - return UINT2NUM(notmuch_directory_get_mtime(dir->nm_dir)); + return UINT2NUM (notmuch_directory_get_mtime (dir)); } /* @@ -42,18 +60,19 @@ notmuch_rb_directory_get_mtime(VALUE self) * Store an mtime within the database for the directory object. */ VALUE -notmuch_rb_directory_set_mtime(VALUE self, VALUE mtimev) +notmuch_rb_directory_set_mtime (VALUE self, VALUE mtimev) { notmuch_status_t ret; - notmuch_rb_directory_t *dir; + notmuch_directory_t *dir; + + Data_Get_Notmuch_Directory (self, dir); - Data_Get_Struct(self, notmuch_rb_directory_t, dir); + if (!FIXNUM_P (mtimev)) + rb_raise (rb_eTypeError, "First argument not a fixnum"); - if (!FIXNUM_P(mtimev)) - rb_raise(rb_eTypeError, "First argument not a fixnum"); + ret = notmuch_directory_set_mtime (dir, FIX2UINT (mtimev)); + notmuch_rb_status_raise (ret); - ret = notmuch_directory_set_mtime(dir->nm_dir, FIX2UINT(mtimev)); - notmuch_rb_status_raise(ret); return Qtrue; } @@ -64,20 +83,16 @@ notmuch_rb_directory_set_mtime(VALUE self, VALUE mtimev) * filenames of messages in the database within the given directory. */ VALUE -notmuch_rb_directory_get_child_files(VALUE self) +notmuch_rb_directory_get_child_files (VALUE self) { - notmuch_rb_directory_t *dir; - notmuch_rb_filenames_t *flist; - VALUE flistv; + notmuch_directory_t *dir; + notmuch_filenames_t *fnames; - Data_Get_Struct(self, notmuch_rb_directory_t, dir); + Data_Get_Notmuch_Directory (self, dir); - flistv = Data_Make_Struct(notmuch_rb_cFileNames, notmuch_rb_filenames_t, - notmuch_rb_filenames_mark, notmuch_rb_filenames_free, flist); - flist->dir = self; - flist->nm_flist = notmuch_directory_get_child_files(dir->nm_dir); + fnames = notmuch_directory_get_child_files (dir); - return flistv; + return Data_Wrap_Struct (notmuch_rb_cFileNames, NULL, NULL, fnames); } /* @@ -87,18 +102,14 @@ notmuch_rb_directory_get_child_files(VALUE self) * directories in the database within the given directory. */ VALUE -notmuch_rb_directory_get_child_directories(VALUE self) +notmuch_rb_directory_get_child_directories (VALUE self) { - notmuch_rb_directory_t *dir; - notmuch_rb_filenames_t *flist; - VALUE flistv; + notmuch_directory_t *dir; + notmuch_filenames_t *fnames; - Data_Get_Struct(self, notmuch_rb_directory_t, dir); + Data_Get_Notmuch_Directory (self, dir); - flistv = Data_Make_Struct(notmuch_rb_cFileNames, notmuch_rb_filenames_t, - notmuch_rb_filenames_mark, notmuch_rb_filenames_free, flist); - flist->dir = self; - flist->nm_flist = notmuch_directory_get_child_directories(dir->nm_dir); + fnames = notmuch_directory_get_child_directories (dir); - return flistv; + return Data_Wrap_Struct (notmuch_rb_cFileNames, NULL, NULL, fnames); }