diff options
Diffstat (limited to 'util')
-rw-r--r-- | util/ChangeLog | 5 | ||||
-rw-r--r-- | util/compat.c | 70 | ||||
-rw-r--r-- | util/strgutil.c | 70 |
3 files changed, 75 insertions, 70 deletions
diff --git a/util/ChangeLog b/util/ChangeLog index a67547395..f6a916f53 100644 --- a/util/ChangeLog +++ b/util/ChangeLog @@ -1,3 +1,8 @@ +2007-04-16 David Shaw <[email protected]> + + * strgutil.c (ascii_toupper, ascii_tolower, ascii_strcasecmp, + ascii_strncasecmp): Move functions to compat.c. + 2007-04-16 Werner Koch <[email protected]> * secmem.c (init_pool): Avoid assigning a negative value to a diff --git a/util/compat.c b/util/compat.c index aca558aee..cd487e5e2 100644 --- a/util/compat.c +++ b/util/compat.c @@ -1,3 +1,5 @@ +#include <sys/types.h> + int hextobyte (const char *s) { @@ -22,3 +24,71 @@ hextobyte (const char *s) return -1; return c; } + +int +ascii_toupper (int c) +{ + if (c >= 'a' && c <= 'z') + c &= ~0x20; + return c; +} + +int +ascii_tolower (int c) +{ + if (c >= 'A' && c <= 'Z') + c |= 0x20; + return c; +} + +int +ascii_strcasecmp (const char *a, const char *b) +{ + const unsigned char *p1 = (const unsigned char *)a; + const unsigned char *p2 = (const unsigned char *)b; + unsigned char c1, c2; + + if (p1 == p2) + return 0; + + do + { + c1 = ascii_tolower (*p1); + c2 = ascii_tolower (*p2); + + if (c1 == '\0') + break; + + ++p1; + ++p2; + } + while (c1 == c2); + + return c1 - c2; +} + +int +ascii_strncasecmp (const char *a, const char *b, size_t n) +{ + const unsigned char *p1 = (const unsigned char *)a; + const unsigned char *p2 = (const unsigned char *)b; + unsigned char c1, c2; + + if (p1 == p2 || !n ) + return 0; + + do + { + c1 = ascii_tolower (*p1); + c2 = ascii_tolower (*p2); + + if ( !--n || c1 == '\0') + break; + + ++p1; + ++p2; + } + while (c1 == c2); + + return c1 - c2; +} diff --git a/util/strgutil.c b/util/strgutil.c index 95cb0f274..9d2b15994 100644 --- a/util/strgutil.c +++ b/util/strgutil.c @@ -1058,76 +1058,6 @@ ascii_islower (int c) return c >= 'a' && c <= 'z'; } -int -ascii_toupper (int c) -{ - if (c >= 'a' && c <= 'z') - c &= ~0x20; - return c; -} - -int -ascii_tolower (int c) -{ - if (c >= 'A' && c <= 'Z') - c |= 0x20; - return c; -} - - -int -ascii_strcasecmp (const char *a, const char *b) -{ - const unsigned char *p1 = (const unsigned char *)a; - const unsigned char *p2 = (const unsigned char *)b; - unsigned char c1, c2; - - if (p1 == p2) - return 0; - - do - { - c1 = ascii_tolower (*p1); - c2 = ascii_tolower (*p2); - - if (c1 == '\0') - break; - - ++p1; - ++p2; - } - while (c1 == c2); - - return c1 - c2; -} - -int -ascii_strncasecmp (const char *a, const char *b, size_t n) -{ - const unsigned char *p1 = (const unsigned char *)a; - const unsigned char *p2 = (const unsigned char *)b; - unsigned char c1, c2; - - if (p1 == p2 || !n ) - return 0; - - do - { - c1 = ascii_tolower (*p1); - c2 = ascii_tolower (*p2); - - if ( !--n || c1 == '\0') - break; - - ++p1; - ++p2; - } - while (c1 == c2); - - return c1 - c2; -} - - int ascii_memcasecmp( const char *a, const char *b, size_t n ) { |