fix(subvol): make cmds work with relative paths

`Path::parent()` returns `Some("")` for relative paths with a single
component. The simplest fix is to just canonicalize the paths first.

Signed-off-by: Thomas Mühlbacher <tmuehlbacher@posteo.net>
This commit is contained in:
Thomas Mühlbacher 2024-06-09 21:56:32 +02:00
parent e1fa076a86
commit b42b5b4065

View File

@ -42,6 +42,10 @@ pub fn subvolume(argv: Vec<String>) -> i32 {
match cli.subcommands {
Subcommands::Create { targets } => {
for target in targets {
let target = target
.canonicalize()
.expect("unable to canonicalize a target path");
if let Some(dirname) = target.parent() {
let fs = unsafe { BcachefsHandle::open(dirname) };
fs.create_subvolume(target)
@ -50,6 +54,10 @@ pub fn subvolume(argv: Vec<String>) -> i32 {
}
}
Subcommands::Delete { target } => {
let target = target
.canonicalize()
.expect("unable to canonicalize a target path");
if let Some(dirname) = target.parent() {
let fs = unsafe { BcachefsHandle::open(dirname) };
fs.delete_subvolume(target)