#include "copyright.h"
/* String utilities */
#include <ctype.h>
#define DOWNCASE(x) (isupper(x) ? tolower(x) : (x))
int string_compare (const char *s1, const char *s2)
{
while (*s1 && *s2 && DOWNCASE (*s1) == DOWNCASE (*s2))
s1++, s2++;
return (DOWNCASE (*s1) - DOWNCASE (*s2));
}
int string_prefix (const char *string, const char *prefix)
{
while (*string && *prefix && DOWNCASE (*string) == DOWNCASE (*prefix))
string++, prefix++;
return *prefix == '\0';
}
/* accepts only nonempty matches starting at the beginning of a word */
const char *string_match (const char *src, const char *sub)
{
if (*sub != '\0') {
while (*src) {
if (string_prefix (src, sub))
return src;
/* else scan to beginning of next word */
while (*src && isalnum (*src))
src++;
while (*src && !isalnum (*src))
src++;
}
}
return 0;
}