/**
* @file strcasecmp.c
*
*
* @brief strcasecmp の定義
*
* strcasecmp() の互換関数です.strcasecmp() が実装されていない環境で
* 代わりに使用されます.
*
*
*
* @brief Definition of strcasecmp
*
* This function is fully compatible with strcasecmp(). This will be used
* if system does not support strcasecmp().
*
*
* @author Akinobu LEE
* @date Thu Feb 17 17:02:09 2005
*
* $Revision: 1.4 $
*
*/
/*
* Copyright (c) 1991-2012 Kawahara Lab., Kyoto University
* Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology
* Copyright (c) 2005-2012 Julius project team, Nagoya Institute of Technology
* All rights reserved
*/
#include
#ifndef HAVE_STRCASECMP
/**
* Compare two strings, ignoring case.
*
* @param s1 [in] string 1
* @param s2 [in] string 2
*
* @return -1 if s1 < s2, 0 if s1 == s2, 1 if s1 > s2.
*/
int
strcasecmp(char *s1, char *s2)
{
int c1, c2;
do {
c1 = (*s1 >= 'a' && *s1 <= 'z') ? *s1 - 040 : *s1;
c2 = (*s2 >= 'a' && *s2 <= 'z') ? *s2 - 040 : *s2;
if (c1 != c2) break;
} while (*(s1++) && *(s2++));
return(c1 - c2);
}
/**
* Compare two strings, ignoring case, at most first @a n bytes.
*
* @param s1 [in] string 1
* @param s2 [in] string 2
* @param n [in] maximum length to compare.
*
* @return -1 if s1 < s2, 0 if s1 == s2, 1 if s1 > s2.
*/
int
strncasecmp(char *s1, char *s2, size_t n)
{
int c1, c2;
do {
c1 = (*s1 >= 'a' && *s1 <= 'z') ? *s1 - 040 : *s1;
c2 = (*s2 >= 'a' && *s2 <= 'z') ? *s2 - 040 : *s2;
if (c1 != c2) break;
} while (*(s1++) && *(s2++) && (--n));
return(c1 - c2);
}
#endif /* ~HAVE_STRCASECMP */