Beispiel #1
0
int __cdecl _strcmpi(const char * dst, const char * src)
{
        int f,l;
#ifdef _MT
        int local_lock_flag;
#endif  /* _MT */

#if defined (_WIN32)
        if ( __lc_handle[LC_CTYPE] == _CLOCALEHANDLE ) {
#endif  /* defined (_WIN32) */
            do {
                if ( ((f = (unsigned char)(*(dst++))) >= 'A') && (f <= 'Z') )
                    f -= ('A' - 'a');

                if ( ((l = (unsigned char)(*(src++))) >= 'A') && (l <= 'Z') )
                    l -= ('A' - 'a');
            } while ( f && (f == l) );
#if defined (_WIN32)
        }
        else {
            _lock_locale( local_lock_flag )
            do {
                f = _tolower_lk( (unsigned char)(*(dst++)) );
                l = _tolower_lk( (unsigned char)(*(src++)) );
            } while ( f && (f == l) );
            _unlock_locale( local_lock_flag )
        }
#endif  /* defined (_WIN32) */

        return(f - l);
}
int __cdecl _strnicmp (
        const char * first,
        const char * last,
        size_t count
        )
{
        int f,l;
#ifdef _MT
        int local_lock_flag;
#endif  /* _MT */

        if ( count )
        {
#if defined (_WIN32)
            if ( __lc_handle[LC_CTYPE] == _CLOCALEHANDLE ) {
#endif  /* defined (_WIN32) */

                do {
                    if ( ((f = (unsigned char)(*(first++))) >= 'A') &&
                         (f <= 'Z') )
                        f -= 'A' - 'a';

                    if ( ((l = (unsigned char)(*(last++))) >= 'A') &&
                         (l <= 'Z') )
                        l -= 'A' - 'a';

                } while ( --count && f && (f == l) );
#if defined (_WIN32)
            }
            else {
                _lock_locale( local_lock_flag )

                do {
                    f = _tolower_lk( (unsigned char)(*(first++)) );
                    l = _tolower_lk( (unsigned char)(*(last++)) );
                } while (--count && f && (f == l) );

                _unlock_locale( local_lock_flag )
            }
#endif  /* defined (_WIN32) */

            return( f - l );
        }

        return( 0 );
}