aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorC. Morgan Hamill <me@cmhamill.org>2015-03-27 20:52:05 +0100
committerC. Morgan Hamill <me@cmhamill.org>2015-03-31 16:44:02 +0200
commit89b177046d8fbe8fa0597a5468bfbc082d9fa7da (patch)
treebc741f6c4a239431c30c186ae61169409ce625df
parent211c96c4a57769202de6c194480601570a1cd8f1 (diff)
downloadmail-89b177046d8fbe8fa0597a5468bfbc082d9fa7da.tar.gz
Add `Database::directory()` method.
Simple wrapper around notmuch API's `notmuch_database_get_directory` function.
-rw-r--r--src/database.rs19
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 {