diff options
Diffstat (limited to 'emulators/virtualbox-ose-legacy/files/patch-src-VBox-Runtime-r3-freebsd-rtProcInitExePath-freebsd.cpp')
-rw-r--r-- | emulators/virtualbox-ose-legacy/files/patch-src-VBox-Runtime-r3-freebsd-rtProcInitExePath-freebsd.cpp | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/emulators/virtualbox-ose-legacy/files/patch-src-VBox-Runtime-r3-freebsd-rtProcInitExePath-freebsd.cpp b/emulators/virtualbox-ose-legacy/files/patch-src-VBox-Runtime-r3-freebsd-rtProcInitExePath-freebsd.cpp deleted file mode 100644 index 2332212ead14..000000000000 --- a/emulators/virtualbox-ose-legacy/files/patch-src-VBox-Runtime-r3-freebsd-rtProcInitExePath-freebsd.cpp +++ /dev/null @@ -1,81 +0,0 @@ ---- src/VBox/Runtime/r3/freebsd/rtProcInitExePath-freebsd.cpp (revision 25471) -+++ src/VBox/Runtime/r3/freebsd/rtProcInitExePath-freebsd.cpp (revision 25472) -@@ -32,6 +32,8 @@ - * Header Files * - *******************************************************************************/ - #define LOG_GROUP RTLOGGROUP_PROCESS -+#include <sys/param.h> -+#include <sys/sysctl.h> - #include <unistd.h> - #include <errno.h> - #include <dlfcn.h> -@@ -47,17 +49,20 @@ - - DECLHIDDEN(int) rtProcInitExePath(char *pszPath, size_t cchPath) - { -- /* -- * Read the /proc/curproc/file link, convert to native and return it. -- */ -- int cchLink = readlink("/proc/curproc/file", pszPath, cchPath - 1); -- if (cchLink > 0 && (size_t)cchLink <= cchPath - 1) -- { -- pszPath[cchLink] = '\0'; -+ int aiName[4]; -+ size_t cchExePath; - -+ aiName[0] = CTL_KERN; -+ aiName[1] = KERN_PROC; -+ aiName[2] = KERN_PROC_PATHNAME; -+ aiName[3] = getpid(); -+ -+ cchExePath = cchPath - 1; -+ if(sysctl(aiName, RT_ELEMENTS(aiName), pszPath, &cchExePath, NULL, 0) == 0) -+ { - char *pszTmp = NULL; - int rc = rtPathFromNative(&pszTmp, pszPath); -- AssertMsgRCReturn(rc, ("rc=%Rrc pszLink=\"%s\"\nhex: %.*Rhsx\n", rc, pszPath, cchLink, pszPath), rc); -+ AssertMsgRCReturn(rc, ("rc=%Rrc pszLink=\"%s\"\nhex: %.*Rhsx\n", rc, pszPath, cchExePath, pszPath), rc); - - size_t cch = strlen(pszTmp); - AssertReturn(cch <= cchPath, VERR_BUFFER_OVERFLOW); -@@ -68,39 +73,8 @@ - return VINF_SUCCESS; - } - -- int err = errno; -- -- /* -- * Fall back on the dynamic linker since /proc is optional. -- */ -- void *hExe = dlopen(NULL, 0); -- if (hExe) -- { -- struct link_map const *pLinkMap = 0; -- if (dlinfo(hExe, RTLD_DI_LINKMAP, &pLinkMap) == 0) -- { -- const char *pszImageName = pLinkMap->l_name; -- if (*pszImageName == '/') /* this may not always be absolute, despite the docs. :-( */ -- { -- char *pszTmp = NULL; -- int rc = rtPathFromNative(&pszTmp, pszImageName); -- AssertMsgRCReturn(rc, ("rc=%Rrc pszImageName=\"%s\"\n", rc, pszImageName), rc); -- -- size_t cch = strlen(pszTmp); -- AssertReturn(cch <= cchPath, VERR_BUFFER_OVERFLOW); -- -- memcpy(pszPath, pszTmp, cch + 1); -- RTStrFree(pszTmp); -- -- return VINF_SUCCESS; -- } -- /** @todo Try search the PATH for the file name or append the current -- * directory, which ever makes sense... */ -- } -- } -- -- int rc = RTErrConvertFromErrno(err); -- AssertMsgFailed(("rc=%Rrc err=%d cchLink=%d hExe=%p\n", rc, err, cchLink, hExe)); -+ int rc = RTErrConvertFromErrno(errno); -+ AssertMsgFailed(("rc=%Rrc errno=%d cchLink=%d\n", rc, errno, cchExePath)); - return rc; - } |