diff options
author | Shawn Rutledge <shawn.rutledge@digia.com> | 2013-01-30 16:38:06 +0100 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2013-02-01 00:51:41 +0100 |
commit | 8420c57b7c7c6139ac21575e747c9475f7d052ff (patch) | |
tree | 245d88758dd1a316be56fcb6323f2a08f689de1a /src/qtchooser/main.cpp | |
parent | 281f246980af700421adfec15797eed36e1edd74 (diff) |
Expand leading tilde in tool path (for e.g. ~/dev/qt5)
Change-Id: I712d22a40e75a9f36ccb5709844547249c24bf7c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
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; |