]> diplodocus.org Git - nmh/blobdiff - sbr/context_find.c
folder_realloc.c: Move interface to own file.
[nmh] / sbr / context_find.c
index ad70f069f9afc62a7e5e7ae448996ff038bcc68b..05e368ba8b256fe206b90e547e79d93c321789f6 100644 (file)
@@ -1,13 +1,12 @@
-
-/*
- * context_find.c -- find an entry in the context/profile list
+/* context_find.c -- find an entry in the context/profile list
  *
  * 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>
+#include "h/mh.h"
+#include "context_find.h"
 
 
 char *
@@ -15,9 +14,10 @@ context_find (const char *str)
 {
     struct node *np;
 
+    str = FENDNULL(str);
     for (np = m_defs; np; np = np->n_next)
-       if (!strcasecmp (np->n_name ? np->n_name : "", str ? str : ""))
-           return (np->n_field);
+       if (!strcasecmp(FENDNULL(np->n_name), str))
+           return np->n_field;
 
     return NULL;
 }
@@ -31,7 +31,8 @@ context_find (const char *str)
  */
 char *
 context_find_by_type (const char *string, const char *type,
-                      const char *subtype) {
+                      const char *subtype)
+{
     char *value = NULL;
 
     if (subtype) {
@@ -52,3 +53,24 @@ context_find_by_type (const char *string, const char *type,
 
     return value;
 }
+
+
+/*
+ * Helper function to search profile an entry with name beginning with prefix.
+ * The search is case insensitive.
+ */
+int
+context_find_prefix (const char *prefix)
+{
+    struct node *np;
+    size_t len;
+
+    len = strlen(prefix);
+    for (np = m_defs; np; np = np->n_next) {
+       if (np->n_name  &&  ! strncasecmp (np->n_name, prefix, len)) {
+           return 1;
+        }
+    }
+
+    return 0;
+}