Resolve every base directory in one place, and on Windows
Five sites each read XDG_*_HOME and fell back to $HOME/.local/… on their own, which is fine on Linux and wrong everywhere else: Windows sets neither variable, so every one of them degraded to a path relative to the working directory — for a Start Menu launch, C:\Windows\System32. The models lookup walked XDG_DATA_DIRS the same way. dr_plat::dirs now holds the rule per platform: XDG on Unix, the known folders on Windows — %APPDATA% for config, which roams, and %LOCALAPPDATA% for data and state, which do not — and the executable's own directory as the system data dir, which is where the installer puts the models. The Android overrides stay where they were; only the fallback behind them moved. Both rule sets are unit-tested on either host, and the Windows one was confirmed by running the application under Wine: its log landed in AppData\Local\darkroom\state and nothing was written anywhere else.
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
// arrangement this crate exists to prevent.
|
||||
pub mod crash;
|
||||
pub mod diagnostics;
|
||||
pub mod dirs;
|
||||
pub mod display;
|
||||
pub mod input;
|
||||
pub mod secrets;
|
||||
@@ -20,6 +21,7 @@ pub mod storage;
|
||||
pub mod volumes;
|
||||
|
||||
pub use diagnostics::{Installed, LogFile};
|
||||
pub use dirs::{base_dir, system_data_dirs, Base};
|
||||
pub use display::{
|
||||
Bounds, DisplayInfo, DisplayProfile, DisplayServer, DisplaySurvey, FallbackReason,
|
||||
ProfileSource,
|
||||
|
||||
Reference in New Issue
Block a user