static bool uintFromString()

in source/otaJobParser/job_parser.c [455:504]


static bool uintFromString( const char * string,
                            const uint32_t length,
                            uint32_t * value )
{
    bool ret = false;
    bool overflow = false;
    uint32_t retVal = 0U;
    size_t i;

    if( ( string != NULL ) && ( value != NULL ) )
    {
        for( i = 0U; ( i < length ) && !overflow; i++ )
        {
            char c = string[ i ];

            if( !charIsDigit( c ) )
            {
                break;
            }
            else
            {
                if( !multOverflowUnit32( retVal, 10U ) )
                {
                    retVal *= 10U;

                    if( !addOverflowUint32( retVal, ( ( uint32_t ) c - ( uint32_t ) '0' ) ) )
                    {
                        retVal += ( ( uint32_t ) c - ( uint32_t ) '0' );
                    }
                    else
                    {
                        overflow = true;
                    }
                }
                else
                {
                    overflow = true;
                }
            }
        }

        if( ( length > 0U ) && ( i == length ) )
        {
            *value = retVal;
            ret = true;
        }
    }

    return ret;
}