diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/error.rs | 2 | ||||
-rw-r--r-- | src/main.rs | 15 |
2 files changed, 3 insertions, 14 deletions
diff --git a/src/error.rs b/src/error.rs index 97fa882..6f8e217 100644 --- a/src/error.rs +++ b/src/error.rs @@ -4,8 +4,6 @@ use thiserror::Error; #[derive(Debug, Error)] pub enum Error { - #[error("can't find cmdline (/cmdline.txt) on boot partition")] - NoCmdline, #[error("can't find disk device")] NoDiskDev, #[error("no private keys found in file")] diff --git a/src/main.rs b/src/main.rs index f72da42..89db44c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -279,21 +279,12 @@ where fn modify_cmdline(old: &str, new: &str) -> Result<()> { let boot = boot_dev()?; - let mut buf = fs::read(boot)?; - let cmdline_buf = fs::read("/boot/cmdline.txt")?; - let cmdline_offset = buf - .windows(cmdline_buf.len()) - .position(|window| window == cmdline_buf) - .ok_or(Error::NoCmdline)? - / 512 - + 1; + let mut cmdline = fs::read(boot)?; + replace_slice(&mut cmdline, old.as_bytes(), new.as_bytes()); + fs::write(boot, cmdline)?; - replace_slice(&mut buf[cmdline_offset..], old.as_bytes(), new.as_bytes()); - - fs::write(boot, buf)?; nix::unistd::sync(); - Ok(()) } |