diff options
author | Beat Gaetzi <beat@FreeBSD.org> | 2010-01-13 08:03:17 +0000 |
---|---|---|
committer | Beat Gaetzi <beat@FreeBSD.org> | 2010-01-13 08:03:17 +0000 |
commit | 078a3145868546becb1f18ad4ff3f84b346ab7ae (patch) | |
tree | 4bc52f53b8d0d76da7646866e5ecebe1d952923d /emulators/virtualbox-ose-legacy/files/patch-src-VBox-Runtime-VBox-log-vbox.cpp | |
parent | 0f40e9df5c9d2e5efbc873c2599b2d2a9d74715b (diff) |
Notes
Diffstat (limited to 'emulators/virtualbox-ose-legacy/files/patch-src-VBox-Runtime-VBox-log-vbox.cpp')
-rw-r--r-- | emulators/virtualbox-ose-legacy/files/patch-src-VBox-Runtime-VBox-log-vbox.cpp | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/emulators/virtualbox-ose-legacy/files/patch-src-VBox-Runtime-VBox-log-vbox.cpp b/emulators/virtualbox-ose-legacy/files/patch-src-VBox-Runtime-VBox-log-vbox.cpp new file mode 100644 index 000000000000..005a25e4a79a --- /dev/null +++ b/emulators/virtualbox-ose-legacy/files/patch-src-VBox-Runtime-VBox-log-vbox.cpp @@ -0,0 +1,82 @@ +--- src/VBox/Runtime/VBox/log-vbox.cpp (revision 25471) ++++ src/VBox/Runtime/VBox/log-vbox.cpp (revision 25472) +@@ -135,6 +135,12 @@ + # include <Windows.h> + # elif defined(RT_OS_LINUX) + # include <unistd.h> ++# elif defined(RT_OS_FREEBSD) ++# include <sys/param.h> ++# include <sys/sysctl.h> ++# include <sys/user.h> ++# include <stdlib.h> ++# include <unistd.h> + # elif defined(RT_OS_SOLARIS) + # define _STRUCTURED_PROC 1 + # undef _FILE_OFFSET_BITS /* procfs doesn't like this */ +@@ -157,6 +163,7 @@ + # include <iprt/path.h> + # include <iprt/process.h> + # include <iprt/string.h> ++# include <iprt/mem.h> + # include <stdio.h> + #endif + +@@ -339,12 +346,8 @@ + fclose(pFile); + } + +-# elif defined(RT_OS_LINUX) || defined(RT_OS_FREEBSD) +-# ifdef RT_OS_LINUX ++# elif defined(RT_OS_LINUX) + FILE *pFile = fopen("/proc/self/cmdline", "r"); +-# else /* RT_OS_FREEBSD: */ +- FILE *pFile = fopen("/proc/curproc/cmdline", "r"); +-# endif + if (pFile) + { + /* braindead */ +@@ -370,7 +373,44 @@ + RTLogLoggerEx(pLogger, 0, ~0U, "\n"); + fclose(pFile); + } ++# elif defined(RT_OS_FREEBSD) ++ char *pszArgFileBuf = NULL; ++ int aiName[4]; ++ size_t cchArgs; + ++ aiName[0] = CTL_KERN; ++ aiName[1] = KERN_PROC; ++ aiName[2] = KERN_PROC_ARGS; ++ aiName[3] = -1; ++ ++ /* Retrieve the required length first */ ++ cchArgs = 0; ++ int rcBSD = sysctl(aiName, RT_ELEMENTS(aiName), NULL, &cchArgs, NULL, 0); ++ ++ if (cchArgs > 0) ++ { ++ pszArgFileBuf = (char *)RTMemAllocZ(cchArgs + 1 /* Safety */); ++ if (pszArgFileBuf) ++ { ++ /* Retrieve the argument list */ ++ rcBSD = sysctl(aiName, RT_ELEMENTS(aiName), pszArgFileBuf, &cchArgs, NULL, 0); ++ if (!rcBSD) ++ { ++ /* ++ * cmdline is a flattened argument list so we need ++ * to convert all \0 to blanks ++ */ ++ for(size_t i = 0; i < cchArgs - 1; i++) ++ { ++ if(pszArgFileBuf[i] == '\0') ++ pszArgFileBuf[i] = ' '; ++ } ++ ++ RTLogLoggerEx(pLogger, 0, ~0U, "Commandline: %s\n", pszArgFileBuf); ++ } ++ RTMemFree(pszArgFileBuf); ++ } ++ } + # elif defined(RT_OS_L4) || defined(RT_OS_OS2) || defined(RT_OS_DARWIN) + /* commandline? */ + # else |