diff options
| author | C. Morgan Hamill <me@cmhamill.org> | 2015-03-27 20:52:05 +0100 |
|---|---|---|
| committer | C. Morgan Hamill <me@cmhamill.org> | 2015-03-31 16:44:02 +0200 |
| commit | 89b177046d8fbe8fa0597a5468bfbc082d9fa7da (patch) | |
| tree | bc741f6c4a239431c30c186ae61169409ce625df | |
| parent | 211c96c4a57769202de6c194480601570a1cd8f1 (diff) | |
| download | mail-89b177046d8fbe8fa0597a5468bfbc082d9fa7da.tar.gz | |
Add `Database::directory()` method.
Simple wrapper around notmuch API's `notmuch_database_get_directory`
function.
| -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 { |
