]> arthur.barton.de Git - netatalk.git/blobdiff - libatalk/util/strdicasecmp.c
fix: basedir regex symlink problem
[netatalk.git] / libatalk / util / strdicasecmp.c
index c3f6d2f488af6365ceb2b54dc954c24f74af3674..ff7c0772c6a804654db836ddf4c783d91fc47020 100644 (file)
@@ -4,7 +4,7 @@
 
 #include <atalk/util.h>
 
-unsigned const char    _diacasemap[] = {
+const int      _diacasemap[] = {
        /* map  value   name */
        0       /* 0    NUL*/,
        1       /* 1    SOH*/,
@@ -264,7 +264,7 @@ unsigned const char _diacasemap[] = {
        255     /* 255  caron*/,
 };
 
-unsigned const char    _dialowermap[] = {
+const int      _dialowermap[] = {
        /* map  value   name */
        0       /* 0    NUL*/,
        1       /* 1    SOH*/,
@@ -524,25 +524,31 @@ unsigned const char       _dialowermap[] = {
        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 ];
 }