VirtualBox

Ignore:
Timestamp:
Mar 25, 2020 9:31:22 AM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
136617
Message:

Guest Control/VBoxService: Resolved another @todo: Revamped vgsvcGstCtrlProcessDumpToFile() and renamed it to vgsvcGstCtrlProcessDbgDumpToFileF(). bugref:9320

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceControlProcess.cpp

    r83399 r83400  
    3232#include <iprt/process.h>
    3333#include <iprt/semaphore.h>
     34#include <iprt/string.h>
    3435#include <iprt/string.h>
    3536#include <iprt/thread.h>
     
    14181419
    14191420#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 */
     1430static int vgsvcGstCtrlProcessDbgDumpToFileF(const void *pvBuf, size_t cbBuf, const char *pszFileNmFmt, ...)
     1431{
     1432    AssertPtrReturn(pszFileNmFmt, VERR_INVALID_POINTER);
    14231433    AssertPtrReturn(pvBuf, VERR_INVALID_POINTER);
    14241434
     
    14261436        return VINF_SUCCESS;
    14271437
    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));
    14311451    if (RT_SUCCESS(rc))
    1432         rc = RTPathAppend(szFile, sizeof(szFile), pszFileName);
     1452        rc = RTPathAppend(szPathFileAbs, sizeof(szPathFileAbs), pszFileName);
     1453
     1454    RTStrFree(pszFileName);
    14331455
    14341456    if (RT_SUCCESS(rc))
    14351457    {
    1436         VGSvcVerbose(4, "Dumping %ld bytes to '%s'\n", cbBuf, szFile);
     1458        VGSvcVerbose(4, "Dumping %zu bytes to '%s'\n", cbBuf, szPathFileAbs);
    14371459
    14381460        RTFILE fh;
    1439         rc = RTFileOpen(&fh, szFile, 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);
    14401462        if (RT_SUCCESS(rc))
    14411463        {
     
    19231945               )
    19241946            {
    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);
    19311949                AssertRC(rc);
    19321950            }
     
    19341952                     && uHandle == OUTPUT_HANDLE_ID_STDERR)
    19351953            {
    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);
    19421956                AssertRC(rc);
    19431957            }
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette