Move tr_prefix_wildcard_match to tr_constraint.c
[trust_router.git] / common / tr_constraint.c
index 3ce6cbe..f0c3316 100644 (file)
 #include <tr_filter.h>
 #include <trust_router/tr_constraint.h>
 
+/* Returns TRUE (1) if the the string (str) matchs the wildcard string (wc_str), FALSE (0) if not.
+ */
+int tr_prefix_wildcard_match (const char *str, const char *wc_str) {
+  const char *wc_post = wc_str;
+  size_t len = 0;
+  size_t wc_len = 0;
+
+  if ((!str) || (!wc_str))
+    return 0;
+
+  len = strlen(str);
+  if (0 == (wc_len = strlen(wc_str)))
+    return 0;
+
+  /* TBD -- skip leading white space? */
+  if ('*' == wc_str[0]) {
+    wc_post = &(wc_str[1]);
+    wc_len--;
+  }else if (len != wc_len)
+    return 0;
+
+
+  if (wc_len > len)
+    return 0;
+  
+  if (0 == strcmp(&(str[len-wc_len]), wc_post)) {
+    return 1;
+  }
+  else
+    return 0;
+  }
+
 TR_CONSTRAINT_SET *tr_constraint_set_from_fline (TR_FLINE *fline)
 {
   json_t *cset = NULL;