]> diplodocus.org Git - nmh/blobdiff - sbr/context_find.c
Added const to last argument of trace_cb signature, it'll be
[nmh] / sbr / context_find.c
index 7c809ec180d2bf69e2e5cbc89ad101b2214cd153..ad70f069f9afc62a7e5e7ae448996ff038bcc68b 100644 (file)
@@ -11,7 +11,7 @@
 
 
 char *
-context_find (char *str)
+context_find (const char *str)
 {
     struct node *np;
 
@@ -21,3 +21,34 @@ context_find (char *str)
 
     return NULL;
 }
+
+
+/*
+ * Helper function to search first, if subtype is non-NULL, for
+ * invoname-string-type/subtype and then, if not yet found,
+ * invoname-string-type.  If entry is found but is empty, it is
+ * treated as not found.
+ */
+char *
+context_find_by_type (const char *string, const char *type,
+                      const char *subtype) {
+    char *value = NULL;
+
+    if (subtype) {
+        char *cp;
+
+        cp = concat (invo_name, "-", string, "-", type, "/", subtype, NULL);
+        if ((value = context_find (cp)) != NULL && *value == '\0') value = NULL;
+        free (cp);
+    }
+
+    if (value == NULL) {
+        char *cp;
+
+        cp = concat (invo_name, "-", string, "-", type, NULL);
+        if ((value = context_find (cp)) != NULL && *value == '\0') value = NULL;
+        free (cp);
+    }
+
+    return value;
+}