VirtualBox

Ignore:
Timestamp:
Feb 11, 2016 1:10:28 PM (9 years ago)
Author:
vboxsync
Message:

BugReportTool(bugref:8169): Meaningful error messages, fallback to home dir if no write access, print where the output went

Location:
trunk/src/VBox/Frontends/VBoxBugReport
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VBoxBugReport/VBoxBugReport.cpp

    r59628 r59637  
    556556            hr = virtualBox.createLocalObject(CLSID_VirtualBox);
    557557            if (FAILED(hr))
    558                 RTStrmPrintf(g_pStdErr, "WARNING: failed to create the VirtualBox object (hr=0x%x)\n", hr);
     558                RTStrmPrintf(g_pStdErr, "WARNING: Failed to create the VirtualBox object (hr=0x%x)\n", hr);
    559559            else
    560560            {
    561561                hr = session.createInprocObject(CLSID_Session);
    562562                if (FAILED(hr))
    563                     RTStrmPrintf(g_pStdErr, "WARNING: failed to create a session object (hr=0x%x)\n", hr);
     563                    RTStrmPrintf(g_pStdErr, "WARNING: Failed to create a session object (hr=0x%x)\n", hr);
    564564            }
    565565
     
    601601                                Time.u8Hour, Time.u8Minute, Time.u8Second,
    602602                                fTextOutput ? "txt" : "tgz");
     603        RTCString strFallbackOutFile;
    603604        if (!pszOutputFile)
     605        {
     606            RTFILE tmp;
    604607            pszOutputFile = strOutFile.c_str();
     608            int rc = RTFileOpen(&tmp, pszOutputFile, RTFILE_O_WRITE | RTFILE_O_CREATE | RTFILE_O_DENY_WRITE);
     609            if (rc == VERR_ACCESS_DENIED)
     610            {
     611                char szUserHome[RTPATH_MAX];
     612                handleRtError(RTPathUserHome(szUserHome, sizeof(szUserHome)), "Failed to obtain home directory");
     613                strFallbackOutFile.printf("%s/%s", szUserHome, strOutFile.c_str());
     614                pszOutputFile = strFallbackOutFile.c_str();
     615            }
     616            else if (RT_SUCCESS(rc))
     617            {
     618                RTFileClose(tmp);
     619                RTFileDelete(pszOutputFile);
     620            }
     621        }
    605622        BugReport *pReport;
    606623        if (fTextOutput)
     
    610627        createBugReport(pReport, homeDir, list);
    611628        pReport->complete();
     629        RTPrintf("Report was written to '%s'\n", pszOutputFile);
    612630        delete pReport;
    613631    }
  • trunk/src/VBox/Frontends/VBoxBugReport/VBoxBugReport.h

    r59570 r59637  
    5252        RTCString msgArgs(pszMsgFmt, va);
    5353        va_end(va);
    54         RTCStringFmt msg("%s (rc=%d)\n", msgArgs.c_str(), rc);
     54        RTCStringFmt msg("%s. %s (%d)\n", msgArgs.c_str(), RTErrGetFull(rc), rc);
    5555        throw RTCError(msg.c_str());
    5656    }
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