src/lib/common/string.c
/// Compare a portion of two strings
///
/// The strncmp() function compares at most the first \n characters of the two
/// strings \a s1 and \a s2.  It returns an integer less than, equal to, or
/// greater than zero if (the prefix of) \a s1 is found, respectively, to be
/// less than, to match, or be greater than (the prefix of) \a s2.
Compare a portion of two strings
The strncmp() function compares at most the first \n characters of the two
strings \a s1 and \a s2.  It returns an integer less than, equal to, or
greater than zero if (the prefix of) \a s1 is found, respectively, to be
less than, to match, or be greater than (the prefix of) \a s2.
Compare a portion of two strings The strncmp () function compares at most the first \ n characters of the two strings \ a s1 and \ a s2 . It returns an integer less than equal to or greater than zero if ( the prefix of ) \ a s1 is found respectively to be less than to match or be greater than ( the prefix of ) \ a s2 .
int 
strncmp(const char* s1, const char* s2, size_t n)
{
    int rc;
    if ((s1 == s2) || (n == 0)) {
        rc = 0;
    } else {
        while(*s1 && (*s1 == *s2) && n--) {
            s1++; 
            s2++;
        }
        rc = *((unsigned char *)s1) - *((unsigned char *)s2);
    }
    return rc;
}
int strncmp ( const char * s1 , const char * s2 , size_t n ) { int rc ; if ( ( s1 == s2 ) || ( n == 0 ) ) { rc = 0 ; } else { while ( * s1 && ( * s1 == * s2 ) && n -- ) { s1 ++ ; s2 ++ ; } rc = * ( ( unsigned char * ) s1 ) - * ( ( unsigned char * ) s2 ) ; } return rc ; }
Compare a portion of two strings
The strncmp() function compares at most the first \n characters of the two
strings \a s1 and \a s2.
Compare a portion of two strings The strncmp () function compares at most the first \ n characters of the two strings \ a s1 and \ a s2 .