summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorquentin konieczko <konieczko@gmail.com>2023-01-19 14:43:50 +0100
committerquentin konieczko <konieczko@gmail.com>2023-01-19 14:43:50 +0100
commitff8fc67e27ceadf7e1214ca29c1492efa2bfec5b (patch)
treec8613aeacdf9dcef0609a2c5a53ee82c2b4c8b1c /src
parentb63f5cadb3c64762bf2e28179f0e53c68e847768 (diff)
is open?
Diffstat (limited to 'src')
-rw-r--r--src/cryptsetup.rs20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/cryptsetup.rs b/src/cryptsetup.rs
index 349abb4..ef80628 100644
--- a/src/cryptsetup.rs
+++ b/src/cryptsetup.rs
@@ -226,7 +226,7 @@ impl CryptoDevice {
}
fn open_mount(&mut self, username: &str, passwords: &mut PasswordHolder) -> FmResult<bool> {
- if self.mount_point().is_some() {
+ if self.is_mounted() {
Err(FmError::custom(
"luks open mount",
"device is already mounted",
@@ -308,6 +308,24 @@ impl CryptoDevice {
self.mount_point().is_some()
}
+ pub fn is_open(&self) -> FmResult<bool> {
+ let child = Command::new("lsblk")
+ .arg("-l")
+ .arg("-n")
+ .arg(self.path.clone())
+ .stdin(Stdio::null())
+ .stderr(Stdio::null())
+ .spawn()?;
+ let output = child.wait_with_output()?;
+ info!(
+ "is opened ? output of lsblk\nstdout: {}\nstderr{}",
+ String::from_utf8(output.stdout.clone())?,
+ String::from_utf8(output.stderr)?
+ );
+ let output = String::from_utf8(output.stdout)?;
+ Ok(output.lines().count() > 1)
+ }
+
/// String representation of the device.
pub fn as_string(&self) -> FmResult<String> {
Ok(if let Some(mount_point) = self.mount_point() {