Add casei versions of strcmpstart/strcmpend

svn:r3026
This commit is contained in:
Nick Mathewson 2004-11-30 03:10:56 +00:00
parent ee7bef1458
commit ad7db5e43a
2 changed files with 23 additions and 0 deletions

View File

@ -289,6 +289,15 @@ int strcmpstart(const char *s1, const char *s2)
return strncmp(s1, s2, n); return strncmp(s1, s2, n);
} }
/* Compares the first strlen(s2) characters of s1 with s2. Returns as for
* strcasecmp.
*/
int strcasecmpstart(const char *s1, const char *s2)
{
size_t n = strlen(s2);
return strncasecmp(s1, s2, n);
}
/* Compares the last strlen(s2) characters of s1 with s2. Returns as for /* Compares the last strlen(s2) characters of s1 with s2. Returns as for
* strcmp. * strcmp.
*/ */
@ -301,6 +310,18 @@ int strcmpend(const char *s1, const char *s2)
return strncmp(s1+(n1-n2), s2, n2); return strncmp(s1+(n1-n2), s2, n2);
} }
/* Compares the last strlen(s2) characters of s1 with s2. Returns as for
* strcasecmp.
*/
int strcasecmpend(const char *s1, const char *s2)
{
size_t n1 = strlen(s1), n2 = strlen(s2);
if (n2>n1)
return strcasecmp(s1,s2);
else
return strncasecmp(s1+(n1-n2), s2, n2);
}
/** Return a pointer to the first char of s that is not whitespace and /** Return a pointer to the first char of s that is not whitespace and
* not a comment, or to the terminating NUL if no such character exists. * not a comment, or to the terminating NUL if no such character exists.
*/ */

View File

@ -56,7 +56,9 @@ char *tor_strndup(const char *s, size_t n);
#define HEX_CHARACTERS "0123456789ABCDEFabcdef" #define HEX_CHARACTERS "0123456789ABCDEFabcdef"
void tor_strlower(char *s); void tor_strlower(char *s);
int strcmpstart(const char *s1, const char *s2); int strcmpstart(const char *s1, const char *s2);
int strcasecmpstart(const char *s1, const char *s2);
int strcmpend(const char *s1, const char *s2); int strcmpend(const char *s1, const char *s2);
int strcasecmpend(const char *s1, const char *s2);
int tor_strstrip(char *s, const char *strip); int tor_strstrip(char *s, const char *strip);
typedef enum { typedef enum {
ALWAYS_TERMINATE, NEVER_TERMINATE, TERMINATE_IF_EVEN ALWAYS_TERMINATE, NEVER_TERMINATE, TERMINATE_IF_EVEN