VirtualBox

Ignore:
Timestamp:
Jul 14, 2011 10:13:59 AM (13 years ago)
Author:
vboxsync
Message:

IPRT: Added RTMsgSetProgName.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/misc/message.cpp

    r28800 r37951  
    3737
    3838
     39/*******************************************************************************
     40*   Global Variables                                                           *
     41*******************************************************************************/
     42/** The program name we're using. */
     43static const char * volatile g_pszProgName = NULL;
     44/** Custom program name set via RTMsgSetProgName. */
     45static char g_szProgName[128];
     46
     47
     48RTDECL(int)  RTMsgSetProgName(const char *pszFormat, ...)
     49{
     50    g_pszProgName = &g_szrtProcExePath[g_offrtProcName];
     51
     52    va_list va;
     53    va_start(va, pszFormat);
     54    RTStrPrintfV(g_szProgName, sizeof(g_szProgName) - 1, pszFormat, va);
     55    va_end(va);
     56
     57    g_pszProgName = g_szProgName;
     58
     59    return VINF_SUCCESS;
     60}
     61RT_EXPORT_SYMBOL(RTMsgSetProgName);
     62
     63
    3964static int rtMsgWorker(PRTSTREAM pDst, const char *pszPrefix, const char *pszFormat, va_list va)
    4065{
     
    4469    else
    4570    {
     71        const char *pszProgName = g_pszProgName;
     72        if (!pszProgName)
     73            g_pszProgName = pszProgName = &g_szrtProcExePath[g_offrtProcName];
     74
    4675        char *pszMsg;
    4776        ssize_t cch = RTStrAPrintfV(&pszMsg, pszFormat, va);
     
    5584                if (!pszEnd)
    5685                {
    57                     RTStrmPrintf(pDst, "%s: %s%s\n", &g_szrtProcExePath[g_offrtProcName], pszPrefix, psz);
     86                    RTStrmPrintf(pDst, "%s: %s%s\n", pszProgName, pszPrefix, psz);
    5887                    break;
    5988                }
     
    6392                {
    6493                    *pszEnd = '\0';
    65                     RTStrmPrintf(pDst, "%s: %s%s\n", &g_szrtProcExePath[g_offrtProcName], pszPrefix, psz);
     94                    RTStrmPrintf(pDst, "%s: %s%s\n", pszProgName, pszPrefix, psz);
    6695                }
    6796                psz = pszEnd + 1;
     
    72101        {
    73102            /* Simple fallback for handling out-of-memory conditions. */
    74             RTStrmPrintf(pDst, "%s: %s", &g_szrtProcExePath[g_offrtProcName], pszPrefix);
     103            RTStrmPrintf(pDst, "%s: %s", pszProgName, pszPrefix);
    75104            RTStrmPrintfV(pDst, pszFormat, va);
    76105            if (!strchr(pszFormat, '\n'))
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