/**
 * Get the message corresponding to a given status code.
 *
 * @returns Pointer to read-only message description.
 * @param   rc      The status code.
 */
RTDECL(PCRTSTATUSMSG) RTErrGet(int rc)
{
    unsigned iFound = ~0;
    unsigned i;
    for (i = 0; i < RT_ELEMENTS(g_aStatusMsgs) - 1; i++)
    {
        if (g_aStatusMsgs[i].iCode == rc)
        {
            /*
             * Found a match.
             * Since this isn't a unique key, we must check that it's not
             * one of those start/end #defines before we return.
             */
#define STR_ENDS_WITH(a_psz, a_cch, a_sz) \
    ( (a_cch) >= sizeof(a_sz) && !strncmp((a_psz) + (a_cch) - sizeof(a_sz) + 1, RT_STR_TUPLE(a_sz)) )
            size_t const cchDefine = strlen(g_aStatusMsgs[i].pszDefine);
            if (   !STR_ENDS_WITH(g_aStatusMsgs[i].pszDefine, cchDefine, "_FIRST")
                && !STR_ENDS_WITH(g_aStatusMsgs[i].pszDefine, cchDefine, "_LAST")
                && !STR_ENDS_WITH(g_aStatusMsgs[i].pszDefine, cchDefine, "_LOWEST")
                && !STR_ENDS_WITH(g_aStatusMsgs[i].pszDefine, cchDefine, "_HIGHEST")
               )
                return &g_aStatusMsgs[i];
            iFound = i;
        }
    }
    if (iFound != ~0U)
        return &g_aStatusMsgs[iFound];

    /*
     * Need to use the temporary stuff.
     */
    int iMsg = ASMAtomicXchgU32(&g_iUnknownMsgs, (g_iUnknownMsgs + 1) % RT_ELEMENTS(g_aUnknownMsgs));
    RTStrPrintf(&g_aszUnknownStr[iMsg][0], sizeof(g_aszUnknownStr[iMsg]), "Unknown Status %d (%#x)", rc, rc);
    return &g_aUnknownMsgs[iMsg];
}
static bool strIsPermissibleDuplicate(const RTSTATUSMSG *pMsg)
{
    const char *pszDefine = pMsg->pszDefine;
    size_t      cchDefine = strlen(pszDefine);

#define STR_ENDS_WITH(a_psz, a_cch, a_sz) \
    ( (a_cch) >= sizeof(a_sz) && !strncmp((a_psz) + (a_cch) - sizeof(a_sz) + 1, RT_STR_TUPLE(a_sz)) )

    return  STR_ENDS_WITH(pszDefine, cchDefine, "_FIRST")
         || STR_ENDS_WITH(pszDefine, cchDefine, "_LAST")
         || STR_ENDS_WITH(pszDefine, cchDefine, "_LOWEST")
         || STR_ENDS_WITH(pszDefine, cchDefine, "_HIGHEST")
         || strstr(pMsg->pszMsgShort, "(mapped to") != 0;
}