diff options
author | Daniel Mueller <deso@posteo.net> | 2019-01-04 17:34:17 -0800 |
---|---|---|
committer | Daniel Mueller <deso@posteo.net> | 2019-01-04 17:34:17 -0800 |
commit | 1a04b3c7ca26ef718c16b7b2e1d51fea29c12301 (patch) | |
tree | 01ee877c315eafa4b752e93d5164984ff15c3882 | |
parent | e70143fdb71a99ad160d0bec33d47b4248c0f2ec (diff) | |
download | nitrocli-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.lock | 1 | ||||
-rw-r--r-- | nitrocli/Cargo.toml | 4 | ||||
-rw-r--r-- | nitrocli/src/commands.rs | 7 |
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 |