diff options
author | Dan Barry <dan@bakineggs.com> | 2015-06-02 17:00:40 -0700 |
---|---|---|
committer | Dan Barry <dan@bakineggs.com> | 2015-06-02 17:11:35 -0700 |
commit | 0af3ed5189182985573dbea30e173aca0f9a1685 (patch) | |
tree | 70c2dd0b0217df1542c41c7f285f078bed36aeba /src | |
parent | 4644f99d1af4250dec95339be6a13e149787ab33 (diff) | |
download | protobuf-0af3ed5189182985573dbea30e173aca0f9a1685.tar.gz protobuf-0af3ed5189182985573dbea30e173aca0f9a1685.tar.bz2 protobuf-0af3ed5189182985573dbea30e173aca0f9a1685.zip |
Add protoc path detection for Mac OS
Diffstat (limited to 'src')
-rw-r--r-- | src/google/protobuf/compiler/command_line_interface.cc | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/google/protobuf/compiler/command_line_interface.cc b/src/google/protobuf/compiler/command_line_interface.cc index 667b2b63..c57cfd3d 100644 --- a/src/google/protobuf/compiler/command_line_interface.cc +++ b/src/google/protobuf/compiler/command_line_interface.cc @@ -53,6 +53,10 @@ #include <google/protobuf/stubs/shared_ptr.h> #endif +#ifdef __APPLE__ +#include <mach-o/dyld.h> +#endif + #include <google/protobuf/stubs/common.h> #include <google/protobuf/stubs/stringprintf.h> #include <google/protobuf/compiler/importer.h> @@ -186,6 +190,16 @@ bool GetProtocAbsolutePath(string* path) { #ifdef _WIN32 char buffer[MAX_PATH]; int len = GetModuleFileName(NULL, buffer, MAX_PATH); +#elif __APPLE__ + char buffer[PATH_MAX]; + int len = 0; + + char dirtybuffer[PATH_MAX]; + uint32_t size = sizeof(dirtybuffer); + if (_NSGetExecutablePath(dirtybuffer, &size) == 0) { + realpath(dirtybuffer, buffer); + len = strlen(buffer); + } #else char buffer[PATH_MAX]; int len = readlink("/proc/self/exe", buffer, PATH_MAX); |