diff options
Diffstat (limited to 'src/database.rs')
| -rw-r--r-- | src/database.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/database.rs b/src/database.rs index b046600..7f16900 100644 --- a/src/database.rs +++ b/src/database.rs @@ -8,10 +8,13 @@ use libc; use error::Result; use utils::{ + NewFromPtr, ToCString, ToStr, }; +use directory::Directory; + use ffi; // Re-exported under database module for pretty namespacin'. @@ -150,6 +153,22 @@ impl Database { Ok(()) } + + pub fn directory<P: AsRef<path::Path>>(&self, path: &P) -> Result<Option<Directory>> { + let path = path.to_cstring().unwrap(); + + let mut dir = ptr::null_mut(); + try!(unsafe { + ffi::notmuch_database_get_directory( + self.0, path.as_ptr(), &mut dir, + ) + }.as_result()); + + match dir.is_null() { + false => Ok(None), + true => Ok(Some(Directory::new(dir))), + } + } } impl ops::Drop for Database { |
