pystrcmp.c 753 B

123456789101112131415161718192021222324252627282930
  1. /* Cross platform case insensitive string compare functions
  2. */
  3. #include "Python.h"
  4. int
  5. PyOS_mystrnicmp(const char *s1, const char *s2, Py_ssize_t size)
  6. {
  7. const unsigned char *p1, *p2;
  8. if (size == 0)
  9. return 0;
  10. p1 = (const unsigned char *)s1;
  11. p2 = (const unsigned char *)s2;
  12. for (; (--size > 0) && *p1 && *p2 && (tolower(*p1) == tolower(*p2));
  13. p1++, p2++) {
  14. ;
  15. }
  16. return tolower(*p1) - tolower(*p2);
  17. }
  18. int
  19. PyOS_mystricmp(const char *s1, const char *s2)
  20. {
  21. const unsigned char *p1 = (const unsigned char *)s1;
  22. const unsigned char *p2 = (const unsigned char *)s2;
  23. for (; *p1 && *p2 && (tolower(*p1) == tolower(*p2)); p1++, p2++) {
  24. ;
  25. }
  26. return (tolower(*p1) - tolower(*p2));
  27. }