summaryrefslogtreecommitdiffstats
path: root/src/qtchooser/main.cpp
diff options
context:
space:
mode:
authorShawn Rutledge <shawn.rutledge@digia.com>2013-01-30 16:38:06 +0100
committerThiago Macieira <thiago.macieira@intel.com>2013-02-01 00:51:41 +0100
commit8420c57b7c7c6139ac21575e747c9475f7d052ff (patch)
tree245d88758dd1a316be56fcb6323f2a08f689de1a /src/qtchooser/main.cpp
parent281f246980af700421adfec15797eed36e1edd74 (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.cpp38
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;