#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; }