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