utf_tolower(int a)
{
    // If 'casemap' contains "keepascii" use ASCII style tolower().
    if (a < 128 && (cmp_flags & CMP_KEEPASCII))
	return TOLOWER_ASC(a);

#if defined(HAVE_TOWLOWER) && defined(__STDC_ISO_10646__)
    // If towlower() is available and handles Unicode, use it.
    if (!(cmp_flags & CMP_INTERNAL))
	return towlower(a);
#endif

    // For characters below 128 use locale sensitive tolower().
    if (a < 128)
	return TOLOWER_LOC(a);

    // For any other characters use the above mapping table.
    return utf_convert(a, toLower, (int)sizeof(toLower));
}
utf_tolower(int a)
{
     
    if (a < 128 && (cmp_flags & CMP_KEEPASCII))
	return TOLOWER_ASC(a);

#if defined(HAVE_TOWLOWER) && defined(__STDC_ISO_10646__)
     
    if (!(cmp_flags & CMP_INTERNAL))
	return towlower(a);
#endif

     
    if (a < 128)
	return TOLOWER_LOC(a);

     
    return utf_convert(a, toLower, (int)sizeof(toLower));
}