+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include <atalk/util.h>
-unsigned const char _diacasemap[] = {
+const int _diacasemap[] = {
/* map value name */
0 /* 0 NUL*/,
1 /* 1 SOH*/,
255 /* 255 caron*/,
};
-unsigned const char _dialowermap[] = {
+const int _dialowermap[] = {
/* map value name */
0 /* 0 NUL*/,
1 /* 1 SOH*/,
255 /* 255 caron*/,
};
-int strdiacasecmp( s1, s2 )
- const unsigned char *s1, *s2;
+int strdiacasecmp( const char *s1, const char *s2 )
{
- while ( _diacasemap[ *s1 ] == _diacasemap[ *s2++ ] ) {
+ while ( _diacasemap[ (unsigned char) *s1 ] ==
+ _diacasemap[ (unsigned char) *s2++ ] ) {
if ( *s1++ == '\0' ) {
return( 0 );
}
}
- return( _diacasemap[ *s1 ] - _diacasemap[ *--s2 ] );
+ return( _diacasemap[ (unsigned char) *s1 ] -
+ _diacasemap[ (unsigned char) *--s2 ] );
}
-int strndiacasecmp( s1, s2, n )
- const unsigned char *s1, *s2;
- int n;
+int strndiacasecmp( const char *s1, const char *s2, size_t n )
{
- while ( --n >= 0 && _diacasemap[ *s1 ] == _diacasemap[ *s2++ ] ) {
+ while ( n > 0 &&
+ _diacasemap[ (unsigned char) *s1 ] ==
+ _diacasemap[ (unsigned char) *s2++ ] ) {
if ( *s1++ == '\0' ) {
return( 0 );
}
+ n--;
}
- return( n < 0 ? 0 : _diacasemap[ *s1 ] - _diacasemap[ *--s2 ] );
+
+ if (n == 0)
+ return 0;
+ return _diacasemap[ (unsigned char) *s1 ] -
+ _diacasemap[ (unsigned char) *--s2 ];
}