diff --git a/client/asset/dcr/rpcwallet.go b/client/asset/dcr/rpcwallet.go index b0565e9dde..61605f56c3 100644 --- a/client/asset/dcr/rpcwallet.go +++ b/client/asset/dcr/rpcwallet.go @@ -149,7 +149,8 @@ func newRPCWallet(cfg *Config, chainParams *chaincfg.Params, logger dex.Logger) log: log, } - certs, err := os.ReadFile(cfg.RPCCert) + cert := dex.CleanAndExpandPath(cfg.RPCCert) + certs, err := os.ReadFile(cert) if err != nil { return nil, fmt.Errorf("TLS certificate read error: %w", err) } diff --git a/client/cmd/dexc/config.go b/client/cmd/dexc/config.go index 4c53d99a99..0df95dfb71 100644 --- a/client/cmd/dexc/config.go +++ b/client/cmd/dexc/config.go @@ -151,9 +151,11 @@ func configure() (*Config, error) { } } + cfgPath := dex.CleanAndExpandPath(preCfg.Config) + // Load additional config from file. parser := flags.NewParser(&iniCfg, flags.Default) - err := flags.NewIniParser(parser).ParseFile(preCfg.Config) + err := flags.NewIniParser(parser).ParseFile(cfgPath) if err != nil { if _, ok := err.(*os.PathError); !ok { fmt.Fprintln(os.Stderr, err) diff --git a/dex/path.go b/dex/path.go index 4021e59654..524cac5934 100644 --- a/dex/path.go +++ b/dex/path.go @@ -31,7 +31,6 @@ func CleanAndExpandPath(path string) string { // they didn't have a LOCALAPPDATA. dirName = os.Getenv("LOCALAPPDATA") } - return filepath.Join(dirName, path) } @@ -40,17 +39,14 @@ func CleanAndExpandPath(path string) string { // %VARIABLE%, but the variables can still be expanded via POSIX-style // $VARIABLE. path = os.ExpandEnv(path) - path, _ = filepath.Abs(path) - return path - } - - if strings.HasPrefix(path, "~") { - dirName, _ = os.UserHomeDir() + return filepath.Clean(path) } - if dirName == "" { + dirName, err := os.UserHomeDir() + if err != nil { + // Fallback to CWD if retrieving user home directory fails. dirName = "." } - return filepath.Join(dirName, path[2:]) + return filepath.Join(dirName, path[1:]) }