-
-/*
- * uprf.c -- "unsigned" lexical prefix
+/* uprf.c -- "unsigned" lexical prefix
*
* This code is Copyright (c) 2002, by the authors of nmh. See the
* COPYRIGHT file in the root directory of the nmh distribution for
#include <h/mh.h>
+/* uprf returns true if s starts with prefix, ignoring case.
+ * Otherwise false. If s or prefix are NULL then false results. */
int
-uprf (const char *c1, const char *c2)
+uprf(const char *s, const char *prefix)
{
- int c, mask;
+ unsigned char *us, *up;
- if (!(c1 && c2))
+ if (!s || !prefix)
return 0;
+ us = (unsigned char *)s;
+ up = (unsigned char *)prefix;
- while ((c = *c2++))
- {
- c &= 0xff;
- mask = *c1 & 0xff;
- c = (isalpha(c) && isupper(c)) ? tolower(c) : c;
- mask = (isalpha(mask) && isupper(mask)) ? tolower(mask) : mask;
- if (c != mask)
- return 0;
- c1++;
+ while (*us && tolower(*us) == tolower(*up)) {
+ us++;
+ up++;
}
- return 1;
+
+ return *up == '\0';
}