diff --git a/src/overlay_params.cpp b/src/overlay_params.cpp index d78ea2e8..e1435229 100644 --- a/src/overlay_params.cpp +++ b/src/overlay_params.cpp @@ -239,22 +239,22 @@ parse_path(const char *str) #ifdef _XOPEN_SOURCE // Expand ~/ to home dir if (str[0] == '~') { - std::string s = str; - size_t n = 0; + std::stringstream s; wordexp_t e; int ret; - while ((n = s.find_first_of(" ", n)) != std::string::npos) { - s = s.replace(n, 1, "\\ "); - n += 2; + if (!(ret = wordexp(str, &e, 0))) { + for(size_t i = 0; i < e.we_wordc; i++) + { + if (i > 0) + s << " "; + s << e.we_wordv[i]; + } } - - if (!(ret = wordexp(s.c_str(), &e, 0))) - s = e.we_wordv[0]; wordfree(&e); if (!ret) - return s; + return s.str(); } #endif return str;