Fix literal-tilde fallback bug in breadarr-shared's expand_home
expand_home() fell through to PathBuf::from(input) — the literal, unexpanded "~/..." string — whenever the HOME env var itself wasn't set, same bug class as breadclip-core/breadpad-shared/breadmon (found during this pass's own crate-migration sweep, in a different shape here: the bug was in this crate's own tilde-expansion helper rather than a dirs::xxx().unwrap_or_else() chain). Fixed via bread_utils::xdg::home_dir, which resolves a real home directory before ever needing to fall back. Builds and tests clean: 205 passed, 1 pre-existing network-dependent test ignored, 0 failed.
This commit is contained in:
parent
8a2936b8fd
commit
830e80622e
3 changed files with 12 additions and 3 deletions
|
|
@ -9,3 +9,5 @@ anyhow.workspace = true
|
|||
toml.workspace = true
|
||||
reqwest.workspace = true
|
||||
chrono.workspace = true
|
||||
# TODO(owner): switch to tag-pinned git dependency once bread-utils is merged and tagged, matching the bread-theme pattern
|
||||
bread-utils = { path = "../../bread-ecosystem-fix-worktree/bread-utils" }
|
||||
|
|
|
|||
|
|
@ -314,10 +314,16 @@ fn config_path() -> PathBuf {
|
|||
}
|
||||
|
||||
fn expand_home(input: &str) -> PathBuf {
|
||||
// Was: falls through to `PathBuf::from(input)` — a literal, unexpanded
|
||||
// "~/..." string — whenever the `HOME` env var itself isn't set.
|
||||
// PathBuf/std::fs never expand `~`, so that fallback silently produced
|
||||
// a path relative to the current working directory instead of the
|
||||
// user's actual home. Same bug class as breadclip-core/breadpad-shared/
|
||||
// breadmon (see bread_utils::xdg's doc comment); bread_utils::xdg::home_dir
|
||||
// resolves a real home directory (falling back to `/root`, never a
|
||||
// literal tilde) before this ever needs to fall back at all.
|
||||
if let Some(stripped) = input.strip_prefix("~/") {
|
||||
if let Ok(home) = env::var("HOME") {
|
||||
return Path::new(&home).join(stripped);
|
||||
}
|
||||
return bread_utils::xdg::home_dir().join(stripped);
|
||||
}
|
||||
PathBuf::from(input)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue