X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/6c42153ad9362cc676ea66563bf400d7511b3b68..98c2e7d95bda262ef23e8f0838e5b86d08ed4e4f:/sbr/uprf.c?ds=sidebyside diff --git a/sbr/uprf.c b/sbr/uprf.c index dedb0e5b..90562e84 100644 --- a/sbr/uprf.c +++ b/sbr/uprf.c @@ -2,8 +2,6 @@ /* * uprf.c -- "unsigned" lexical prefix * - * $Id$ - * * This code is Copyright (c) 2002, by the authors of nmh. See the * COPYRIGHT file in the root directory of the nmh distribution for * complete copyright information. @@ -11,33 +9,23 @@ #include -#define TO_LOWER 040 -#define NO_MASK 000 - +/* uprf returns true if s starts with prefix, ignoring case. + * Otherwise false. If s or prefix are NULL then false results. */ int -uprf (char *c1, 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++)) - { -#ifdef LOCALE - c &= 0xff; - mask = *c1 & 0xff; - c = (isalpha(c) && isupper(c)) ? tolower(c) : c; - mask = (isalpha(mask) && isupper(mask)) ? tolower(mask) : mask; - if (c != mask) -#else - mask = (isalpha(c) && isalpha(*c1)) ? TO_LOWER : NO_MASK; - if ((c | mask) != (*c1 | mask)) -#endif - return 0; - else - c1++; + while (*us && tolower(*us) == tolower(*up)) { + us++; + up++; } - return 1; + + return *up == '\0'; }