]> diplodocus.org Git - nmh/blobdiff - sbr/uprf.c
crawl_folders.h: Base header on implementation.
[nmh] / sbr / uprf.c
index b3c81ff0ed46391e65af5ba97e8a0536c79fbe02..9d9927fba51560760f2aaf2f0947846432c43521 100644 (file)
@@ -1,41 +1,30 @@
-
-/*
- * 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
  * complete copyright information.
  */
 
-#include <h/mh.h>
-
-#define TO_LOWER 040
-#define NO_MASK  000
+#include "h/mh.h"
+#include "uprf.h"
 
 
+/* 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';
 }