aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Mueller <deso@posteo.net>2019-01-04 17:34:17 -0800
committerDaniel Mueller <deso@posteo.net>2019-01-04 17:34:17 -0800
commit1a04b3c7ca26ef718c16b7b2e1d51fea29c12301 (patch)
tree01ee877c315eafa4b752e93d5164984ff15c3882
parente70143fdb71a99ad160d0bec33d47b4248c0f2ec (diff)
downloadnitrocli-1a04b3c7ca26ef718c16b7b2e1d51fea29c12301.tar.gz
nitrocli-1a04b3c7ca26ef718c16b7b2e1d51fea29c12301.tar.bz2
Use libc provided sync function
In order to flush file system level buffers to disk we use the sync function. The way we made this function known to the crate was by explicitly declaring it as extern "C" and linking against libc. However, given that we already (indirectly) depend on libc through the nitrokey crate (and that is unlikely to change) we may as well make libc a direct dependency and invoke the function through the crate. Given that the libc crate is available for a variety of platforms, it seems likely that its approach to interfacing with the system libc library is more portable than our hand rolled version.
-rw-r--r--nitrocli/Cargo.lock1
-rw-r--r--nitrocli/Cargo.toml4
-rw-r--r--nitrocli/src/commands.rs7
3 files changed, 7 insertions, 5 deletions
diff --git a/nitrocli/Cargo.lock b/nitrocli/Cargo.lock
index abbf84d..ae75d07 100644
--- a/nitrocli/Cargo.lock
+++ b/nitrocli/Cargo.lock
@@ -54,6 +54,7 @@ name = "nitrocli"
version = "0.2.0"
dependencies = [
"argparse 0.2.2",
+ "libc 0.2.45",
"nitrokey 0.2.3",
]
diff --git a/nitrocli/Cargo.toml b/nitrocli/Cargo.toml
index f4002f4..c1c241c 100644
--- a/nitrocli/Cargo.toml
+++ b/nitrocli/Cargo.toml
@@ -45,6 +45,10 @@ incremental = false
version = "0.2.2"
path = "../argparse"
+[dependencies.libc]
+version = "0.2"
+path = "../libc"
+
[dependencies.nitrokey]
version = "0.2.1"
path = "../nitrokey"
diff --git a/nitrocli/src/commands.rs b/nitrocli/src/commands.rs
index 503a180..77981db 100644
--- a/nitrocli/src/commands.rs
+++ b/nitrocli/src/commands.rs
@@ -22,6 +22,8 @@ use std::result;
use std::time;
use std::u8;
+use libc::sync;
+
use nitrokey::ConfigureOtp;
use nitrokey::Device;
use nitrokey::GenerateOtp;
@@ -234,11 +236,6 @@ pub fn storage_open() -> Result<()> {
)
}
-#[link(name = "c")]
-extern "C" {
- fn sync();
-}
-
/// Close the previously opened encrypted volume.
pub fn storage_close() -> Result<()> {
// Flush all filesystem caches to disk. We are mostly interested in