From: José Fonseca Date: Sun, 15 May 2011 11:00:10 +0000 (+0100) Subject: Get the process name correctly on MacOSX. X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=473a196855d29ab0300b1983820ceb72dddd1f71;p=apitrace Get the process name correctly on MacOSX. --- diff --git a/os_posix.cpp b/os_posix.cpp index 4c16096..ff320d0 100644 --- a/os_posix.cpp +++ b/os_posix.cpp @@ -1,6 +1,6 @@ /************************************************************************** * - * Copyright 2010 VMware, Inc. + * Copyright 2010-2011 VMware, Inc. * All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a copy @@ -23,6 +23,7 @@ * **************************************************************************/ + #include #include #include @@ -31,8 +32,13 @@ #include #include +#ifdef __APPLE__ +#include +#endif + #include "os.hpp" + namespace OS { @@ -57,16 +63,24 @@ ReleaseMutex(void) bool GetProcessName(char *str, size_t size) { - ssize_t len; char szProcessPath[PATH_MAX + 1]; char *lpProcessName; // http://stackoverflow.com/questions/1023306/finding-current-executables-path-without-proc-self-exe +#ifdef __APPLE__ + uint32_t len = sizeof szProcessPath; + if (_NSGetExecutablePath(szProcessPath, &len) != 0) { + *str = 0; + return false; + } +#else + ssize_t len; len = readlink("/proc/self/exe", szProcessPath, sizeof(szProcessPath) - 1); if (len == -1) { *str = 0; return false; } +#endif szProcessPath[len] = 0; lpProcessName = strrchr(szProcessPath, '/');