VirtualBox

Changeset 104975 in vbox


Ignore:
Timestamp:
Jun 20, 2024 10:17:11 AM (3 months ago)
Author:
vboxsync
Message:

Runtime/tools/RTTraceLogTool: Allow saving a tracelog received over network to a local file, bugref:10701

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/tools/RTTraceLogTool.cpp

    r104966 r104975  
    4444#include <iprt/assert.h>
    4545#include <iprt/errcore.h>
     46#include <iprt/file.h>
    4647#include <iprt/getopt.h>
    4748#include <iprt/initterm.h>
     
    100101    /** The TCP server. */
    101102    PRTTCPSERVER                pTcpSrv;
     103    /** File to save the read data to. */
     104    RTFILE                      hFile;
    102105} RTTRACELOGTOOLTCP;
    103106/** Pointer to the TCP server/client state. */
     
    116119            RTTcpClientClose(pTrcLogTcp->hSock);
    117120    }
     121    if (pTrcLogTcp->hFile != NIL_RTFILE)
     122    {
     123        RTFileClose(pTrcLogTcp->hFile);
     124        pTrcLogTcp->hFile = NIL_RTFILE;
     125    }
    118126    RTMemFree(pTrcLogTcp);
    119127}
     
    135143    if (RT_SUCCESS(rc))
    136144        rc = RTTcpReadNB(pTrcLogTcp->hSock, pvBuf, cbBuf, pcbRead);
     145
     146    if (   RT_SUCCESS(rc)
     147        && pTrcLogTcp->hFile != NIL_RTFILE)
     148    {
     149        int rc2 = RTFileWrite(pTrcLogTcp->hFile, pvBuf, *pcbRead, NULL);
     150        if (RT_FAILURE(rc2))
     151            RTMsgError("Failed to write received data to save file: %Rrc\n", rc2);
     152    }
    137153
    138154    return rc;
     
    158174static int rtTraceLogToolReaderCreate(PRTTRACELOGRDR phTraceLogRdr, const char *pszInput, const char *pszSave)
    159175{
    160     RT_NOREF(pszSave);
    161 
    162176    /* Try treating the input as a file first. */
    163177    int rc = RTTraceLogRdrCreateFromFile(phTraceLogRdr, pszInput);
     
    196210                if (RT_FAILURE(rc))
    197211                    rtTraceLogTcpDestroy(pTrcLogTcp);
     212
     213                if (pszSave)
     214                {
     215                    rc = RTFileOpen(&pTrcLogTcp->hFile, pszSave, RTFILE_O_CREATE_REPLACE | RTFILE_O_DENY_NONE | RTFILE_O_READWRITE);
     216                    if (RT_FAILURE(rc))
     217                        rtTraceLogTcpDestroy(pTrcLogTcp);
     218                }
    198219            }
    199220            else
Note: See TracChangeset for help on using the changeset viewer.

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