VirtualBox

Ignore:
Timestamp:
Mar 30, 2017 1:44:39 PM (8 years ago)
Author:
vboxsync
Message:

IPRT: Adding RTStrICmpAscii (mirrors RTUtf16ICmpAscii).

File:
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/string/RTStrICmpAscii.cpp

    r66348 r66361  
    3636
    3737
    38 RTDECL(int) RTUtf16ICmpAscii(PCRTUTF16 pwsz1, const char *psz2)
     38RTDECL(int) RTStrICmpAscii(const char *psz1, const char *psz2)
    3939{
     40    if (psz1 == psz2)
     41        return 0;
     42    if (!psz1)
     43        return -1;
     44    if (!psz2)
     45        return 1;
     46
    4047    for (;;)
    4148    {
    42         RTUTF16         wc1  = *pwsz1++;
    43         unsigned char   uch2 = *psz2++; Assert(uch2 < 0x80);
    44         if (wc1 != uch2)
     49        RTUNICP uc1;
     50        int rc = RTStrGetCpEx(&psz1, &uc1);
     51        if (RT_SUCCESS(rc))
    4552        {
    46             if (wc1 >= 0x80)
    47                 return 1;
    48             if (RT_C_TO_LOWER(wc1) != RT_C_TO_LOWER(uch2))
    49                 return wc1 < uch2 ? -1 : 1;
     53            unsigned char uch2 = *psz2++; Assert(uch2 < 0x80);
     54
     55            /* compare */
     56            int iDiff = uc1 - uch2;
     57            if (iDiff)
     58            {
     59                if (uc1 >= 0x80)
     60                    return 1;
     61
     62                iDiff = RT_C_TO_LOWER(uc1) - RT_C_TO_LOWER(uch2); /* Return lower cased diff! */
     63                if (iDiff)
     64                    return iDiff;
     65            }
     66
     67            if (uch2)
     68            { /* likely */ }
     69            else
     70                return 0;
    5071        }
    51         if (!uch2)
    52             return 0;
     72        /* Hit some bad encoding, continue in case sensitive mode. */
     73        else
     74            return RTStrCmp(psz1 - 1, psz2);
    5375    }
    5476}
    55 RT_EXPORT_SYMBOL(RTUtf16ICmpAscii);
     77RT_EXPORT_SYMBOL(RTStrICmpAscii);
    5678
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