From 473a196855d29ab0300b1983820ceb72dddd1f71 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Sun, 15 May 2011 12:00:10 +0100 Subject: [PATCH] Get the process name correctly on MacOSX. --- os_posix.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) 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, '/'); -- 2.45.2