]> diplodocus.org Git - nmh/blobdiff - sbr/uprf.c
mhstoresbr.c: Flip logic to simplify. Remove else after continue.
[nmh] / sbr / uprf.c
index 7adc3218013334c2ef247542e45e8a49f86366da..c74af7bd7ee6b965b1ca36391cad2e0d00050859 100644 (file)
@@ -1,39 +1,29 @@
-
-/*
- * uprf.c -- "unsigned" lexical prefix
+/* 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.
  */
 
 #include <h/mh.h>
 
-#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';
 }