summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorrhaas <rhaas@17b73243-c579-4c4c-a9d2-2d5706c11dac>2012-06-05 01:21:05 +0000
committerrhaas <rhaas@17b73243-c579-4c4c-a9d2-2d5706c11dac>2012-06-05 01:21:05 +0000
commitebd9d3057b889f2fe224c7cd7a0c539aa33a4d5c (patch)
tree90810093d4c416d77aff036ad0a4c321580284a4 /src/main
parentfe89bb0b6590b24f4c8c6cee06b26a985661ef5a (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.c23
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
}
}