diff options
author | rhaas <rhaas@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 2012-06-05 01:21:05 +0000 |
---|---|---|
committer | rhaas <rhaas@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 2012-06-05 01:21:05 +0000 |
commit | ebd9d3057b889f2fe224c7cd7a0c539aa33a4d5c (patch) | |
tree | 90810093d4c416d77aff036ad0a4c321580284a4 /src/main | |
parent | fe89bb0b6590b24f4c8c6cee06b26a985661ef5a (diff) |
have CCTK_RegexMatch return a distinct error code if patterns is invalid
This patch changes the return value in the "does not compile" case to -1 and
updates all source files that I could find that use it.
Note that this patch changes behaviour of a routine. It used to return 0 for
non-compiling patterns so thorns that test for C-like true would interpret
invalid patterns as does-not-match, but will interpret the -1 return value as
does-match.
git-svn-id: http://svn.cactuscode.org/flesh/trunk@4831 17b73243-c579-4c4c-a9d2-2d5706c11dac
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/Parameters.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/src/main/Parameters.c b/src/main/Parameters.c index 3130be96..48467434 100644 --- a/src/main/Parameters.c +++ b/src/main/Parameters.c @@ -203,11 +203,6 @@ static void ParameterActivate(t_param *param); ********************* Other Routine Prototypes ********************* ********************************************************************/ -int CCTK_RegexMatch (const char *string, - const char *pattern, - const int nmatch, - regmatch_t *pmatch); - extern void CCTKi_SetParameterSetMask (int mask); /******************************************************************** @@ -2107,13 +2102,20 @@ static int ParameterSetString (t_param *param, const char *value) CCTK_Equals (param->props->thorn, range->origin)) { #ifndef CCTK_PARAMUNCHECKED - if (CCTK_RegexMatch (value, range->range, 0, NULL)) + const int matched = CCTK_RegexMatch (value, range->range, 0, NULL); + if (matched > 0) { #endif retval = CCTK_SetString (param->data, value); break; #ifndef CCTK_PARAMUNCHECKED } + else if (matched < 0) + { + CCTK_VWarn(CCTK_WARN_ALERT, __LINE__, __FILE__, "Cactus", + "Invalid regular expression '%s' used as range for string %s::%s", + range->range, param->props->thorn, param->props->name); + } #endif } } @@ -2151,13 +2153,20 @@ static int ParameterSetSentence (t_param *param, const char *value) CCTK_Equals (param->props->thorn, range->origin)) { #ifndef CCTK_PARAMUNCHECKED - if (CCTK_RegexMatch (value, range->range, 0, NULL)) + const int matched = CCTK_RegexMatch (value, range->range, 0, NULL); + if (matched > 0) { #endif retval = CCTK_SetString (param->data, value); break; #ifndef CCTK_PARAMUNCHECKED } + else if (matched < 0) + { + CCTK_VWarn(CCTK_WARN_ALERT, __LINE__, __FILE__, "Cactus", + "Invalid regular expression '%s' used as range for sequence %s::%s", + range->range, param->props->thorn, param->props->name); + } #endif } } |