Changeset 83400 in vbox for trunk/src/VBox/Additions/common/VBoxService
- Timestamp:
- Mar 25, 2020 9:31:22 AM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 136617
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/common/VBoxService/VBoxServiceControlProcess.cpp
r83399 r83400 32 32 #include <iprt/process.h> 33 33 #include <iprt/semaphore.h> 34 #include <iprt/string.h> 34 35 #include <iprt/string.h> 35 36 #include <iprt/thread.h> … … 1418 1419 1419 1420 #ifdef DEBUG 1420 static int vgsvcGstCtrlProcessDumpToFile(const char *pszFileName, void *pvBuf, size_t cbBuf) 1421 { 1422 AssertPtrReturn(pszFileName, VERR_INVALID_POINTER); 1421 /** 1422 * Dumps content to a file in the OS temporary directory. 1423 * 1424 * @returns VBox status code. 1425 * @param pvBuf Buffer of content to dump. 1426 * @param cbBuf Size (in bytes) of content to dump. 1427 * @param pszFileNmFmt Pointer to the file name format string, @see pg_rt_str_format. 1428 * @param ... The format argument. 1429 */ 1430 static int vgsvcGstCtrlProcessDbgDumpToFileF(const void *pvBuf, size_t cbBuf, const char *pszFileNmFmt, ...) 1431 { 1432 AssertPtrReturn(pszFileNmFmt, VERR_INVALID_POINTER); 1423 1433 AssertPtrReturn(pvBuf, VERR_INVALID_POINTER); 1424 1434 … … 1426 1436 return VINF_SUCCESS; 1427 1437 1428 char szFile[RTPATH_MAX]; 1429 1430 int rc = RTPathTemp(szFile, sizeof(szFile)); 1438 va_list va; 1439 va_start(va, pszFileNmFmt); 1440 1441 char *pszFileName = NULL; 1442 const int cchFileName = RTStrAPrintfV(&pszFileName, pszFileNmFmt, va); 1443 1444 va_end(va); 1445 1446 if (!cchFileName) 1447 return VERR_NO_MEMORY; 1448 1449 char szPathFileAbs[RTPATH_MAX]; 1450 int rc = RTPathTemp(szPathFileAbs, sizeof(szPathFileAbs)); 1431 1451 if (RT_SUCCESS(rc)) 1432 rc = RTPathAppend(szFile, sizeof(szFile), pszFileName); 1452 rc = RTPathAppend(szPathFileAbs, sizeof(szPathFileAbs), pszFileName); 1453 1454 RTStrFree(pszFileName); 1433 1455 1434 1456 if (RT_SUCCESS(rc)) 1435 1457 { 1436 VGSvcVerbose(4, "Dumping % ld bytes to '%s'\n", cbBuf, szFile);1458 VGSvcVerbose(4, "Dumping %zu bytes to '%s'\n", cbBuf, szPathFileAbs); 1437 1459 1438 1460 RTFILE fh; 1439 rc = RTFileOpen(&fh, sz File, RTFILE_O_OPEN_CREATE | RTFILE_O_WRITE | RTFILE_O_DENY_WRITE);1461 rc = RTFileOpen(&fh, szPathFileAbs, RTFILE_O_OPEN_CREATE | RTFILE_O_WRITE | RTFILE_O_DENY_WRITE); 1440 1462 if (RT_SUCCESS(rc)) 1441 1463 { … … 1923 1945 ) 1924 1946 { 1925 /** @todo r=bird: vgsvcGstCtrlProcessDumpToFile(void *pvBuf, size_t cbBuf, const char *pszFileNmFmt, ...) */ 1926 char szDumpFile[RTPATH_MAX]; 1927 if (!RTStrPrintf(szDumpFile, sizeof(szDumpFile), "VBoxService_Session%RU32_PID%RU32_StdOut.txt", 1928 pSession->StartupInfo.uSessionID, pThis->uPID)) rc = VERR_BUFFER_UNDERFLOW; 1929 if (RT_SUCCESS(rc)) 1930 rc = vgsvcGstCtrlProcessDumpToFile(szDumpFile, pvBuf, cbRead); 1947 rc = vgsvcGstCtrlProcessDbgDumpToFileF(pvBuf, cbRead, "VBoxService_Session%RU32_PID%RU32_StdOut.txt", 1948 pSession->StartupInfo.uSessionID, pThis->uPID); 1931 1949 AssertRC(rc); 1932 1950 } … … 1934 1952 && uHandle == OUTPUT_HANDLE_ID_STDERR) 1935 1953 { 1936 char szDumpFile[RTPATH_MAX]; 1937 if (!RTStrPrintf(szDumpFile, sizeof(szDumpFile), "VBoxService_Session%RU32_PID%RU32_StdErr.txt", 1938 pSession->StartupInfo.uSessionID, pThis->uPID)) 1939 rc = VERR_BUFFER_UNDERFLOW; 1940 if (RT_SUCCESS(rc)) 1941 rc = vgsvcGstCtrlProcessDumpToFile(szDumpFile, pvBuf, cbRead); 1954 rc = vgsvcGstCtrlProcessDbgDumpToFileF(pvBuf, cbRead, "VBoxService_Session%RU32_PID%RU32_StdErr.txt", 1955 pSession->StartupInfo.uSessionID, pThis->uPID); 1942 1956 AssertRC(rc); 1943 1957 }
Note:
See TracChangeset
for help on using the changeset viewer.