int IoTHubClient_FwVersionCompare()

in AZ3166/src/libraries/AzureIoT/src/DevKitOTAUtils.cpp [30:60]


int IoTHubClient_FwVersionCompare(const char* fwVersion1, const char* fwVersion2)
{
    if (fwVersion1 == NULL || fwVersion2 == NULL)
    {
        if (fwVersion1 == fwVersion2) return 0;
        return (fwVersion1 ? 1 : -1);
    }
    int vnum1 = 0, vnum2 = 0;
    size_t ver1Len = strlen(fwVersion1), ver2Len = strlen(fwVersion2);
    for (int i = 0, j = 0; (i < (int)ver1Len || j < (int)ver2Len); ++i, ++j)
    {
        while (i < (int)ver1Len && fwVersion1[i] != '.')
        {
            if (isdigit(fwVersion1[i]))
                vnum1 = vnum1 * 10 + (fwVersion1[i] - '0');
            i++;
        }
        while (j < (int)ver2Len && fwVersion2[j] != '.')
        {
            if (isdigit(fwVersion2[j]))
                vnum2 = vnum2 * 10 + (fwVersion2[j] - '0');
            j++;
        }
        if (vnum1 > vnum2)
            return 1;
        if (vnum2 > vnum1)
            return -1;
        vnum1 = vnum2 = 0;
    }
    return 0;
}