summaryrefslogtreecommitdiff
path: root/extcap_parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'extcap_parser.c')
-rw-r--r--extcap_parser.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/extcap_parser.c b/extcap_parser.c
index ef683f1a40..d884298a3a 100644
--- a/extcap_parser.c
+++ b/extcap_parser.c
@@ -300,6 +300,21 @@ extcap_token_sentence *extcap_tokenize_sentence(const gchar *s) {
return NULL ;
}
+ /* caught a regex quantifier end bracket and not the end of the line.
+ * let's find the correct end bracket */
+ if ( *(e+1) != '{' && strlen ( e ) > 1 ) {
+ gchar *f = (e + 1);
+
+ while ( ( f = g_strstr_len(f, -1, "}") ) != NULL) {
+ if ( strlen ( f ) <= 1 || *(f+1) == '{' )
+ break;
+ f++;
+ }
+
+ if ( f != NULL )
+ e = f;
+ }
+
if ((eq = g_strstr_len(b, -1, "=")) == NULL) {
/* printf("debug - tokenizer - invalid, missing =\n"); */
extcap_free_tokenized_sentence(rs);
@@ -349,6 +364,8 @@ extcap_token_sentence *extcap_tokenize_sentence(const gchar *s) {
tv->param_type = EXTCAP_PARAM_PARENT;
} else if (g_ascii_strcasecmp(tv->arg, "required") == 0) {
tv->param_type = EXTCAP_PARAM_REQUIRED;
+ } else if (g_ascii_strcasecmp(tv->arg, "validation") == 0) {
+ tv->param_type = EXTCAP_PARAM_VALIDATION;
} else {
tv->param_type = EXTCAP_PARAM_UNKNOWN;
}
@@ -480,6 +497,7 @@ extcap_arg *extcap_new_arg(void) {
r->default_complex = NULL;
r->fileexists = FALSE;
r->fileextension = NULL;
+ r->regexp = NULL;
r->is_required = FALSE;
r->values = NULL;
@@ -509,6 +527,9 @@ void extcap_free_arg(extcap_arg *a) {
if (a->fileextension != NULL)
g_free(a->fileextension);
+ if (a->regexp != NULL)
+ g_free(a->regexp);
+
if (a->range_start != NULL)
extcap_free_complex(a->range_start);
@@ -605,6 +626,11 @@ extcap_arg *extcap_parse_arg_sentence(GList * args, extcap_token_sentence *s) {
target_arg->fileextension = g_strdup(v->value);
}
+ if ((v = extcap_find_param_by_type(s->param_list, EXTCAP_PARAM_VALIDATION))
+ != NULL) {
+ target_arg->regexp = g_strdup(v->value);
+ }
+
if ((v = extcap_find_param_by_type(s->param_list, EXTCAP_PARAM_REQUIRED))
!= NULL) {
target_arg->is_required = (v->value[0] == 't' || v->value[0] == 'T');