aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorC. Morgan Hamill <me@cmhamill.org>2015-03-20 15:55:05 +0100
committerC. Morgan Hamill <me@cmhamill.org>2015-03-20 15:55:05 +0100
commitcba797fea1d9bf9d4b12b991b73a11b6d082faed (patch)
treed4a3c6b0792a9353f201a8bc824293cf05fe8680
parent8a564a9a1f9e4ac9475a43455dd30b2d176243e9 (diff)
downloadmail-cba797fea1d9bf9d4b12b991b73a11b6d082faed.tar.gz
Add `Database::create()` method.
Simple wrapper around notmuch API's `notmuch_database_create()` function.
-rw-r--r--src/database.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/database.rs b/src/database.rs
index 196932c..c431254 100644
--- a/src/database.rs
+++ b/src/database.rs
@@ -1,5 +1,13 @@
+use std::{
+ path,
+ ptr,
+};
+
use libc;
+use error::Result;
+use utils::ToCString;
+
use ffi;
// Re-exported under database module for pretty namespacin'.
@@ -9,3 +17,16 @@ pub use ffi::NotmuchDatabaseMode as Mode;
pub struct Version(libc::c_uint);
pub struct Database(*mut ffi::notmuch_database_t);
+
+impl Database {
+ pub fn create<P: path::AsPath>(path: &P) -> Result<Database> {
+ let path = path.as_path().to_cstring().unwrap();
+
+ let mut db = ptr::null_mut();
+ try!(unsafe {
+ ffi::notmuch_database_create(path.as_ptr(), &mut db)
+ }.as_result());
+
+ Ok(Database(db))
+ }
+}