diff options
Diffstat (limited to 'src/qtchooser/main.cpp')
-rw-r--r-- | src/qtchooser/main.cpp | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/src/qtchooser/main.cpp b/src/qtchooser/main.cpp index b05c1b6..9c67b18 100644 --- a/src/qtchooser/main.cpp +++ b/src/qtchooser/main.cpp @@ -151,6 +151,24 @@ int ToolWrapper::printEnvironment(const string &targetSdk) return 0; } +static string userHome() +{ + const char *value = getenv("HOME"); + if (value) + return value; + +#if defined(_WIN32) || defined(__WIN32__) + // ### FIXME: some Windows-specific code to get the user's home directory + // using GetUserProfileDirectory (userenv.h / dll) + return "C:"; +#else + struct passwd *pwd = getpwuid(getuid()); + if (pwd && pwd->pw_dir) + return pwd->pw_dir; + return string(); +#endif +} + int ToolWrapper::runTool(const string &targetSdk, const string &targetTool, char **argv) { Sdk sdk = selectSdk(targetSdk); @@ -158,6 +176,8 @@ int ToolWrapper::runTool(const string &targetSdk, const string &targetTool, char return 1; string tool = sdk.toolsPath + PATH_SEP + targetTool; + if (tool[0] == '~') + tool = userHome() + tool.substr(1); argv[0] = &tool[0]; #ifdef QTCHOOSER_TEST_MODE while (*argv) @@ -202,24 +222,6 @@ static string qgetenv(const char *env, const string &defaultValue = string()) return value ? string(value) : defaultValue; } -static string userHome() -{ - const char *value = getenv("HOME"); - if (value) - return value; - -#if defined(_WIN32) || defined(__WIN32__) - // ### FIXME: some Windows-specific code to get the user's home directory - // using GetUserProfileDirectory (userenv.h / dll) - return "C:"; -#else - struct passwd *pwd = getpwuid(getuid()); - if (pwd && pwd->pw_dir) - return pwd->pw_dir; - return string(); -#endif -} - vector<string> ToolWrapper::searchPaths() const { vector<string> paths; |