X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/d66378909931a74ed83e29d592982eaa3e7e0107..8e7da2908d70b96ee25587a6b6eb28cb84fb8459:/sbr/context_find.c diff --git a/sbr/context_find.c b/sbr/context_find.c index 7c809ec1..5cad0164 100644 --- a/sbr/context_find.c +++ b/sbr/context_find.c @@ -11,7 +11,7 @@ char * -context_find (char *str) +context_find (const char *str) { struct node *np; @@ -21,3 +21,33 @@ context_find (char *str) return NULL; } + + +/* + * Helper function to search first, if subtype is non-NULL, for + * invoname-string-type/subtype and then invoname-string-type. + * If entry is found but is empty, returns NULL. + */ +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; +}