uprf: We don't have to implement it ourselves but can use strncasecmp()
authormarkus schnalke <meillo@marmaro.de>
Thu, 25 Sep 2014 11:04:24 +0000 (13:04 +0200)
committermarkus schnalke <meillo@marmaro.de>
Thu, 25 Sep 2014 11:04:24 +0000 (13:04 +0200)
Also clarified what an ``unsigned prefix'' really is.
I haven't changed all uses of uprf() in the code to strncasecmp(). This
could be done. I'm not sure if it would enhance the clarity of the code.
We don't need a prototype for strncasecmp(), because it's declared in
strings.h.

h/prototypes.h
sbr/uprf.c

index ed7f1ae..9b76d07 100644 (file)
@@ -111,7 +111,6 @@ int vfgets(FILE *, char **);
 char *write_charset_8bit(void);
 
 int mh_strcasecmp(const char *s1, const char *s2);
-int strncasecmp(const char *s1, const char *s2, size_t n);
 
 
 /*
index f283a1b..f370b5c 100644 (file)
@@ -1,5 +1,6 @@
 /*
 ** uprf.c -- "unsigned" lexical prefix
+**        -- Check if `word' starts with `prefix', caseinsensitively.
 **
 ** This code is Copyright (c) 2002, by the authors of nmh.  See the
 ** COPYRIGHT file in the root directory of the nmh distribution for
 
 
 int
-uprf(char *c1, char *c2)
+uprf(char *word, char *prefix)
 {
-       int c;
-
-       if (!(c1 && c2))
+       if (!word || !prefix) {
                return 0;
-
-       while ((c = *c2++)) {
-               if (tolower(c &= 0xff) != tolower(*c1 & 0xff))
-                       return 0;
-               else
-                       c1++;
        }
-       return 1;
+       return (strncasecmp(word, prefix, strlen(prefix))==0) ? 1 : 0;
 }