Christian Heimes | fe337bf | 2008-03-23 21:54:12 +0000 | [diff] [blame] | 1 | /* Cross platform case insensitive string compare functions |
Christian Heimes | 99170a5 | 2007-12-19 02:07:34 +0000 | [diff] [blame] | 2 | */ |
| 3 | |
| 4 | #include "Python.h" |
| 5 | |
| 6 | int |
| 7 | PyOS_mystrnicmp(const char *s1, const char *s2, Py_ssize_t size) |
| 8 | { |
wmeehan | 97eaf2b | 2020-08-27 01:45:25 -0400 | [diff] [blame] | 9 | const unsigned char *p1, *p2; |
Antoine Pitrou | f95a1b3 | 2010-05-09 15:52:27 +0000 | [diff] [blame] | 10 | if (size == 0) |
| 11 | return 0; |
wmeehan | 97eaf2b | 2020-08-27 01:45:25 -0400 | [diff] [blame] | 12 | p1 = (const unsigned char *)s1; |
| 13 | p2 = (const unsigned char *)s2; |
| 14 | for (; (--size > 0) && *p1 && *p2 && (tolower(*p1) == tolower(*p2)); |
| 15 | p1++, p2++) { |
| 16 | ; |
Antoine Pitrou | f95a1b3 | 2010-05-09 15:52:27 +0000 | [diff] [blame] | 17 | } |
wmeehan | 97eaf2b | 2020-08-27 01:45:25 -0400 | [diff] [blame] | 18 | return tolower(*p1) - tolower(*p2); |
Christian Heimes | 99170a5 | 2007-12-19 02:07:34 +0000 | [diff] [blame] | 19 | } |
| 20 | |
| 21 | int |
| 22 | PyOS_mystricmp(const char *s1, const char *s2) |
| 23 | { |
wmeehan | 97eaf2b | 2020-08-27 01:45:25 -0400 | [diff] [blame] | 24 | const unsigned char *p1 = (const unsigned char *)s1; |
| 25 | const unsigned char *p2 = (const unsigned char *)s2; |
| 26 | for (; *p1 && *p2 && (tolower(*p1) == tolower(*p2)); p1++, p2++) { |
Antoine Pitrou | f95a1b3 | 2010-05-09 15:52:27 +0000 | [diff] [blame] | 27 | ; |
| 28 | } |
wmeehan | 97eaf2b | 2020-08-27 01:45:25 -0400 | [diff] [blame] | 29 | return (tolower(*p1) - tolower(*p2)); |
Christian Heimes | 99170a5 | 2007-12-19 02:07:34 +0000 | [diff] [blame] | 30 | } |