17db96d56Sopenharmony_ci/* Cross platform case insensitive string compare functions 27db96d56Sopenharmony_ci */ 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ci#include "Python.h" 57db96d56Sopenharmony_ci 67db96d56Sopenharmony_ciint 77db96d56Sopenharmony_ciPyOS_mystrnicmp(const char *s1, const char *s2, Py_ssize_t size) 87db96d56Sopenharmony_ci{ 97db96d56Sopenharmony_ci const unsigned char *p1, *p2; 107db96d56Sopenharmony_ci if (size == 0) 117db96d56Sopenharmony_ci return 0; 127db96d56Sopenharmony_ci p1 = (const unsigned char *)s1; 137db96d56Sopenharmony_ci p2 = (const unsigned char *)s2; 147db96d56Sopenharmony_ci for (; (--size > 0) && *p1 && *p2 && (tolower(*p1) == tolower(*p2)); 157db96d56Sopenharmony_ci p1++, p2++) { 167db96d56Sopenharmony_ci ; 177db96d56Sopenharmony_ci } 187db96d56Sopenharmony_ci return tolower(*p1) - tolower(*p2); 197db96d56Sopenharmony_ci} 207db96d56Sopenharmony_ci 217db96d56Sopenharmony_ciint 227db96d56Sopenharmony_ciPyOS_mystricmp(const char *s1, const char *s2) 237db96d56Sopenharmony_ci{ 247db96d56Sopenharmony_ci const unsigned char *p1 = (const unsigned char *)s1; 257db96d56Sopenharmony_ci const unsigned char *p2 = (const unsigned char *)s2; 267db96d56Sopenharmony_ci for (; *p1 && *p2 && (tolower(*p1) == tolower(*p2)); p1++, p2++) { 277db96d56Sopenharmony_ci ; 287db96d56Sopenharmony_ci } 297db96d56Sopenharmony_ci return (tolower(*p1) - tolower(*p2)); 307db96d56Sopenharmony_ci} 31