Index: base/base_paths_linux.cc |
diff --git a/base/base_paths_linux.cc b/base/base_paths_linux.cc |
index 2ee690da881578db9a7259e39330db28f52b54ac..9f940cb986cb4d6145401c1d3c0a74dbf380e2fe 100644 |
--- a/base/base_paths_linux.cc |
+++ b/base/base_paths_linux.cc |
@@ -19,14 +19,14 @@ |
#if defined(OS_FREEBSD) |
#include <sys/param.h> |
#include <sys/sysctl.h> |
+#elif defined(OS_SOLARIS) |
+#include <stdlib.h> |
#endif |
namespace base { |
#if defined(OS_LINUX) |
const char kSelfExe[] = "/proc/self/exe"; |
-#elif defined(OS_SOLARIS) |
-const char kSelfExe[] = getexecname(); |
#endif |
// The name of this file relative to the source root. This is used for checking |
@@ -58,6 +58,14 @@ bool PathProviderPosix(int key, FilePath* result) { |
bin_dir[strlen(bin_dir)] = 0; |
*result = FilePath(bin_dir); |
return true; |
+#elif defined(OS_SOLARIS) |
+ char bin_dir[PATH_MAX + 1]; |
+ if (realpath(getexecname(), bin_dir) == NULL) { |
+ NOTREACHED() << "Unable to resolve " << getexecname() << "."; |
+ return false; |
+ } |
+ *result = FilePath(bin_dir); |
+ return true; |
#endif |
} |
case base::DIR_SOURCE_ROOT: { |