diff --git a/common.c b/common.c index 8768f8e0c..baccb406a 100644 --- a/common.c +++ b/common.c @@ -602,6 +602,26 @@ int wcscasecmp( const wchar_t *a, const wchar_t *b ) return wcscasecmp( a+1,b+1); } +int wcsncasecmp( const wchar_t *a, const wchar_t *b, int count ) +{ + if( count == 0 ) + return 0; + + if( *a == 0 ) + { + return (*b==0)?0:-1; + } + else if( *b == 0 ) + { + return 1; + } + int diff = towlower(*a)-towlower(*b); + if( diff != 0 ) + return diff; + else + return wcsncasecmp( a+1,b+1, count-1); +} + int wcsvarname( wchar_t *str ) { while( *str ) diff --git a/input.c b/input.c index ea8ddff67..888d38f13 100644 --- a/input.c +++ b/input.c @@ -489,7 +489,7 @@ static wchar_t *input_symbolic_sequence( const wchar_t *in ) for( i=0; map[i].in; i++ ) { - if( wcsncmp( in, map[i].in, wcslen(map[i].in) )==0 ) + if( wcsncasecmp( in, map[i].in, wcslen(map[i].in) )==0 ) { in+= wcslen( map[i].in ); res = str2wcs( map[i].out );