[csw-devel] SF.net SVN: gar:[22052] csw/mgar/pkg/cfengine3/trunk
guengel at users.sourceforge.net
guengel at users.sourceforge.net
Sun Sep 29 14:57:53 CEST 2013
Revision: 22052
http://gar.svn.sourceforge.net/gar/?rev=22052&view=rev
Author: guengel
Date: 2013-09-29 12:57:51 +0000 (Sun, 29 Sep 2013)
Log Message:
-----------
cfengine3/trunk: Added patch for Solaris 11 (enum name clash in system header).
Modified Paths:
--------------
csw/mgar/pkg/cfengine3/trunk/Makefile
csw/mgar/pkg/cfengine3/trunk/files/changelog.CSW
Added Paths:
-----------
csw/mgar/pkg/cfengine3/trunk/files/0003-Solaris-11-DATA_TYPE_-name-clash-patch.patch
Modified: csw/mgar/pkg/cfengine3/trunk/Makefile
===================================================================
--- csw/mgar/pkg/cfengine3/trunk/Makefile 2013-09-28 16:27:20 UTC (rev 22051)
+++ csw/mgar/pkg/cfengine3/trunk/Makefile 2013-09-29 12:57:51 UTC (rev 22052)
@@ -40,6 +40,9 @@
PATCHFILES += 0000-evalfunction-unittest-needs-z-interpose-when-linking.patch
PATCHFILES += 0000-Disable-acceptance-test.patch
+# Patch has been generated by using
+# find work/solaris11-sparc/build-isa-sparcv8plus/cfengine-3.5.2/ -type f \( -name \*.c -o -name \*.h -o -name \*.y \) -exec gsed -i.bak 's/DATA_TYPE_/CF_DATA_TYPE_/g' \{\} \;
+PATCHFILES += 0003-Solaris-11-DATA_TYPE_-name-clash-patch.patch
#
# CUSTOM VARIABLES
Added: csw/mgar/pkg/cfengine3/trunk/files/0003-Solaris-11-DATA_TYPE_-name-clash-patch.patch
===================================================================
--- csw/mgar/pkg/cfengine3/trunk/files/0003-Solaris-11-DATA_TYPE_-name-clash-patch.patch (rev 0)
+++ csw/mgar/pkg/cfengine3/trunk/files/0003-Solaris-11-DATA_TYPE_-name-clash-patch.patch 2013-09-29 12:57:51 UTC (rev 22052)
@@ -0,0 +1,3747 @@
+From 2b6e0b6cd2e733b488c9d2bf5db8e0c7c4299e3b Mon Sep 17 00:00:00 2001
+From: Rafael Ostertag <raos at opencsw.org>
+Date: Sun, 29 Sep 2013 14:50:15 +0200
+Subject: [PATCH] Solaris 11 DATA_TYPE_* name clash patch.
+
+---
+ cf-agent/cf-agent.c | 12 +-
+ cf-agent/files_editline.c | 2 +-
+ cf-agent/files_editxml.c | 2 +-
+ cf-agent/vercmp.c | 4 +-
+ cf-agent/verify_environments.c | 2 +-
+ cf-agent/verify_exec.c | 2 +-
+ cf-agent/verify_files.c | 4 +-
+ cf-agent/verify_files_utils.c | 2 +-
+ cf-agent/verify_methods.c | 2 +-
+ cf-agent/verify_packages.c | 24 +-
+ cf-agent/verify_processes.c | 2 +-
+ cf-agent/verify_services.c | 10 +-
+ cf-execd/cf-execd.c | 2 +-
+ cf-gendoc/export_xml.c | 40 +-
+ cf-gendoc/manual.c | 8 +-
+ cf-monitord/verify_measurements.c | 10 +-
+ libpromises/attributes.c | 4 +-
+ libpromises/bootstrap.c | 6 +-
+ libpromises/cf3.defs.h | 32 +-
+ libpromises/cf3parse.c | 14 +-
+ libpromises/cf3parse.y | 14 +-
+ libpromises/conversion.c | 40 +-
+ libpromises/env_context.c | 12 +-
+ libpromises/evalfunction.c | 984 +++++++++++++++++++-------------------
+ libpromises/expand.c | 46 +-
+ libpromises/generic_agent.c | 4 +-
+ libpromises/iteration.c | 2 +-
+ libpromises/policy.c | 40 +-
+ libpromises/promises.c | 2 +-
+ libpromises/rlist.c | 32 +-
+ libpromises/scope.c | 34 +-
+ libpromises/syntax.c | 74 +--
+ libpromises/syntax.h | 32 +-
+ libpromises/sysinfo.c | 100 ++--
+ libpromises/unix.c | 28 +-
+ libpromises/vars.c | 10 +-
+ libpromises/verify_reports.c | 2 +-
+ libpromises/verify_vars.c | 6 +-
+ tests/unit/assoc_test.c | 2 +-
+ tests/unit/exec-config-test.c | 2 +-
+ tests/unit/expand_test.c | 30 +-
+ tests/unit/scope_test.c | 6 +-
+ tests/unit/set_domainname_test.c | 2 +-
+ 43 files changed, 844 insertions(+), 844 deletions(-)
+
+diff --git a/cf-agent/cf-agent.c b/cf-agent/cf-agent.c
+index be3cf9a..c63f233 100644
+--- a/cf-agent/cf-agent.c
++++ b/cf-agent/cf-agent.c
+@@ -1311,9 +1311,9 @@ static void DefaultVarPromise(EvalContext *ctx, const Promise *pp)
+
+ switch (dt)
+ {
+- case DATA_TYPE_STRING:
+- case DATA_TYPE_INT:
+- case DATA_TYPE_REAL:
++ case CF_DATA_TYPE_STRING:
++ case CF_DATA_TYPE_INT:
++ case CF_DATA_TYPE_REAL:
+
+ if (regex && !FullTextMatch(regex,rval.item))
+ {
+@@ -1327,9 +1327,9 @@ static void DefaultVarPromise(EvalContext *ctx, const Promise *pp)
+
+ break;
+
+- case DATA_TYPE_STRING_LIST:
+- case DATA_TYPE_INT_LIST:
+- case DATA_TYPE_REAL_LIST:
++ case CF_DATA_TYPE_STRING_LIST:
++ case CF_DATA_TYPE_INT_LIST:
++ case CF_DATA_TYPE_REAL_LIST:
+
+ if (regex)
+ {
+diff --git a/cf-agent/files_editline.c b/cf-agent/files_editline.c
+index 24ad1ae..7786981 100644
+--- a/cf-agent/files_editline.c
++++ b/cf-agent/files_editline.c
+@@ -113,7 +113,7 @@ int ScheduleEditLineOperations(EvalContext *ctx, Bundle *bp, Attributes a, const
+ return false;
+ }
+
+- ScopeNewSpecial(ctx, "edit", "filename", edcontext->filename, DATA_TYPE_STRING);
++ ScopeNewSpecial(ctx, "edit", "filename", edcontext->filename, CF_DATA_TYPE_STRING);
+
+ for (pass = 1; pass < CF_DONEPASSES; pass++)
+ {
+diff --git a/cf-agent/files_editxml.c b/cf-agent/files_editxml.c
+index ebe953e..f861ccb 100644
+--- a/cf-agent/files_editxml.c
++++ b/cf-agent/files_editxml.c
+@@ -160,7 +160,7 @@ int ScheduleEditXmlOperations(EvalContext *ctx, Bundle *bp, Attributes a, const
+ return false;
+ }
+
+- ScopeNewSpecial(ctx, "edit", "filename", edcontext->filename, DATA_TYPE_STRING);
++ ScopeNewSpecial(ctx, "edit", "filename", edcontext->filename, CF_DATA_TYPE_STRING);
+
+ for (pass = 1; pass < CF_DONEPASSES; pass++)
+ {
+diff --git a/cf-agent/vercmp.c b/cf-agent/vercmp.c
+index 8515826..2be84da 100644
+--- a/cf-agent/vercmp.c
++++ b/cf-agent/vercmp.c
+@@ -64,8 +64,8 @@ static VersionCmpResult RunCmpCommand(EvalContext *ctx, const char *command, con
+ char expanded_command[CF_EXPANDSIZE];
+
+ {
+- EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context", "v1" }, (Rval) { v1, RVAL_TYPE_SCALAR }, DATA_TYPE_STRING);
+- EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context", "v2" }, (Rval) { v2, RVAL_TYPE_SCALAR }, DATA_TYPE_STRING);
++ EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context", "v1" }, (Rval) { v1, RVAL_TYPE_SCALAR }, CF_DATA_TYPE_STRING);
++ EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context", "v2" }, (Rval) { v2, RVAL_TYPE_SCALAR }, CF_DATA_TYPE_STRING);
+ ExpandScalar(ctx, "cf_pack_context", command, expanded_command);
+
+ ScopeClear("cf_pack_context");
+diff --git a/cf-agent/verify_environments.c b/cf-agent/verify_environments.c
+index 6a87431..0ff582e 100644
+--- a/cf-agent/verify_environments.c
++++ b/cf-agent/verify_environments.c
+@@ -134,7 +134,7 @@ void VerifyEnvironmentsPromise(EvalContext *ctx, Promise *pp)
+ }
+
+ PromiseBanner(pp);
+- ScopeNewSpecial(ctx, "this", "promiser", pp->promiser, DATA_TYPE_STRING);
++ ScopeNewSpecial(ctx, "this", "promiser", pp->promiser, CF_DATA_TYPE_STRING);
+
+ pexp = ExpandDeRefPromise(ctx, "this", pp);
+ VerifyEnvironments(ctx, a, pp);
+diff --git a/cf-agent/verify_exec.c b/cf-agent/verify_exec.c
+index 1dd7a86..51051af 100644
+--- a/cf-agent/verify_exec.c
++++ b/cf-agent/verify_exec.c
+@@ -64,7 +64,7 @@ void VerifyExecPromise(EvalContext *ctx, Promise *pp)
+
+ a = GetExecAttributes(ctx, pp);
+
+- ScopeNewSpecial(ctx, "this", "promiser", pp->promiser, DATA_TYPE_STRING);
++ ScopeNewSpecial(ctx, "this", "promiser", pp->promiser, CF_DATA_TYPE_STRING);
+
+ if (!SyntaxCheckExec(a, pp))
+ {
+diff --git a/cf-agent/verify_files.c b/cf-agent/verify_files.c
+index d117529..45ae46a 100644
+--- a/cf-agent/verify_files.c
++++ b/cf-agent/verify_files.c
+@@ -196,7 +196,7 @@ static void VerifyFilePromise(EvalContext *ctx, char *path, Promise *pp)
+ }
+
+ ScopeDeleteSpecial("this", "promiser");
+- ScopeNewSpecial(ctx, "this", "promiser", path, DATA_TYPE_STRING);
++ ScopeNewSpecial(ctx, "this", "promiser", path, CF_DATA_TYPE_STRING);
+
+ thislock = AcquireLock(ctx, path, VUQNAME, CFSTARTTIME, a.transaction, pp, false);
+
+@@ -588,7 +588,7 @@ static void FindFilePromiserObjects(EvalContext *ctx, Promise *pp)
+ if (literal)
+ {
+ // Prime the promiser temporarily, may override later
+- ScopeNewSpecial(ctx, "this", "promiser", pp->promiser, DATA_TYPE_STRING);
++ ScopeNewSpecial(ctx, "this", "promiser", pp->promiser, CF_DATA_TYPE_STRING);
+ VerifyFilePromise(ctx, pp->promiser, pp);
+ }
+ else // Default is to expand regex paths
+diff --git a/cf-agent/verify_files_utils.c b/cf-agent/verify_files_utils.c
+index 21f195c..c16b965 100644
+--- a/cf-agent/verify_files_utils.c
++++ b/cf-agent/verify_files_utils.c
+@@ -124,7 +124,7 @@ int VerifyFileLeaf(EvalContext *ctx, char *path, struct stat *sb, Attributes att
+ /* We still need to augment the scope of context "this" for commands */
+
+ ScopeDeleteSpecial("this", "promiser");
+- ScopeNewSpecial(ctx, "this", "promiser", path, DATA_TYPE_STRING); // Parameters may only be scalars
++ ScopeNewSpecial(ctx, "this", "promiser", path, CF_DATA_TYPE_STRING); // Parameters may only be scalars
+
+ if (attr.transformer != NULL)
+ {
+diff --git a/cf-agent/verify_methods.c b/cf-agent/verify_methods.c
+index 14296e2..e652609 100644
+--- a/cf-agent/verify_methods.c
++++ b/cf-agent/verify_methods.c
+@@ -227,7 +227,7 @@ static void GetReturnValue(EvalContext *ctx, char *scope, Promise *pp)
+ snprintf(newname, CF_BUFSIZE, "%s", result);
+ }
+
+- EvalContextVariablePut(ctx, (VarRef) { NULL, PromiseGetBundle(pp)->name, newname }, assoc->rval, DATA_TYPE_STRING);
++ EvalContextVariablePut(ctx, (VarRef) { NULL, PromiseGetBundle(pp)->name, newname }, assoc->rval, CF_DATA_TYPE_STRING);
+ }
+ }
+
+diff --git a/cf-agent/verify_packages.c b/cf-agent/verify_packages.c
+index 1e4ec7e..bcdbfcf 100644
+--- a/cf-agent/verify_packages.c
++++ b/cf-agent/verify_packages.c
+@@ -948,9 +948,9 @@ static void SchedulePackageOp(EvalContext *ctx, const char *name, const char *ve
+
+ if ((a.packages.package_name_convention) || (a.packages.package_delete_convention))
+ {
+- EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context", "name" }, (Rval) { name, RVAL_TYPE_SCALAR }, DATA_TYPE_STRING);
+- EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context", "version" }, (Rval) { version, RVAL_TYPE_SCALAR }, DATA_TYPE_STRING);
+- EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context", "arch" }, (Rval) { arch, RVAL_TYPE_SCALAR }, DATA_TYPE_STRING);
++ EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context", "name" }, (Rval) { name, RVAL_TYPE_SCALAR }, CF_DATA_TYPE_STRING);
++ EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context", "version" }, (Rval) { version, RVAL_TYPE_SCALAR }, CF_DATA_TYPE_STRING);
++ EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context", "arch" }, (Rval) { arch, RVAL_TYPE_SCALAR }, CF_DATA_TYPE_STRING);
+
+ if ((a.packages.package_delete_convention) && (a.packages.package_policy == PACKAGE_ACTION_DELETE))
+ {
+@@ -1013,9 +1013,9 @@ static void SchedulePackageOp(EvalContext *ctx, const char *name, const char *ve
+ ((a.packages.package_select == PACKAGE_VERSION_COMPARATOR_GT) || (a.packages.package_select == PACKAGE_VERSION_COMPARATOR_GE)))
+ {
+ {
+- EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context_anyver", "name" }, (Rval) { name, RVAL_TYPE_SCALAR }, DATA_TYPE_STRING);
+- EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context_anyver", "version" }, (Rval) { "(.*)", RVAL_TYPE_SCALAR }, DATA_TYPE_STRING);
+- EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context_anyver", "arch" }, (Rval) { arch, RVAL_TYPE_SCALAR }, DATA_TYPE_STRING);
++ EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context_anyver", "name" }, (Rval) { name, RVAL_TYPE_SCALAR }, CF_DATA_TYPE_STRING);
++ EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context_anyver", "version" }, (Rval) { "(.*)", RVAL_TYPE_SCALAR }, CF_DATA_TYPE_STRING);
++ EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context_anyver", "arch" }, (Rval) { arch, RVAL_TYPE_SCALAR }, CF_DATA_TYPE_STRING);
+ ExpandScalar(ctx, "cf_pack_context_anyver", a.packages.package_name_convention, refAnyVer);
+
+ ScopeClear("cf_pack_context_anyver");
+@@ -1134,9 +1134,9 @@ static void SchedulePackageOp(EvalContext *ctx, const char *name, const char *ve
+ ((a.packages.package_select == PACKAGE_VERSION_COMPARATOR_GT) || (a.packages.package_select == PACKAGE_VERSION_COMPARATOR_GE)))
+ {
+ {
+- EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context_anyver", "name" }, (Rval) { name, RVAL_TYPE_SCALAR }, DATA_TYPE_STRING);
+- EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context_anyver", "version" }, (Rval) { "(.*)", RVAL_TYPE_SCALAR }, DATA_TYPE_STRING);
+- EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context_anyver", "arch" }, (Rval) { arch, RVAL_TYPE_SCALAR }, DATA_TYPE_STRING);
++ EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context_anyver", "name" }, (Rval) { name, RVAL_TYPE_SCALAR }, CF_DATA_TYPE_STRING);
++ EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context_anyver", "version" }, (Rval) { "(.*)", RVAL_TYPE_SCALAR }, CF_DATA_TYPE_STRING);
++ EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context_anyver", "arch" }, (Rval) { arch, RVAL_TYPE_SCALAR }, CF_DATA_TYPE_STRING);
+ ExpandScalar(ctx, "cf_pack_context_anyver", a.packages.package_name_convention, refAnyVer);
+
+ ScopeClear("cf_pack_context_anyver");
+@@ -1199,9 +1199,9 @@ static void SchedulePackageOp(EvalContext *ctx, const char *name, const char *ve
+ }
+
+ {
+- EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context", "name" }, (Rval) { name, RVAL_TYPE_SCALAR }, DATA_TYPE_STRING);
+- EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context", "version" }, (Rval) { instVer, RVAL_TYPE_SCALAR }, DATA_TYPE_STRING);
+- EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context", "arch" }, (Rval) { instArch, RVAL_TYPE_SCALAR }, DATA_TYPE_STRING);
++ EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context", "name" }, (Rval) { name, RVAL_TYPE_SCALAR }, CF_DATA_TYPE_STRING);
++ EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context", "version" }, (Rval) { instVer, RVAL_TYPE_SCALAR }, CF_DATA_TYPE_STRING);
++ EvalContextVariablePut(ctx, (VarRef) { NULL, "cf_pack_context", "arch" }, (Rval) { instArch, RVAL_TYPE_SCALAR }, CF_DATA_TYPE_STRING);
+ ExpandScalar(ctx, "cf_pack_context", a.packages.package_delete_convention, reference2);
+ id_del = reference2;
+
+diff --git a/cf-agent/verify_processes.c b/cf-agent/verify_processes.c
+index ebd9975..a593aae 100644
+--- a/cf-agent/verify_processes.c
++++ b/cf-agent/verify_processes.c
+@@ -124,7 +124,7 @@ static void VerifyProcesses(EvalContext *ctx, Attributes a, Promise *pp)
+ }
+
+ ScopeDeleteSpecial("this", "promiser");
+- ScopeNewSpecial(ctx, "this", "promiser", pp->promiser, DATA_TYPE_STRING);
++ ScopeNewSpecial(ctx, "this", "promiser", pp->promiser, CF_DATA_TYPE_STRING);
+ PromiseBanner(pp);
+ VerifyProcessOp(ctx, PROCESSTABLE, a, pp);
+ ScopeDeleteSpecial("this", "promiser");
+diff --git a/cf-agent/verify_services.c b/cf-agent/verify_services.c
+index 9adb726..25562b4 100644
+--- a/cf-agent/verify_services.c
++++ b/cf-agent/verify_services.c
+@@ -163,7 +163,7 @@ void VerifyServices(EvalContext *ctx, Attributes a, Promise *pp)
+ return;
+ }
+
+- ScopeNewSpecial(ctx, "this", "promiser", pp->promiser, DATA_TYPE_STRING);
++ ScopeNewSpecial(ctx, "this", "promiser", pp->promiser, CF_DATA_TYPE_STRING);
+ PromiseBanner(pp);
+
+ if (strcmp(a.service.service_type, "windows") == 0)
+@@ -229,21 +229,21 @@ static void DoVerifyServices(EvalContext *ctx, Attributes a, Promise *pp)
+ switch (a.service.service_policy)
+ {
+ case SERVICE_POLICY_START:
+- ScopeNewSpecial(ctx, "this", "service_policy", "start", DATA_TYPE_STRING);
++ ScopeNewSpecial(ctx, "this", "service_policy", "start", CF_DATA_TYPE_STRING);
+ break;
+
+ case SERVICE_POLICY_RESTART:
+- ScopeNewSpecial(ctx, "this", "service_policy", "restart", DATA_TYPE_STRING);
++ ScopeNewSpecial(ctx, "this", "service_policy", "restart", CF_DATA_TYPE_STRING);
+ break;
+
+ case SERVICE_POLICY_RELOAD:
+- ScopeNewSpecial(ctx, "this", "service_policy", "reload", DATA_TYPE_STRING);
++ ScopeNewSpecial(ctx, "this", "service_policy", "reload", CF_DATA_TYPE_STRING);
+ break;
+
+ case SERVICE_POLICY_STOP:
+ case SERVICE_POLICY_DISABLE:
+ default:
+- ScopeNewSpecial(ctx, "this", "service_policy", "stop", DATA_TYPE_STRING);
++ ScopeNewSpecial(ctx, "this", "service_policy", "stop", CF_DATA_TYPE_STRING);
+ break;
+ }
+
+diff --git a/cf-execd/cf-execd.c b/cf-execd/cf-execd.c
+index 3cc5d43..4776904 100644
+--- a/cf-execd/cf-execd.c
++++ b/cf-execd/cf-execd.c
+@@ -534,7 +534,7 @@ static bool ScheduleRun(EvalContext *ctx, Policy **policy, GenericAgentConfig *c
+ free(existing_policy_server);
+ }
+
+- ScopeNewSpecial(ctx, "sys", "policy_hub", POLICY_SERVER, DATA_TYPE_STRING);
++ ScopeNewSpecial(ctx, "sys", "policy_hub", POLICY_SERVER, CF_DATA_TYPE_STRING);
+
+ GetNameInfo3(ctx, AGENT_TYPE_EXECUTOR);
+ GetInterfacesInfo(ctx, AGENT_TYPE_EXECUTOR);
+diff --git a/cf-gendoc/export_xml.c b/cf-gendoc/export_xml.c
+index e8699ff..3e5c195 100644
+--- a/cf-gendoc/export_xml.c
++++ b/cf-gendoc/export_xml.c
+@@ -355,10 +355,10 @@ void XmlExportConstraint(Writer *writer, const ConstraintSyntax *bs)
+
+ switch (bs->dtype)
+ {
+- case DATA_TYPE_BODY:
+- case DATA_TYPE_BUNDLE:
+- case DATA_TYPE_NONE:
+- case DATA_TYPE_COUNTER:
++ case CF_DATA_TYPE_BODY:
++ case CF_DATA_TYPE_BUNDLE:
++ case CF_DATA_TYPE_NONE:
++ case CF_DATA_TYPE_COUNTER:
+ /* NO ADDITIONAL INFO */
+ break;
+
+@@ -394,17 +394,17 @@ static void XmlExportType(Writer *writer, const ConstraintSyntax *constraint_syn
+
+ switch (constraint_syntax->dtype)
+ {
+- case DATA_TYPE_BODY:
++ case CF_DATA_TYPE_BODY:
+ /* EXPORT CONSTRAINTS */
+ XmlExportConstraints(writer, constraint_syntax->range.body_type_syntax->constraints);
+ break;
+
+- case DATA_TYPE_INT:
+- case DATA_TYPE_REAL:
+- case DATA_TYPE_INT_LIST:
+- case DATA_TYPE_REAL_LIST:
+- case DATA_TYPE_INT_RANGE:
+- case DATA_TYPE_REAL_RANGE:
++ case CF_DATA_TYPE_INT:
++ case CF_DATA_TYPE_REAL:
++ case CF_DATA_TYPE_INT_LIST:
++ case CF_DATA_TYPE_REAL_LIST:
++ case CF_DATA_TYPE_INT_RANGE:
++ case CF_DATA_TYPE_REAL_RANGE:
+ if (constraint_syntax->range.validation_string != NULL)
+ {
+ /* START XML ELEMENT -- RANGE */
+@@ -433,8 +433,8 @@ static void XmlExportType(Writer *writer, const ConstraintSyntax *constraint_syn
+ break;
+ }
+
+- case DATA_TYPE_OPTION:
+- case DATA_TYPE_OPTION_LIST:
++ case CF_DATA_TYPE_OPTION:
++ case CF_DATA_TYPE_OPTION_LIST:
+ if (constraint_syntax->range.validation_string != NULL)
+ {
+ /* START XML ELEMENT -- OPTIONS */
+@@ -454,10 +454,10 @@ static void XmlExportType(Writer *writer, const ConstraintSyntax *constraint_syn
+ break;
+ }
+
+- case DATA_TYPE_STRING:
+- case DATA_TYPE_STRING_LIST:
+- case DATA_TYPE_CONTEXT:
+- case DATA_TYPE_CONTEXT_LIST:
++ case CF_DATA_TYPE_STRING:
++ case CF_DATA_TYPE_STRING_LIST:
++ case CF_DATA_TYPE_CONTEXT:
++ case CF_DATA_TYPE_CONTEXT_LIST:
+ /* XML ELEMENT -- ACCEPTED-VALUES */
+ if (strlen(constraint_syntax->range.validation_string) == 0)
+ {
+@@ -470,9 +470,9 @@ static void XmlExportType(Writer *writer, const ConstraintSyntax *constraint_syn
+
+ break;
+
+- case DATA_TYPE_BUNDLE:
+- case DATA_TYPE_NONE:
+- case DATA_TYPE_COUNTER:
++ case CF_DATA_TYPE_BUNDLE:
++ case CF_DATA_TYPE_NONE:
++ case CF_DATA_TYPE_COUNTER:
+ /* NONE */
+ break;
+ }
+diff --git a/cf-gendoc/manual.c b/cf-gendoc/manual.c
+index f1096ee..c1ad823 100644
+--- a/cf-gendoc/manual.c
++++ b/cf-gendoc/manual.c
+@@ -249,7 +249,7 @@ void TexinfoManual(EvalContext *ctx, const char *source_dir, const char *output_
+
+ // scopes const and sys
+
+- ScopeNewSpecial(ctx, "edit", "filename", "x", DATA_TYPE_STRING);
++ ScopeNewSpecial(ctx, "edit", "filename", "x", CF_DATA_TYPE_STRING);
+
+ ScopePutMatch(0, "x");
+
+@@ -481,7 +481,7 @@ static void TexinfoBodyParts(const char *source_dir, FILE *fout, const Constrain
+ fprintf(fout, "\n\n at node %s in %s\n at subsection @code{%s}\n\n at b{Type}: %s (Separate Bundle) \n", bs[i].lval,
+ context, bs[i].lval, DataTypeToString(bs[i].dtype));
+ }
+- else if (bs[i].dtype == DATA_TYPE_BODY)
++ else if (bs[i].dtype == CF_DATA_TYPE_BODY)
+ {
+ fprintf(fout, "\n\n at node %s in %s\n at subsection @code{%s} (body template)\n at noindent @b{Type}: %s\n\n",
+ bs[i].lval, context, bs[i].lval, DataTypeToString(bs[i].dtype));
+@@ -613,7 +613,7 @@ static void TexinfoShowRange(FILE *fout, const char *s, DataType type)
+ return;
+ }
+
+- if ((type == DATA_TYPE_OPTION) || (type == DATA_TYPE_OPTION_LIST))
++ if ((type == CF_DATA_TYPE_OPTION) || (type == CF_DATA_TYPE_OPTION_LIST))
+ {
+ list = RlistFromSplitString(s, ',');
+ fprintf(fout, "@noindent @b{Allowed input range}: @*\n at example");
+@@ -656,7 +656,7 @@ static void TexinfoSubBodyParts(const char *source_dir, FILE *fout, const Constr
+ fprintf(fout, "@item @code{%s}\n at b{Type}: %s\n (Separate Bundle) \n\n", bs[i].lval,
+ DataTypeToString(bs[i].dtype));
+ }
+- else if (bs[i].dtype == DATA_TYPE_BODY)
++ else if (bs[i].dtype == CF_DATA_TYPE_BODY)
+ {
+ fprintf(fout, "@item @code{%s}\n at b{Type}: %s\n\n", bs[i].lval, DataTypeToString(bs[i].dtype));
+ TexinfoSubBodyParts(source_dir, fout, bs[i].range.body_type_syntax->constraints);
+diff --git a/cf-monitord/verify_measurements.c b/cf-monitord/verify_measurements.c
+index 1c35a16..2a659e4 100644
+--- a/cf-monitord/verify_measurements.c
++++ b/cf-monitord/verify_measurements.c
+@@ -85,7 +85,7 @@ static bool CheckMeasureSanity(Measurement m, Promise *pp)
+ retval = false;
+ }
+
+- if (m.data_type == DATA_TYPE_NONE)
++ if (m.data_type == CF_DATA_TYPE_NONE)
+ {
+ Log(LOG_LEVEL_ERR, "The promiser '%s' did not specify a data type", pp->promiser);
+ PromiseRef(LOG_LEVEL_ERR, pp);
+@@ -97,10 +97,10 @@ static bool CheckMeasureSanity(Measurement m, Promise *pp)
+ {
+ switch (m.data_type)
+ {
+- case DATA_TYPE_COUNTER:
+- case DATA_TYPE_STRING:
+- case DATA_TYPE_INT:
+- case DATA_TYPE_REAL:
++ case CF_DATA_TYPE_COUNTER:
++ case CF_DATA_TYPE_STRING:
++ case CF_DATA_TYPE_INT:
++ case CF_DATA_TYPE_REAL:
+ break;
+
+ default:
+diff --git a/libpromises/attributes.c b/libpromises/attributes.c
+index 3b8e1f4..9213c61 100644
+--- a/libpromises/attributes.c
++++ b/libpromises/attributes.c
+@@ -1606,9 +1606,9 @@ Measurement GetMeasurementConstraint(const EvalContext *ctx, const Promise *pp)
+ value = ConstraintGetRvalValue(ctx, "data_type", pp, RVAL_TYPE_SCALAR);
+ m.data_type = DataTypeFromString(value);
+
+- if (m.data_type == DATA_TYPE_NONE)
++ if (m.data_type == CF_DATA_TYPE_NONE)
+ {
+- m.data_type = DATA_TYPE_STRING;
++ m.data_type = CF_DATA_TYPE_STRING;
+ }
+
+ m.history_type = ConstraintGetRvalValue(ctx, "history_type", pp, RVAL_TYPE_SCALAR);
+diff --git a/libpromises/bootstrap.c b/libpromises/bootstrap.c
+index b06ee35..30f4253 100644
+--- a/libpromises/bootstrap.c
++++ b/libpromises/bootstrap.c
+@@ -113,12 +113,12 @@ void SetPolicyServer(EvalContext *ctx, const char *new_policy_server)
+ if (new_policy_server)
+ {
+ snprintf(POLICY_SERVER, CF_MAX_IP_LEN, "%s", new_policy_server);
+- ScopeNewSpecial(ctx, "sys", "policy_hub", new_policy_server, DATA_TYPE_STRING);
++ ScopeNewSpecial(ctx, "sys", "policy_hub", new_policy_server, CF_DATA_TYPE_STRING);
+ }
+ else
+ {
+ POLICY_SERVER[0] = '\0';
+- ScopeNewSpecial(ctx, "sys", "policy_hub", "undefined", DATA_TYPE_STRING);
++ ScopeNewSpecial(ctx, "sys", "policy_hub", "undefined", CF_DATA_TYPE_STRING);
+ }
+
+ // Get the timestamp on policy update
+@@ -137,7 +137,7 @@ void SetPolicyServer(EvalContext *ctx, const char *new_policy_server)
+ char timebuf[26];
+ cf_strtimestamp_local(sb.st_mtime, timebuf);
+
+- ScopeNewSpecial(ctx, "sys", "last_policy_update", timebuf, DATA_TYPE_STRING);
++ ScopeNewSpecial(ctx, "sys", "last_policy_update", timebuf, CF_DATA_TYPE_STRING);
+ }
+
+ static char *PolicyServerFilename(const char *workdir)
+diff --git a/libpromises/cf3.defs.h b/libpromises/cf3.defs.h
+index c04c2a1..45faeee 100644
+--- a/libpromises/cf3.defs.h
++++ b/libpromises/cf3.defs.h
+@@ -428,22 +428,22 @@ typedef struct FnCall_ FnCall;
+
+ typedef enum
+ {
+- DATA_TYPE_STRING,
+- DATA_TYPE_INT,
+- DATA_TYPE_REAL,
+- DATA_TYPE_STRING_LIST,
+- DATA_TYPE_INT_LIST,
+- DATA_TYPE_REAL_LIST,
+- DATA_TYPE_OPTION,
+- DATA_TYPE_OPTION_LIST,
+- DATA_TYPE_BODY,
+- DATA_TYPE_BUNDLE,
+- DATA_TYPE_CONTEXT,
+- DATA_TYPE_CONTEXT_LIST,
+- DATA_TYPE_INT_RANGE,
+- DATA_TYPE_REAL_RANGE,
+- DATA_TYPE_COUNTER,
+- DATA_TYPE_NONE
++ CF_DATA_TYPE_STRING,
++ CF_DATA_TYPE_INT,
++ CF_DATA_TYPE_REAL,
++ CF_DATA_TYPE_STRING_LIST,
++ CF_DATA_TYPE_INT_LIST,
++ CF_DATA_TYPE_REAL_LIST,
++ CF_DATA_TYPE_OPTION,
++ CF_DATA_TYPE_OPTION_LIST,
++ CF_DATA_TYPE_BODY,
++ CF_DATA_TYPE_BUNDLE,
++ CF_DATA_TYPE_CONTEXT,
++ CF_DATA_TYPE_CONTEXT_LIST,
++ CF_DATA_TYPE_INT_RANGE,
++ CF_DATA_TYPE_REAL_RANGE,
++ CF_DATA_TYPE_COUNTER,
++ CF_DATA_TYPE_NONE
+ } DataType;
+
+ /*************************************************************************/
+diff --git a/libpromises/cf3parse.c b/libpromises/cf3parse.c
+index f382919..a516083 100644
+--- a/libpromises/cf3parse.c
++++ b/libpromises/cf3parse.c
+@@ -3120,7 +3120,7 @@ static bool LvalWantsBody(char *stype, char *lval)
+ {
+ if (strcmp(bs[l].lval, lval) == 0)
+ {
+- if (bs[l].dtype == DATA_TYPE_BODY)
++ if (bs[l].dtype == CF_DATA_TYPE_BODY)
+ {
+ return true;
+ }
+@@ -3151,11 +3151,11 @@ static SyntaxTypeMatch CheckSelection(const char *type, const char *name, const
+ {
+ if (strcmp(lval, bs[l].lval) == 0)
+ {
+- if (bs[l].dtype == DATA_TYPE_BODY)
++ if (bs[l].dtype == CF_DATA_TYPE_BODY)
+ {
+ return SYNTAX_TYPE_MATCH_OK;
+ }
+- else if (bs[l].dtype == DATA_TYPE_BUNDLE)
++ else if (bs[l].dtype == CF_DATA_TYPE_BUNDLE)
+ {
+ return SYNTAX_TYPE_MATCH_OK;
+ }
+@@ -3190,7 +3190,7 @@ static SyntaxTypeMatch CheckSelection(const char *type, const char *name, const
+
+ for (int l = 0; bs[l].lval != NULL; l++)
+ {
+- if (bs[l].dtype == DATA_TYPE_BODY)
++ if (bs[l].dtype == CF_DATA_TYPE_BODY)
+ {
+ const ConstraintSyntax *bs2 = bs[l].range.body_type_syntax->constraints;
+
+@@ -3199,7 +3199,7 @@ static SyntaxTypeMatch CheckSelection(const char *type, const char *name, const
+ continue;
+ }
+
+- for (int k = 0; bs2[k].dtype != DATA_TYPE_NONE; k++)
++ for (int k = 0; bs2[k].dtype != CF_DATA_TYPE_NONE; k++)
+ {
+ /* Either module defined or common */
+
+@@ -3249,8 +3249,8 @@ static SyntaxTypeMatch CheckConstraint(const char *type, const char *lval, Rval
+
+ /* For bodies and bundles definitions can be elsewhere, so
+ they are checked in PolicyCheckRunnable(). */
+- if (bs[l].dtype != DATA_TYPE_BODY &&
+- bs[l].dtype != DATA_TYPE_BUNDLE)
++ if (bs[l].dtype != CF_DATA_TYPE_BODY &&
++ bs[l].dtype != CF_DATA_TYPE_BUNDLE)
+ {
+ return CheckConstraintTypeMatch(lval, rval, bs[l].dtype, bs[l].range.validation_string, 0);
+ }
+diff --git a/libpromises/cf3parse.y b/libpromises/cf3parse.y
+index 24c4f55..98aa36c 100644
+--- a/libpromises/cf3parse.y
++++ b/libpromises/cf3parse.y
+@@ -1279,7 +1279,7 @@ static bool LvalWantsBody(char *stype, char *lval)
+ {
+ if (strcmp(bs[l].lval, lval) == 0)
+ {
+- if (bs[l].dtype == DATA_TYPE_BODY)
++ if (bs[l].dtype == CF_DATA_TYPE_BODY)
+ {
+ return true;
+ }
+@@ -1310,11 +1310,11 @@ static SyntaxTypeMatch CheckSelection(const char *type, const char *name, const
+ {
+ if (strcmp(lval, bs[l].lval) == 0)
+ {
+- if (bs[l].dtype == DATA_TYPE_BODY)
++ if (bs[l].dtype == CF_DATA_TYPE_BODY)
+ {
+ return SYNTAX_TYPE_MATCH_OK;
+ }
+- else if (bs[l].dtype == DATA_TYPE_BUNDLE)
++ else if (bs[l].dtype == CF_DATA_TYPE_BUNDLE)
+ {
+ return SYNTAX_TYPE_MATCH_OK;
+ }
+@@ -1349,7 +1349,7 @@ static SyntaxTypeMatch CheckSelection(const char *type, const char *name, const
+
+ for (int l = 0; bs[l].lval != NULL; l++)
+ {
+- if (bs[l].dtype == DATA_TYPE_BODY)
++ if (bs[l].dtype == CF_DATA_TYPE_BODY)
+ {
+ const ConstraintSyntax *bs2 = bs[l].range.body_type_syntax->constraints;
+
+@@ -1358,7 +1358,7 @@ static SyntaxTypeMatch CheckSelection(const char *type, const char *name, const
+ continue;
+ }
+
+- for (int k = 0; bs2[k].dtype != DATA_TYPE_NONE; k++)
++ for (int k = 0; bs2[k].dtype != CF_DATA_TYPE_NONE; k++)
+ {
+ /* Either module defined or common */
+
+@@ -1408,8 +1408,8 @@ static SyntaxTypeMatch CheckConstraint(const char *type, const char *lval, Rval
+
+ /* For bodies and bundles definitions can be elsewhere, so
+ they are checked in PolicyCheckRunnable(). */
+- if (bs[l].dtype != DATA_TYPE_BODY &&
+- bs[l].dtype != DATA_TYPE_BUNDLE)
++ if (bs[l].dtype != CF_DATA_TYPE_BODY &&
++ bs[l].dtype != CF_DATA_TYPE_BUNDLE)
+ {
+ return CheckConstraintTypeMatch(lval, rval, bs[l].dtype, bs[l].range.validation_string, 0);
+ }
+diff --git a/libpromises/conversion.c b/libpromises/conversion.c
+index 04c22b7..764556e 100644
+--- a/libpromises/conversion.c
++++ b/libpromises/conversion.c
+@@ -274,27 +274,27 @@ FileComparator FileComparatorFromString(const char *s)
+
+ static const char *datatype_strings[] =
+ {
+- [DATA_TYPE_STRING] = "string",
+- [DATA_TYPE_INT] = "int",
+- [DATA_TYPE_REAL] = "real",
+- [DATA_TYPE_STRING_LIST] = "slist",
+- [DATA_TYPE_INT_LIST] = "ilist",
+- [DATA_TYPE_REAL_LIST] = "rlist",
+- [DATA_TYPE_OPTION] = "option",
+- [DATA_TYPE_OPTION_LIST] = "olist",
+- [DATA_TYPE_BODY] = "body",
+- [DATA_TYPE_BUNDLE] = "bundle",
+- [DATA_TYPE_CONTEXT] = "context",
+- [DATA_TYPE_CONTEXT_LIST] = "clist",
+- [DATA_TYPE_INT_RANGE] = "irange",
+- [DATA_TYPE_REAL_RANGE] = "rrange",
+- [DATA_TYPE_COUNTER] = "counter",
+- [DATA_TYPE_NONE] = "none"
++ [CF_DATA_TYPE_STRING] = "string",
++ [CF_DATA_TYPE_INT] = "int",
++ [CF_DATA_TYPE_REAL] = "real",
++ [CF_DATA_TYPE_STRING_LIST] = "slist",
++ [CF_DATA_TYPE_INT_LIST] = "ilist",
++ [CF_DATA_TYPE_REAL_LIST] = "rlist",
++ [CF_DATA_TYPE_OPTION] = "option",
++ [CF_DATA_TYPE_OPTION_LIST] = "olist",
++ [CF_DATA_TYPE_BODY] = "body",
++ [CF_DATA_TYPE_BUNDLE] = "bundle",
++ [CF_DATA_TYPE_CONTEXT] = "context",
++ [CF_DATA_TYPE_CONTEXT_LIST] = "clist",
++ [CF_DATA_TYPE_INT_RANGE] = "irange",
++ [CF_DATA_TYPE_REAL_RANGE] = "rrange",
++ [CF_DATA_TYPE_COUNTER] = "counter",
++ [CF_DATA_TYPE_NONE] = "none"
+ };
+
+ DataType DataTypeFromString(const char *name)
+ {
+- for (int i = 0; i < DATA_TYPE_NONE; i++)
++ for (int i = 0; i < CF_DATA_TYPE_NONE; i++)
+ {
+ if (strcmp(datatype_strings[i], name) == 0)
+ {
+@@ -302,12 +302,12 @@ DataType DataTypeFromString(const char *name)
+ }
+ }
+
+- return DATA_TYPE_NONE;
++ return CF_DATA_TYPE_NONE;
+ }
+
+ const char *DataTypeToString(DataType type)
+ {
+- assert(type < DATA_TYPE_NONE);
++ assert(type < CF_DATA_TYPE_NONE);
+ return datatype_strings[type];
+ }
+
+@@ -323,7 +323,7 @@ DataType ConstraintSyntaxGetDataType(const ConstraintSyntax *body_syntax, const
+ }
+ }
+
+- return DATA_TYPE_NONE;
++ return CF_DATA_TYPE_NONE;
+ }
+
+ /****************************************************************************/
+diff --git a/libpromises/env_context.c b/libpromises/env_context.c
+index db85f53..4203cee 100644
+--- a/libpromises/env_context.c
++++ b/libpromises/env_context.c
+@@ -1194,7 +1194,7 @@ char *EvalContextStackPath(const EvalContext *ctx)
+
+ bool EvalContextVariablePut(EvalContext *ctx, VarRef lval, Rval rval, DataType type)
+ {
+- assert(type != DATA_TYPE_NONE);
++ assert(type != CF_DATA_TYPE_NONE);
+
+ if (lval.lval == NULL || lval.scope == NULL)
+ {
+@@ -1320,7 +1320,7 @@ bool EvalContextVariableGet(const EvalContext *ctx, VarRef lval, Rval *rval_out,
+ }
+ if (type_out)
+ {
+- *type_out = DATA_TYPE_NONE;
++ *type_out = CF_DATA_TYPE_NONE;
+ }
+ return false;
+ }
+@@ -1345,7 +1345,7 @@ bool EvalContextVariableGet(const EvalContext *ctx, VarRef lval, Rval *rval_out,
+ }
+ if (type_out)
+ {
+- *type_out = DATA_TYPE_NONE;
++ *type_out = CF_DATA_TYPE_NONE;
+ }
+ return false;
+ }
+@@ -1386,7 +1386,7 @@ bool EvalContextVariableGet(const EvalContext *ctx, VarRef lval, Rval *rval_out,
+ }
+ if (type_out)
+ {
+- *type_out = DATA_TYPE_NONE;
++ *type_out = CF_DATA_TYPE_NONE;
+ }
+ return false;
+ }
+@@ -1400,7 +1400,7 @@ bool EvalContextVariableGet(const EvalContext *ctx, VarRef lval, Rval *rval_out,
+ }
+ if (type_out)
+ {
+- *type_out = DATA_TYPE_NONE;
++ *type_out = CF_DATA_TYPE_NONE;
+ }
+ return false;
+ }
+@@ -1412,7 +1412,7 @@ bool EvalContextVariableGet(const EvalContext *ctx, VarRef lval, Rval *rval_out,
+ if (type_out)
+ {
+ *type_out = assoc->dtype;
+- assert(*type_out != DATA_TYPE_NONE);
++ assert(*type_out != CF_DATA_TYPE_NONE);
+ }
+
+ return true;
+diff --git a/libpromises/evalfunction.c b/libpromises/evalfunction.c
+index a1773dc..1d314cb 100644
+--- a/libpromises/evalfunction.c
++++ b/libpromises/evalfunction.c
+@@ -227,7 +227,7 @@ static FnCallResult FnCallAnd(EvalContext *ctx, FnCall *fp, Rlist *finalargs)
+ /* We need to check all the arguments, ArgTemplate does not check varadic functions */
+ for (arg = finalargs; arg; arg = arg->next)
+ {
+- SyntaxTypeMatch err = CheckConstraintTypeMatch(id, (Rval) {arg->item, arg->type}, DATA_TYPE_STRING, "", 1);
++ SyntaxTypeMatch err = CheckConstraintTypeMatch(id, (Rval) {arg->item, arg->type}, CF_DATA_TYPE_STRING, "", 1);
+ if (err != SYNTAX_TYPE_MATCH_OK && err != SYNTAX_TYPE_MATCH_ERROR_UNEXPANDED)
+ {
+ FatalError(ctx, "in %s: %s", id, SyntaxTypeMatchToString(err));
+@@ -634,7 +634,7 @@ static FnCallResult FnCallConcat(EvalContext *ctx, FnCall *fp, Rlist *finalargs)
+ /* We need to check all the arguments, ArgTemplate does not check varadic functions */
+ for (arg = finalargs; arg; arg = arg->next)
+ {
+- SyntaxTypeMatch err = CheckConstraintTypeMatch(id, (Rval) {arg->item, arg->type}, DATA_TYPE_STRING, "", 1);
++ SyntaxTypeMatch err = CheckConstraintTypeMatch(id, (Rval) {arg->item, arg->type}, CF_DATA_TYPE_STRING, "", 1);
+ if (err != SYNTAX_TYPE_MATCH_OK && err != SYNTAX_TYPE_MATCH_ERROR_UNEXPANDED)
+ {
+ FatalError(ctx, "in %s: %s", id, SyntaxTypeMatchToString(err));
+@@ -683,7 +683,7 @@ static FnCallResult FnCallIfElse(EvalContext *ctx, FnCall *fp, Rlist *finalargs)
+ /* We need to check all the arguments, ArgTemplate does not check varadic functions */
+ for (arg = finalargs; arg; arg = arg->next)
+ {
+- SyntaxTypeMatch err = CheckConstraintTypeMatch(id, (Rval) {arg->item, arg->type}, DATA_TYPE_STRING, "", 1);
++ SyntaxTypeMatch err = CheckConstraintTypeMatch(id, (Rval) {arg->item, arg->type}, CF_DATA_TYPE_STRING, "", 1);
+ if (err != SYNTAX_TYPE_MATCH_OK && err != SYNTAX_TYPE_MATCH_ERROR_UNEXPANDED)
+ {
+ FatalError(ctx, "in %s: %s", id, SyntaxTypeMatchToString(err));
+@@ -1610,7 +1610,7 @@ static FnCallResult FnCallGetFields(EvalContext *ctx, FnCall *fp, Rlist *finalar
+ for (rp = newlist; rp != NULL; rp = rp->next)
+ {
+ snprintf(name, CF_MAXVARSIZE - 1, "%s[%d]", array_lval, vcount);
+- EvalContextVariablePut(ctx, (VarRef) { NULL, PromiseGetBundle(fp->caller)->name, name }, (Rval) { RlistScalarValue(rp), RVAL_TYPE_SCALAR }, DATA_TYPE_STRING);
++ EvalContextVariablePut(ctx, (VarRef) { NULL, PromiseGetBundle(fp->caller)->name, name }, (Rval) { RlistScalarValue(rp), RVAL_TYPE_SCALAR }, CF_DATA_TYPE_STRING);
+ Log(LOG_LEVEL_VERBOSE, "getfields: defining '%s' => '%s'", name, RlistScalarValue(rp));
+ vcount++;
+ }
+@@ -1794,12 +1794,12 @@ static FnCallResult FnCallMapArray(EvalContext *ctx, FnCall *fp, Rlist *finalarg
+
+ if (strlen(index) > 0)
+ {
+- ScopeNewSpecial(ctx, "this", "k", index, DATA_TYPE_STRING);
++ ScopeNewSpecial(ctx, "this", "k", index, CF_DATA_TYPE_STRING);
+
+ switch (assoc->rval.type)
+ {
+ case RVAL_TYPE_SCALAR:
+- ScopeNewSpecial(ctx, "this", "v", assoc->rval.item, DATA_TYPE_STRING);
++ ScopeNewSpecial(ctx, "this", "v", assoc->rval.item, CF_DATA_TYPE_STRING);
+ ExpandScalar(ctx, PromiseGetBundle(fp->caller)->name, map, expbuf);
+
+ if (strstr(expbuf, "$(this.k)") || strstr(expbuf, "${this.k}") ||
+@@ -1818,7 +1818,7 @@ static FnCallResult FnCallMapArray(EvalContext *ctx, FnCall *fp, Rlist *finalarg
+ case RVAL_TYPE_LIST:
+ for (rp = assoc->rval.item; rp != NULL; rp = rp->next)
+ {
+- ScopeNewSpecial(ctx, "this", "v", rp->item, DATA_TYPE_STRING);
++ ScopeNewSpecial(ctx, "this", "v", rp->item, CF_DATA_TYPE_STRING);
+ ExpandScalar(ctx, PromiseGetBundle(fp->caller)->name, map, expbuf);
+
+ if (strstr(expbuf, "$(this.k)") || strstr(expbuf, "${this.k}") ||
+@@ -1896,13 +1896,13 @@ static FnCallResult FnCallMapList(EvalContext *ctx, FnCall *fp, Rlist *finalargs
+ return (FnCallResult) { FNCALL_FAILURE };
+ }
+
+- retype = DATA_TYPE_NONE;
++ retype = CF_DATA_TYPE_NONE;
+ if (!EvalContextVariableGet(ctx, (VarRef) { NULL, scopeid, lval }, &rval, &retype))
+ {
+ return (FnCallResult) { FNCALL_FAILURE };
+ }
+
+- if (retype != DATA_TYPE_STRING_LIST && retype != DATA_TYPE_INT_LIST && retype != DATA_TYPE_REAL_LIST)
++ if (retype != CF_DATA_TYPE_STRING_LIST && retype != CF_DATA_TYPE_INT_LIST && retype != CF_DATA_TYPE_REAL_LIST)
+ {
+ return (FnCallResult) { FNCALL_FAILURE };
+ }
+@@ -1910,7 +1910,7 @@ static FnCallResult FnCallMapList(EvalContext *ctx, FnCall *fp, Rlist *finalargs
+ for (const Rlist *rp = RvalRlistValue(rval); rp != NULL; rp = rp->next)
+ {
+ const char *current_value = RlistScalarValue(rp);
+- ScopeNewSpecial(ctx, "this", "this", current_value, DATA_TYPE_STRING);
++ ScopeNewSpecial(ctx, "this", "this", current_value, CF_DATA_TYPE_STRING);
+
+ ExpandScalar(ctx, "this", map, expbuf);
+
+@@ -2050,7 +2050,7 @@ static FnCallResult FnCallSelectServers(EvalContext *ctx, FnCall *fp, Rlist *fin
+ {
+ Log(LOG_LEVEL_VERBOSE, "Host '%s' is alive and responding correctly", RlistScalarValue(rp));
+ snprintf(buffer, CF_MAXVARSIZE - 1, "%s[%d]", array_lval, count);
+- EvalContextVariablePut(ctx, (VarRef) { NULL, PromiseGetBundle(fp->caller)->name, buffer }, (Rval) { rp->item, RVAL_TYPE_SCALAR }, DATA_TYPE_STRING);
++ EvalContextVariablePut(ctx, (VarRef) { NULL, PromiseGetBundle(fp->caller)->name, buffer }, (Rval) { rp->item, RVAL_TYPE_SCALAR }, CF_DATA_TYPE_STRING);
+ count++;
+ }
+ }
+@@ -2058,7 +2058,7 @@ static FnCallResult FnCallSelectServers(EvalContext *ctx, FnCall *fp, Rlist *fin
+ {
+ Log(LOG_LEVEL_VERBOSE, "Host '%s' is alive", RlistScalarValue(rp));
+ snprintf(buffer, CF_MAXVARSIZE - 1, "%s[%d]", array_lval, count);
+- EvalContextVariablePut(ctx, (VarRef) { NULL, PromiseGetBundle(fp->caller)->name, buffer }, (Rval) { rp->item, RVAL_TYPE_SCALAR }, DATA_TYPE_STRING);
++ EvalContextVariablePut(ctx, (VarRef) { NULL, PromiseGetBundle(fp->caller)->name, buffer }, (Rval) { rp->item, RVAL_TYPE_SCALAR }, CF_DATA_TYPE_STRING);
+
+ if (IsDefinedClass(ctx, CanonifyName(rp->item), PromiseGetNamespace(fp->caller)))
+ {
+@@ -2091,14 +2091,14 @@ static FnCallResult FnCallShuffle(EvalContext *ctx, FnCall *fp, Rlist *finalargs
+ const char *seed_str = RlistScalarValue(finalargs->next);
+
+ Rval list_rval;
+- DataType list_dtype = DATA_TYPE_NONE;
++ DataType list_dtype = CF_DATA_TYPE_NONE;
+
+ if (!GetListReferenceArgument(ctx, fp, RlistScalarValue(finalargs), &list_rval, &list_dtype))
+ {
+ return (FnCallResult) { FNCALL_FAILURE };
+ }
+
+- if (list_dtype != DATA_TYPE_STRING_LIST)
++ if (list_dtype != CF_DATA_TYPE_STRING_LIST)
+ {
+ Log(LOG_LEVEL_ERR, "Function '%s' expected a variable that resolves to a string list, got '%s'", fp->name, DataTypeToString(list_dtype));
+ return (FnCallResult) { FNCALL_FAILURE };
+@@ -2716,7 +2716,7 @@ static FnCallResult FnCallSort(EvalContext *ctx, FnCall *fp, Rlist *finalargs)
+ {
+ VarRef list_var_lval = VarRefParseFromBundle(RlistScalarValue(finalargs), PromiseGetBundle(fp->caller));
+ Rval list_var_rval;
+- DataType list_var_dtype = DATA_TYPE_NONE;
++ DataType list_var_dtype = CF_DATA_TYPE_NONE;
+
+ if (!EvalContextVariableGet(ctx, list_var_lval, &list_var_rval, &list_var_dtype))
+ {
+@@ -2726,7 +2726,7 @@ static FnCallResult FnCallSort(EvalContext *ctx, FnCall *fp, Rlist *finalargs)
+
+ VarRefDestroy(list_var_lval);
+
+- if (list_var_dtype != DATA_TYPE_STRING_LIST)
++ if (list_var_dtype != CF_DATA_TYPE_STRING_LIST)
+ {
+ return (FnCallResult) { FNCALL_FAILURE };
+ }
+@@ -2747,7 +2747,7 @@ static FnCallResult FnCallFormat(EvalContext *ctx, FnCall *fp, Rlist *finalargs)
+ /* We need to check all the arguments, ArgTemplate does not check varadic functions */
+ for (const Rlist *arg = finalargs; arg; arg = arg->next)
+ {
+- SyntaxTypeMatch err = CheckConstraintTypeMatch(id, (Rval) {arg->item, arg->type}, DATA_TYPE_STRING, "", 1);
++ SyntaxTypeMatch err = CheckConstraintTypeMatch(id, (Rval) {arg->item, arg->type}, CF_DATA_TYPE_STRING, "", 1);
+ if (err != SYNTAX_TYPE_MATCH_OK && err != SYNTAX_TYPE_MATCH_ERROR_UNEXPANDED)
+ {
+ FatalError(ctx, "in %s: %s", id, SyntaxTypeMatchToString(err));
+@@ -3550,7 +3550,7 @@ static FnCallResult FnCallRegExtract(EvalContext *ctx, FnCall *fp, Rlist *finala
+ else
+ {
+ snprintf(var, CF_MAXVARSIZE - 1, "%s[%s]", arrayname, assoc->lval);
+- EvalContextVariablePut(ctx, (VarRef) { NULL, PromiseGetBundle(fp->caller)->name, var }, assoc->rval, DATA_TYPE_STRING);
++ EvalContextVariablePut(ctx, (VarRef) { NULL, PromiseGetBundle(fp->caller)->name, var }, assoc->rval, CF_DATA_TYPE_STRING);
+ }
+ }
+ }
+@@ -3760,14 +3760,14 @@ static FnCallResult FnCallRRange(EvalContext *ctx, FnCall *fp, Rlist *finalargs)
+ static FnCallResult FnCallReverse(EvalContext *ctx, FnCall *fp, Rlist *finalargs)
+ {
+ Rval list_rval;
+- DataType list_dtype = DATA_TYPE_NONE;
++ DataType list_dtype = CF_DATA_TYPE_NONE;
+
+ if (!GetListReferenceArgument(ctx, fp, RlistScalarValue(finalargs), &list_rval, &list_dtype))
+ {
+ return (FnCallResult) { FNCALL_FAILURE };
+ }
+
+- if (list_dtype != DATA_TYPE_STRING_LIST)
++ if (list_dtype != CF_DATA_TYPE_STRING_LIST)
+ {
+ Log(LOG_LEVEL_ERR, "Function '%s' expected a variable that resolves to a string list, got '%s'", fp->name, DataTypeToString(list_dtype));
+ return (FnCallResult) { FNCALL_FAILURE };
+@@ -3837,7 +3837,7 @@ static FnCallResult FnCallOr(EvalContext *ctx, FnCall *fp, Rlist *finalargs)
+ /* We need to check all the arguments, ArgTemplate does not check varadic functions */
+ for (arg = finalargs; arg; arg = arg->next)
+ {
+- SyntaxTypeMatch err = CheckConstraintTypeMatch(id, (Rval) {arg->item, arg->type}, DATA_TYPE_STRING, "", 1);
++ SyntaxTypeMatch err = CheckConstraintTypeMatch(id, (Rval) {arg->item, arg->type}, CF_DATA_TYPE_STRING, "", 1);
+ if (err != SYNTAX_TYPE_MATCH_OK && err != SYNTAX_TYPE_MATCH_ERROR_UNEXPANDED)
+ {
+ FatalError(ctx, "in %s: %s", id, SyntaxTypeMatchToString(err));
+@@ -4117,10 +4117,10 @@ static FnCallResult ReadList(EvalContext *ctx, FnCall *fp, Rlist *finalargs, Dat
+
+ switch (type)
+ {
+- case DATA_TYPE_STRING:
++ case CF_DATA_TYPE_STRING:
+ break;
+
+- case DATA_TYPE_INT:
++ case CF_DATA_TYPE_INT:
+ for (rp = newlist; rp != NULL; rp = rp->next)
+ {
+ if (IntFromString(RlistScalarValue(rp)) == CF_NOINT)
+@@ -4132,7 +4132,7 @@ static FnCallResult ReadList(EvalContext *ctx, FnCall *fp, Rlist *finalargs, Dat
+ }
+ break;
+
+- case DATA_TYPE_REAL:
++ case CF_DATA_TYPE_REAL:
+ for (rp = newlist; rp != NULL; rp = rp->next)
+ {
+ double real_value = 0;
+@@ -4164,17 +4164,17 @@ static FnCallResult ReadList(EvalContext *ctx, FnCall *fp, Rlist *finalargs, Dat
+
+ static FnCallResult FnCallReadStringList(EvalContext *ctx, FnCall *fp, Rlist *args)
+ {
+- return ReadList(ctx, fp, args, DATA_TYPE_STRING);
++ return ReadList(ctx, fp, args, CF_DATA_TYPE_STRING);
+ }
+
+ static FnCallResult FnCallReadIntList(EvalContext *ctx, FnCall *fp, Rlist *args)
+ {
+- return ReadList(ctx, fp, args, DATA_TYPE_INT);
++ return ReadList(ctx, fp, args, CF_DATA_TYPE_INT);
+ }
+
+ static FnCallResult FnCallReadRealList(EvalContext *ctx, FnCall *fp, Rlist *args)
+ {
+- return ReadList(ctx, fp, args, DATA_TYPE_REAL);
++ return ReadList(ctx, fp, args, CF_DATA_TYPE_REAL);
+ }
+
+ /*********************************************************************/
+@@ -4229,9 +4229,9 @@ static FnCallResult ReadArray(EvalContext *ctx, FnCall *fp, Rlist *finalargs, Da
+
+ switch (type)
+ {
+- case DATA_TYPE_STRING:
+- case DATA_TYPE_INT:
+- case DATA_TYPE_REAL:
++ case CF_DATA_TYPE_STRING:
++ case CF_DATA_TYPE_INT:
++ case CF_DATA_TYPE_REAL:
+ break;
+
+ default:
+@@ -4250,28 +4250,28 @@ static FnCallResult ReadArray(EvalContext *ctx, FnCall *fp, Rlist *finalargs, Da
+
+ static FnCallResult FnCallReadStringArray(EvalContext *ctx, FnCall *fp, Rlist *args)
+ {
+- return ReadArray(ctx, fp, args, DATA_TYPE_STRING, false);
++ return ReadArray(ctx, fp, args, CF_DATA_TYPE_STRING, false);
+ }
+
+ /*********************************************************************/
+
+ static FnCallResult FnCallReadStringArrayIndex(EvalContext *ctx, FnCall *fp, Rlist *args)
+ {
+- return ReadArray(ctx, fp, args, DATA_TYPE_STRING, true);
++ return ReadArray(ctx, fp, args, CF_DATA_TYPE_STRING, true);
+ }
+
+ /*********************************************************************/
+
+ static FnCallResult FnCallReadIntArray(EvalContext *ctx, FnCall *fp, Rlist *args)
+ {
+- return ReadArray(ctx, fp, args, DATA_TYPE_INT, false);
++ return ReadArray(ctx, fp, args, CF_DATA_TYPE_INT, false);
+ }
+
+ /*********************************************************************/
+
+ static FnCallResult FnCallReadRealArray(EvalContext *ctx, FnCall *fp, Rlist *args)
+ {
+- return ReadArray(ctx, fp, args, DATA_TYPE_REAL, false);
++ return ReadArray(ctx, fp, args, CF_DATA_TYPE_REAL, false);
+ }
+
+ /*********************************************************************/
+@@ -4328,9 +4328,9 @@ static FnCallResult ParseArray(EvalContext *ctx, FnCall *fp, Rlist *finalargs, D
+
+ switch (type)
+ {
+- case DATA_TYPE_STRING:
+- case DATA_TYPE_INT:
+- case DATA_TYPE_REAL:
++ case CF_DATA_TYPE_STRING:
++ case CF_DATA_TYPE_INT:
++ case CF_DATA_TYPE_REAL:
+ break;
+
+ default:
+@@ -4349,28 +4349,28 @@ static FnCallResult ParseArray(EvalContext *ctx, FnCall *fp, Rlist *finalargs, D
+
+ static FnCallResult FnCallParseStringArray(EvalContext *ctx, FnCall *fp, Rlist *args)
+ {
+- return ParseArray(ctx, fp, args, DATA_TYPE_STRING, false);
++ return ParseArray(ctx, fp, args, CF_DATA_TYPE_STRING, false);
+ }
+
+ /*********************************************************************/
+
+ static FnCallResult FnCallParseStringArrayIndex(EvalContext *ctx, FnCall *fp, Rlist *args)
+ {
+- return ParseArray(ctx, fp, args, DATA_TYPE_STRING, true);
++ return ParseArray(ctx, fp, args, CF_DATA_TYPE_STRING, true);
+ }
+
+ /*********************************************************************/
+
+ static FnCallResult FnCallParseIntArray(EvalContext *ctx, FnCall *fp, Rlist *args)
+ {
+- return ParseArray(ctx, fp, args, DATA_TYPE_INT, false);
++ return ParseArray(ctx, fp, args, CF_DATA_TYPE_INT, false);
+ }
+
+ /*********************************************************************/
+
+ static FnCallResult FnCallParseRealArray(EvalContext *ctx, FnCall *fp, Rlist *args)
+ {
+- return ParseArray(ctx, fp, args, DATA_TYPE_REAL, false);
++ return ParseArray(ctx, fp, args, CF_DATA_TYPE_REAL, false);
+ }
+
+ /*********************************************************************/
+@@ -4855,16 +4855,16 @@ static int BuildLineArray(EvalContext *ctx, const Bundle *bundle, char *array_lv
+
+ switch (type)
+ {
+- case DATA_TYPE_STRING:
++ case CF_DATA_TYPE_STRING:
+ strncpy(this_rval, rp->item, CF_MAXVARSIZE - 1);
+ break;
+
+- case DATA_TYPE_INT:
++ case CF_DATA_TYPE_INT:
+ ival = IntFromString(rp->item);
+ snprintf(this_rval, CF_MAXVARSIZE, "%d", (int) ival);
+ break;
+
+- case DATA_TYPE_REAL:
++ case CF_DATA_TYPE_REAL:
+ {
+ double real_value = 0;
+ if (!DoubleFromString(rp->item, &real_value))
+@@ -5029,7 +5029,7 @@ void ModuleProtocol(EvalContext *ctx, char *command, char *line, int print, cons
+ if (CheckID(name))
+ {
+ Log(LOG_LEVEL_VERBOSE, "Defined variable '%s' in context '%s' with value '%s'", name, context, content);
+- EvalContextVariablePut(ctx, (VarRef) { NULL, context, name }, (Rval) { content, RVAL_TYPE_SCALAR }, DATA_TYPE_STRING);
++ EvalContextVariablePut(ctx, (VarRef) { NULL, context, name }, (Rval) { content, RVAL_TYPE_SCALAR }, CF_DATA_TYPE_STRING);
+ }
+ break;
+
+@@ -5044,7 +5044,7 @@ void ModuleProtocol(EvalContext *ctx, char *command, char *line, int print, cons
+ list = RlistParseString(content);
+ Log(LOG_LEVEL_VERBOSE, "Defined variable '%s' in context '%s' with value '%s'", name, context, content);
+
+- EvalContextVariablePut(ctx, (VarRef) { NULL, context, name }, (Rval) { list, RVAL_TYPE_LIST }, DATA_TYPE_STRING_LIST);
++ EvalContextVariablePut(ctx, (VarRef) { NULL, context, name }, (Rval) { list, RVAL_TYPE_LIST }, CF_DATA_TYPE_STRING_LIST);
+ }
+ break;
+
+@@ -5096,728 +5096,728 @@ FnCallResult CallFunction(EvalContext *ctx, const FnCallType *function, FnCall *
+
+ FnCallArg ACCESSEDBEFORE_ARGS[] =
+ {
+- {CF_ABSPATHRANGE, DATA_TYPE_STRING, "Newer filename"},
+- {CF_ABSPATHRANGE, DATA_TYPE_STRING, "Older filename"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ABSPATHRANGE, CF_DATA_TYPE_STRING, "Newer filename"},
++ {CF_ABSPATHRANGE, CF_DATA_TYPE_STRING, "Older filename"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg ACCUM_ARGS[] =
+ {
+- {"0,1000", DATA_TYPE_INT, "Years"},
+- {"0,1000", DATA_TYPE_INT, "Months"},
+- {"0,1000", DATA_TYPE_INT, "Days"},
+- {"0,1000", DATA_TYPE_INT, "Hours"},
+- {"0,1000", DATA_TYPE_INT, "Minutes"},
+- {"0,40000", DATA_TYPE_INT, "Seconds"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {"0,1000", CF_DATA_TYPE_INT, "Years"},
++ {"0,1000", CF_DATA_TYPE_INT, "Months"},
++ {"0,1000", CF_DATA_TYPE_INT, "Days"},
++ {"0,1000", CF_DATA_TYPE_INT, "Hours"},
++ {"0,1000", CF_DATA_TYPE_INT, "Minutes"},
++ {"0,40000", CF_DATA_TYPE_INT, "Seconds"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg AND_ARGS[] =
+ {
+- {NULL, DATA_TYPE_NONE, NULL}
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg AGO_ARGS[] =
+ {
+- {"0,1000", DATA_TYPE_INT, "Years"},
+- {"0,1000", DATA_TYPE_INT, "Months"},
+- {"0,1000", DATA_TYPE_INT, "Days"},
+- {"0,1000", DATA_TYPE_INT, "Hours"},
+- {"0,1000", DATA_TYPE_INT, "Minutes"},
+- {"0,40000", DATA_TYPE_INT, "Seconds"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {"0,1000", CF_DATA_TYPE_INT, "Years"},
++ {"0,1000", CF_DATA_TYPE_INT, "Months"},
++ {"0,1000", CF_DATA_TYPE_INT, "Days"},
++ {"0,1000", CF_DATA_TYPE_INT, "Hours"},
++ {"0,1000", CF_DATA_TYPE_INT, "Minutes"},
++ {"0,40000", CF_DATA_TYPE_INT, "Seconds"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg LATERTHAN_ARGS[] =
+ {
+- {"0,1000", DATA_TYPE_INT, "Years"},
+- {"0,1000", DATA_TYPE_INT, "Months"},
+- {"0,1000", DATA_TYPE_INT, "Days"},
+- {"0,1000", DATA_TYPE_INT, "Hours"},
+- {"0,1000", DATA_TYPE_INT, "Minutes"},
+- {"0,40000", DATA_TYPE_INT, "Seconds"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {"0,1000", CF_DATA_TYPE_INT, "Years"},
++ {"0,1000", CF_DATA_TYPE_INT, "Months"},
++ {"0,1000", CF_DATA_TYPE_INT, "Days"},
++ {"0,1000", CF_DATA_TYPE_INT, "Hours"},
++ {"0,1000", CF_DATA_TYPE_INT, "Minutes"},
++ {"0,40000", CF_DATA_TYPE_INT, "Seconds"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg CANONIFY_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "String containing non-identifier characters"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "String containing non-identifier characters"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg CHANGEDBEFORE_ARGS[] =
+ {
+- {CF_ABSPATHRANGE, DATA_TYPE_STRING, "Newer filename"},
+- {CF_ABSPATHRANGE, DATA_TYPE_STRING, "Older filename"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ABSPATHRANGE, CF_DATA_TYPE_STRING, "Newer filename"},
++ {CF_ABSPATHRANGE, CF_DATA_TYPE_STRING, "Older filename"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg CLASSIFY_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Input string"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Input string"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg CLASSMATCH_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regular expression"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regular expression"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg CONCAT_ARGS[] =
+ {
+- {NULL, DATA_TYPE_NONE, NULL}
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg COUNTCLASSESMATCHING_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regular expression"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regular expression"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg COUNTLINESMATCHING_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regular expression"},
+- {CF_ABSPATHRANGE, DATA_TYPE_STRING, "Filename"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regular expression"},
++ {CF_ABSPATHRANGE, CF_DATA_TYPE_STRING, "Filename"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg DIRNAME_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "File path"},
+- {NULL, DATA_TYPE_NONE, NULL},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "File path"},
++ {NULL, CF_DATA_TYPE_NONE, NULL},
+ };
+
+ FnCallArg DISKFREE_ARGS[] =
+ {
+- {CF_ABSPATHRANGE, DATA_TYPE_STRING, "File system directory"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ABSPATHRANGE, CF_DATA_TYPE_STRING, "File system directory"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg ESCAPE_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "IP address or string to escape"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "IP address or string to escape"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg EXECRESULT_ARGS[] =
+ {
+- {CF_PATHRANGE, DATA_TYPE_STRING, "Fully qualified command path"},
+- {"useshell,noshell,powershell", DATA_TYPE_OPTION, "Shell encapsulation option"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_PATHRANGE, CF_DATA_TYPE_STRING, "Fully qualified command path"},
++ {"useshell,noshell,powershell", CF_DATA_TYPE_OPTION, "Shell encapsulation option"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ // fileexists, isdir,isplain,islink
+
+ FnCallArg FILESTAT_ARGS[] =
+ {
+- {CF_ABSPATHRANGE, DATA_TYPE_STRING, "File object name"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ABSPATHRANGE, CF_DATA_TYPE_STRING, "File object name"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg FILESTAT_DETAIL_ARGS[] =
+ {
+- {CF_ABSPATHRANGE, DATA_TYPE_STRING, "File object name"},
+- {"size,gid,uid,ino,nlink,ctime,atime,mtime,mode,modeoct,permstr,permoct,type,devno,dev_minor,dev_major,basename,dirname", DATA_TYPE_OPTION, "stat() field to get"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ABSPATHRANGE, CF_DATA_TYPE_STRING, "File object name"},
++ {"size,gid,uid,ino,nlink,ctime,atime,mtime,mode,modeoct,permstr,permoct,type,devno,dev_minor,dev_major,basename,dirname", CF_DATA_TYPE_OPTION, "stat() field to get"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg FILESEXIST_ARGS[] =
+ {
+- {CF_NAKEDLRANGE, DATA_TYPE_STRING, "Array identifier containing list"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_NAKEDLRANGE, CF_DATA_TYPE_STRING, "Array identifier containing list"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg FILTER_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regular expression or string"},
+- {CF_IDRANGE, DATA_TYPE_STRING, "CFEngine list identifier"},
+- {CF_BOOL, DATA_TYPE_OPTION, "Match as regular expression if true, as exact string otherwise"},
+- {CF_BOOL, DATA_TYPE_OPTION, "Invert matches"},
+- {CF_VALRANGE, DATA_TYPE_INT, "Maximum number of matches to return"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regular expression or string"},
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "CFEngine list identifier"},
++ {CF_BOOL, CF_DATA_TYPE_OPTION, "Match as regular expression if true, as exact string otherwise"},
++ {CF_BOOL, CF_DATA_TYPE_OPTION, "Invert matches"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "Maximum number of matches to return"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg GETFIELDS_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regular expression to match line"},
+- {CF_ABSPATHRANGE, DATA_TYPE_STRING, "Filename to read"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regular expression to split fields"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Return array name"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regular expression to match line"},
++ {CF_ABSPATHRANGE, CF_DATA_TYPE_STRING, "Filename to read"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regular expression to split fields"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Return array name"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg GETINDICES_ARGS[] =
+ {
+- {CF_IDRANGE, DATA_TYPE_STRING, "CFEngine array identifier"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "CFEngine array identifier"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg GETUSERS_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Comma separated list of User names"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Comma separated list of UserID numbers"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Comma separated list of User names"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Comma separated list of UserID numbers"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg GETENV_ARGS[] =
+ {
+- {CF_IDRANGE, DATA_TYPE_STRING, "Name of environment variable"},
+- {CF_VALRANGE, DATA_TYPE_INT, "Maximum number of characters to read "},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "Name of environment variable"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "Maximum number of characters to read "},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg GETGID_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Group name in text"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Group name in text"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg GETUID_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "User name in text"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "User name in text"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg GREP_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regular expression"},
+- {CF_IDRANGE, DATA_TYPE_STRING, "CFEngine list identifier"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regular expression"},
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "CFEngine list identifier"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg GROUPEXISTS_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Group name or identifier"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Group name or identifier"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg HASH_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Input text"},
+- {"md5,sha1,sha256,sha512,sha384,crypt", DATA_TYPE_OPTION, "Hash or digest algorithm"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Input text"},
++ {"md5,sha1,sha256,sha512,sha384,crypt", CF_DATA_TYPE_OPTION, "Hash or digest algorithm"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg HASHMATCH_ARGS[] =
+ {
+- {CF_ABSPATHRANGE, DATA_TYPE_STRING, "Filename to hash"},
+- {"md5,sha1,crypt,cf_sha224,cf_sha256,cf_sha384,cf_sha512", DATA_TYPE_OPTION, "Hash or digest algorithm"},
+- {CF_IDRANGE, DATA_TYPE_STRING, "ASCII representation of hash for comparison"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ABSPATHRANGE, CF_DATA_TYPE_STRING, "Filename to hash"},
++ {"md5,sha1,crypt,cf_sha224,cf_sha256,cf_sha384,cf_sha512", CF_DATA_TYPE_OPTION, "Hash or digest algorithm"},
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "ASCII representation of hash for comparison"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg HOST2IP_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Host name in ascii"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Host name in ascii"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg IP2HOST_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "IP address (IPv4 or IPv6)"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "IP address (IPv4 or IPv6)"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg HOSTINNETGROUP_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Netgroup name"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Netgroup name"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg HOSTRANGE_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Hostname prefix"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Enumerated range"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Hostname prefix"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Enumerated range"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg HOSTSSEEN_ARGS[] =
+ {
+- {CF_VALRANGE, DATA_TYPE_INT, "Horizon since last seen in hours"},
+- {"lastseen,notseen", DATA_TYPE_OPTION, "Complements for selection policy"},
+- {"name,address", DATA_TYPE_OPTION, "Type of return value desired"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "Horizon since last seen in hours"},
++ {"lastseen,notseen", CF_DATA_TYPE_OPTION, "Complements for selection policy"},
++ {"name,address", CF_DATA_TYPE_OPTION, "Type of return value desired"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg HOSTSWITHCLASS_ARGS[] =
+ {
+- {"[a-zA-Z0-9_]+", DATA_TYPE_STRING, "Class name to look for"},
+- {"name,address", DATA_TYPE_OPTION, "Type of return value desired"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {"[a-zA-Z0-9_]+", CF_DATA_TYPE_STRING, "Class name to look for"},
++ {"name,address", CF_DATA_TYPE_OPTION, "Type of return value desired"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg IFELSE_ARGS[] =
+ {
+- {NULL, DATA_TYPE_NONE, NULL}
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg IPRANGE_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "IP address range syntax"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "IP address range syntax"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg IRANGE_ARGS[] =
+ {
+- {CF_INTRANGE, DATA_TYPE_INT, "Integer"},
+- {CF_INTRANGE, DATA_TYPE_INT, "Integer"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_INTRANGE, CF_DATA_TYPE_INT, "Integer"},
++ {CF_INTRANGE, CF_DATA_TYPE_INT, "Integer"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg ISGREATERTHAN_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Larger string or value"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Smaller string or value"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Larger string or value"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Smaller string or value"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg ISLESSTHAN_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Smaller string or value"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Larger string or value"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Smaller string or value"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Larger string or value"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg ISNEWERTHAN_ARGS[] =
+ {
+- {CF_ABSPATHRANGE, DATA_TYPE_STRING, "Newer file name"},
+- {CF_ABSPATHRANGE, DATA_TYPE_STRING, "Older file name"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ABSPATHRANGE, CF_DATA_TYPE_STRING, "Newer file name"},
++ {CF_ABSPATHRANGE, CF_DATA_TYPE_STRING, "Older file name"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg ISVARIABLE_ARGS[] =
+ {
+- {CF_IDRANGE, DATA_TYPE_STRING, "Variable identifier"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "Variable identifier"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg JOIN_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Join glue-string"},
+- {CF_IDRANGE, DATA_TYPE_STRING, "CFEngine list identifier"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Join glue-string"},
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "CFEngine list identifier"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg LASTNODE_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Input string"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Link separator, e.g. /,:"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Input string"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Link separator, e.g. /,:"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg LDAPARRAY_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Array name"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "URI"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Distinguished name"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Filter"},
+- {"subtree,onelevel,base", DATA_TYPE_OPTION, "Search scope policy"},
+- {"none,ssl,sasl", DATA_TYPE_OPTION, "Security level"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Array name"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "URI"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Distinguished name"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Filter"},
++ {"subtree,onelevel,base", CF_DATA_TYPE_OPTION, "Search scope policy"},
++ {"none,ssl,sasl", CF_DATA_TYPE_OPTION, "Security level"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg LDAPLIST_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "URI"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Distinguished name"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Filter"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Record name"},
+- {"subtree,onelevel,base", DATA_TYPE_OPTION, "Search scope policy"},
+- {"none,ssl,sasl", DATA_TYPE_OPTION, "Security level"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "URI"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Distinguished name"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Filter"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Record name"},
++ {"subtree,onelevel,base", CF_DATA_TYPE_OPTION, "Search scope policy"},
++ {"none,ssl,sasl", CF_DATA_TYPE_OPTION, "Security level"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg LDAPVALUE_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "URI"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Distinguished name"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Filter"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Record name"},
+- {"subtree,onelevel,base", DATA_TYPE_OPTION, "Search scope policy"},
+- {"none,ssl,sasl", DATA_TYPE_OPTION, "Security level"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "URI"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Distinguished name"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Filter"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Record name"},
++ {"subtree,onelevel,base", CF_DATA_TYPE_OPTION, "Search scope policy"},
++ {"none,ssl,sasl", CF_DATA_TYPE_OPTION, "Security level"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg LSDIRLIST_ARGS[] =
+ {
+- {CF_PATHRANGE, DATA_TYPE_STRING, "Path to base directory"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regular expression to match files or blank"},
+- {CF_BOOL, DATA_TYPE_OPTION, "Include the base path in the list"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_PATHRANGE, CF_DATA_TYPE_STRING, "Path to base directory"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regular expression to match files or blank"},
++ {CF_BOOL, CF_DATA_TYPE_OPTION, "Include the base path in the list"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg MAPLIST_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Pattern based on $(this) as original text"},
+- {CF_IDRANGE, DATA_TYPE_STRING, "The name of the list variable to map"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Pattern based on $(this) as original text"},
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "The name of the list variable to map"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg MAPARRAY_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Pattern based on $(this.k) and $(this.v) as original text"},
+- {CF_IDRANGE, DATA_TYPE_STRING, "The name of the array variable to map"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Pattern based on $(this.k) and $(this.v) as original text"},
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "The name of the array variable to map"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg NOT_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Class value"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Class value"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg NOW_ARGS[] =
+ {
+- {NULL, DATA_TYPE_NONE, NULL}
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg OR_ARGS[] =
+ {
+- {NULL, DATA_TYPE_NONE, NULL}
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg SUM_ARGS[] =
+ {
+- {CF_IDRANGE, DATA_TYPE_STRING, "A list of arbitrary real values"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "A list of arbitrary real values"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg PRODUCT_ARGS[] =
+ {
+- {CF_IDRANGE, DATA_TYPE_STRING, "A list of arbitrary real values"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "A list of arbitrary real values"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg DATE_ARGS[] =
+ {
+- {"1970,3000", DATA_TYPE_INT, "Year"},
+- {"1,12", DATA_TYPE_INT, "Month"},
+- {"1,31", DATA_TYPE_INT, "Day"},
+- {"0,23", DATA_TYPE_INT, "Hour"},
+- {"0,59", DATA_TYPE_INT, "Minute"},
+- {"0,59", DATA_TYPE_INT, "Second"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {"1970,3000", CF_DATA_TYPE_INT, "Year"},
++ {"1,12", CF_DATA_TYPE_INT, "Month"},
++ {"1,31", CF_DATA_TYPE_INT, "Day"},
++ {"0,23", CF_DATA_TYPE_INT, "Hour"},
++ {"0,59", CF_DATA_TYPE_INT, "Minute"},
++ {"0,59", CF_DATA_TYPE_INT, "Second"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg PEERS_ARGS[] =
+ {
+- {CF_ABSPATHRANGE, DATA_TYPE_STRING, "File name of host list"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Comment regex pattern"},
+- {CF_VALRANGE, DATA_TYPE_INT, "Peer group size"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ABSPATHRANGE, CF_DATA_TYPE_STRING, "File name of host list"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Comment regex pattern"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "Peer group size"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg PEERLEADER_ARGS[] =
+ {
+- {CF_ABSPATHRANGE, DATA_TYPE_STRING, "File name of host list"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Comment regex pattern"},
+- {CF_VALRANGE, DATA_TYPE_INT, "Peer group size"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ABSPATHRANGE, CF_DATA_TYPE_STRING, "File name of host list"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Comment regex pattern"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "Peer group size"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg PEERLEADERS_ARGS[] =
+ {
+- {CF_ABSPATHRANGE, DATA_TYPE_STRING, "File name of host list"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Comment regex pattern"},
+- {CF_VALRANGE, DATA_TYPE_INT, "Peer group size"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ABSPATHRANGE, CF_DATA_TYPE_STRING, "File name of host list"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Comment regex pattern"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "Peer group size"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg RANDOMINT_ARGS[] =
+ {
+- {CF_INTRANGE, DATA_TYPE_INT, "Lower inclusive bound"},
+- {CF_INTRANGE, DATA_TYPE_INT, "Upper inclusive bound"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_INTRANGE, CF_DATA_TYPE_INT, "Lower inclusive bound"},
++ {CF_INTRANGE, CF_DATA_TYPE_INT, "Upper inclusive bound"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg READFILE_ARGS[] =
+ {
+- {CF_ABSPATHRANGE, DATA_TYPE_STRING, "File name"},
+- {CF_VALRANGE, DATA_TYPE_INT, "Maximum number of bytes to read"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ABSPATHRANGE, CF_DATA_TYPE_STRING, "File name"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "Maximum number of bytes to read"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg READSTRINGARRAY_ARGS[] =
+ {
+- {CF_IDRANGE, DATA_TYPE_STRING, "Array identifier to populate"},
+- {CF_ABSPATHRANGE, DATA_TYPE_STRING, "File name to read"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regex matching comments"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regex to split data"},
+- {CF_VALRANGE, DATA_TYPE_INT, "Maximum number of entries to read"},
+- {CF_VALRANGE, DATA_TYPE_INT, "Maximum bytes to read"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "Array identifier to populate"},
++ {CF_ABSPATHRANGE, CF_DATA_TYPE_STRING, "File name to read"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regex matching comments"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regex to split data"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "Maximum number of entries to read"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "Maximum bytes to read"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg PARSESTRINGARRAY_ARGS[] =
+ {
+- {CF_IDRANGE, DATA_TYPE_STRING, "Array identifier to populate"},
+- {CF_ABSPATHRANGE, DATA_TYPE_STRING, "A string to parse for input data"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regex matching comments"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regex to split data"},
+- {CF_VALRANGE, DATA_TYPE_INT, "Maximum number of entries to read"},
+- {CF_VALRANGE, DATA_TYPE_INT, "Maximum bytes to read"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "Array identifier to populate"},
++ {CF_ABSPATHRANGE, CF_DATA_TYPE_STRING, "A string to parse for input data"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regex matching comments"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regex to split data"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "Maximum number of entries to read"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "Maximum bytes to read"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg READSTRINGARRAYIDX_ARGS[] =
+ {
+- {CF_IDRANGE, DATA_TYPE_STRING, "Array identifier to populate"},
+- {CF_ABSPATHRANGE, DATA_TYPE_STRING, "A string to parse for input data"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regex matching comments"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regex to split data"},
+- {CF_VALRANGE, DATA_TYPE_INT, "Maximum number of entries to read"},
+- {CF_VALRANGE, DATA_TYPE_INT, "Maximum bytes to read"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "Array identifier to populate"},
++ {CF_ABSPATHRANGE, CF_DATA_TYPE_STRING, "A string to parse for input data"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regex matching comments"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regex to split data"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "Maximum number of entries to read"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "Maximum bytes to read"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg PARSESTRINGARRAYIDX_ARGS[] =
+ {
+- {CF_IDRANGE, DATA_TYPE_STRING, "Array identifier to populate"},
+- {CF_ABSPATHRANGE, DATA_TYPE_STRING, "A string to parse for input data"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regex matching comments"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regex to split data"},
+- {CF_VALRANGE, DATA_TYPE_INT, "Maximum number of entries to read"},
+- {CF_VALRANGE, DATA_TYPE_INT, "Maximum bytes to read"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "Array identifier to populate"},
++ {CF_ABSPATHRANGE, CF_DATA_TYPE_STRING, "A string to parse for input data"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regex matching comments"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regex to split data"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "Maximum number of entries to read"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "Maximum bytes to read"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg READSTRINGLIST_ARGS[] =
+ {
+- {CF_ABSPATHRANGE, DATA_TYPE_STRING, "File name to read"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regex matching comments"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regex to split data"},
+- {CF_VALRANGE, DATA_TYPE_INT, "Maximum number of entries to read"},
+- {CF_VALRANGE, DATA_TYPE_INT, "Maximum bytes to read"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ABSPATHRANGE, CF_DATA_TYPE_STRING, "File name to read"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regex matching comments"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regex to split data"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "Maximum number of entries to read"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "Maximum bytes to read"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg READTCP_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Host name or IP address of server socket"},
+- {CF_VALRANGE, DATA_TYPE_INT, "Port number"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Protocol query string"},
+- {CF_VALRANGE, DATA_TYPE_INT, "Maximum number of bytes to read"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Host name or IP address of server socket"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "Port number"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Protocol query string"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "Maximum number of bytes to read"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg REGARRAY_ARGS[] =
+ {
+- {CF_IDRANGE, DATA_TYPE_STRING, "CFEngine array identifier"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regular expression"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "CFEngine array identifier"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regular expression"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg REGCMP_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regular expression"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Match string"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regular expression"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Match string"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg REGEXTRACT_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regular expression"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Match string"},
+- {CF_IDRANGE, DATA_TYPE_STRING, "Identifier for back-references"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regular expression"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Match string"},
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "Identifier for back-references"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg REGISTRYVALUE_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Windows registry key"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Windows registry value-id"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Windows registry key"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Windows registry value-id"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg REGLINE_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regular expression"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Filename to search"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regular expression"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Filename to search"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg REGLIST_ARGS[] =
+ {
+- {CF_NAKEDLRANGE, DATA_TYPE_STRING, "CFEngine list identifier"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regular expression"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_NAKEDLRANGE, CF_DATA_TYPE_STRING, "CFEngine list identifier"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regular expression"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg REGLDAP_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "URI"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Distinguished name"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Filter"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Record name"},
+- {"subtree,onelevel,base", DATA_TYPE_OPTION, "Search scope policy"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regex to match results"},
+- {"none,ssl,sasl", DATA_TYPE_OPTION, "Security level"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "URI"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Distinguished name"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Filter"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Record name"},
++ {"subtree,onelevel,base", CF_DATA_TYPE_OPTION, "Search scope policy"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regex to match results"},
++ {"none,ssl,sasl", CF_DATA_TYPE_OPTION, "Security level"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg REMOTESCALAR_ARGS[] =
+ {
+- {CF_IDRANGE, DATA_TYPE_STRING, "Variable identifier"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Hostname or IP address of server"},
+- {CF_BOOL, DATA_TYPE_OPTION, "Use enryption"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "Variable identifier"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Hostname or IP address of server"},
++ {CF_BOOL, CF_DATA_TYPE_OPTION, "Use enryption"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg HUB_KNOWLEDGE_ARGS[] =
+ {
+- {CF_IDRANGE, DATA_TYPE_STRING, "Variable identifier"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "Variable identifier"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg REMOTECLASSESMATCHING_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regular expression"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Server name or address"},
+- {CF_BOOL, DATA_TYPE_OPTION, "Use encryption"},
+- {CF_IDRANGE, DATA_TYPE_STRING, "Return class prefix"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regular expression"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Server name or address"},
++ {CF_BOOL, CF_DATA_TYPE_OPTION, "Use encryption"},
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "Return class prefix"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg RETURNSZERO_ARGS[] =
+ {
+- {CF_ABSPATHRANGE, DATA_TYPE_STRING, "Fully qualified command path"},
+- {"useshell,noshell,powershell", DATA_TYPE_OPTION, "Shell encapsulation option"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ABSPATHRANGE, CF_DATA_TYPE_STRING, "Fully qualified command path"},
++ {"useshell,noshell,powershell", CF_DATA_TYPE_OPTION, "Shell encapsulation option"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg RRANGE_ARGS[] =
+ {
+- {CF_REALRANGE, DATA_TYPE_REAL, "Real number"},
+- {CF_REALRANGE, DATA_TYPE_REAL, "Real number"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_REALRANGE, CF_DATA_TYPE_REAL, "Real number"},
++ {CF_REALRANGE, CF_DATA_TYPE_REAL, "Real number"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg SELECTSERVERS_ARGS[] =
+ {
+- {CF_NAKEDLRANGE, DATA_TYPE_STRING, "The identifier of a cfengine list of hosts or addresses to contact"},
+- {CF_VALRANGE, DATA_TYPE_INT, "The port number"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "A query string"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "A regular expression to match success"},
+- {CF_VALRANGE, DATA_TYPE_INT, "Maximum number of bytes to read from server"},
+- {CF_IDRANGE, DATA_TYPE_STRING, "Name for array of results"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_NAKEDLRANGE, CF_DATA_TYPE_STRING, "The identifier of a cfengine list of hosts or addresses to contact"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "The port number"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "A query string"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "A regular expression to match success"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "Maximum number of bytes to read from server"},
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "Name for array of results"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg SPLAYCLASS_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Input string for classification"},
+- {"daily,hourly", DATA_TYPE_OPTION, "Splay time policy"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Input string for classification"},
++ {"daily,hourly", CF_DATA_TYPE_OPTION, "Splay time policy"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg SPLITSTRING_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "A data string"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regex to split on"},
+- {CF_VALRANGE, DATA_TYPE_INT, "Maximum number of pieces"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "A data string"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regex to split on"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "Maximum number of pieces"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg STRCMP_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "String"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "String"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "String"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "String"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg STRFTIME_ARGS[] =
+ {
+- {"gmtime,localtime", DATA_TYPE_OPTION, "Use GMT or local time"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "A format string"},
+- {CF_VALRANGE, DATA_TYPE_INT, "The time as a Unix epoch offset"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {"gmtime,localtime", CF_DATA_TYPE_OPTION, "Use GMT or local time"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "A format string"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "The time as a Unix epoch offset"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg SUBLIST_ARGS[] =
+ {
+- {CF_IDRANGE, DATA_TYPE_STRING, "CFEngine list identifier"},
+- {"head,tail", DATA_TYPE_OPTION, "Whether to return elements from the head or from the tail of the list"},
+- {CF_VALRANGE, DATA_TYPE_INT, "Maximum number of elements to return"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "CFEngine list identifier"},
++ {"head,tail", CF_DATA_TYPE_OPTION, "Whether to return elements from the head or from the tail of the list"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "Maximum number of elements to return"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg TRANSLATEPATH_ARGS[] =
+ {
+- {CF_ABSPATHRANGE, DATA_TYPE_STRING, "Unix style path"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ABSPATHRANGE, CF_DATA_TYPE_STRING, "Unix style path"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg USEMODULE_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Name of module command"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Argument string for the module"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Name of module command"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Argument string for the module"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg UNIQUE_ARGS[] =
+ {
+- {CF_IDRANGE, DATA_TYPE_STRING, "CFEngine list identifier"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "CFEngine list identifier"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg NTH_ARGS[] =
+ {
+- {CF_IDRANGE, DATA_TYPE_STRING, "CFEngine list identifier"},
+- {CF_VALRANGE, DATA_TYPE_INT, "Offset of element to return"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "CFEngine list identifier"},
++ {CF_VALRANGE, CF_DATA_TYPE_INT, "Offset of element to return"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg EVERY_SOME_NONE_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Regular expression or string"},
+- {CF_IDRANGE, DATA_TYPE_STRING, "CFEngine list identifier"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Regular expression or string"},
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "CFEngine list identifier"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg USEREXISTS_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "User name or identifier"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "User name or identifier"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg SORT_ARGS[] =
+ {
+- {CF_IDRANGE, DATA_TYPE_STRING, "CFEngine list identifier"},
+- {"lex", DATA_TYPE_STRING, "Sorting method: lex"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "CFEngine list identifier"},
++ {"lex", CF_DATA_TYPE_STRING, "Sorting method: lex"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg REVERSE_ARGS[] =
+ {
+- {CF_IDRANGE, DATA_TYPE_STRING, "CFEngine list identifier"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "CFEngine list identifier"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg SHUFFLE_ARGS[] =
+ {
+- {CF_IDRANGE, DATA_TYPE_STRING, "CFEngine list identifier"},
+- {CF_ANYSTRING, DATA_TYPE_STRING, "Any seed string"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "CFEngine list identifier"},
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "Any seed string"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg LENGTH_ARGS[] =
+ {
+- {CF_IDRANGE, DATA_TYPE_STRING, "CFEngine list identifier"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "CFEngine list identifier"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg SETOP_ARGS[] =
+ {
+- {CF_IDRANGE, DATA_TYPE_STRING, "CFEngine base list identifier"},
+- {CF_IDRANGE, DATA_TYPE_STRING, "CFEngine filter list identifier"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "CFEngine base list identifier"},
++ {CF_IDRANGE, CF_DATA_TYPE_STRING, "CFEngine filter list identifier"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ FnCallArg FORMAT_ARGS[] =
+ {
+- {CF_ANYSTRING, DATA_TYPE_STRING, "CFEngine format string"},
+- {NULL, DATA_TYPE_NONE, NULL}
++ {CF_ANYSTRING, CF_DATA_TYPE_STRING, "CFEngine format string"},
++ {NULL, CF_DATA_TYPE_NONE, NULL}
+ };
+
+ /*********************************************************/
+@@ -5828,119 +5828,119 @@ FnCallArg FORMAT_ARGS[] =
+
+ const FnCallType CF_FNCALL_TYPES[] =
+ {
+- FnCallTypeNew("accessedbefore", DATA_TYPE_CONTEXT, ACCESSEDBEFORE_ARGS, &FnCallIsAccessedBefore, "True if arg1 was accessed before arg2 (atime)", false, FNCALL_CATEGORY_FILES, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("accumulated", DATA_TYPE_INT, ACCUM_ARGS, &FnCallAccumulatedDate, "Convert an accumulated amount of time into a system representation", false, FNCALL_CATEGORY_DATA, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("ago", DATA_TYPE_INT, AGO_ARGS, &FnCallAgoDate, "Convert a time relative to now to an integer system representation", false, FNCALL_CATEGORY_DATA, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("and", DATA_TYPE_STRING, AND_ARGS, &FnCallAnd, "Calculate whether all arguments evaluate to true", true, FNCALL_CATEGORY_DATA, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("canonify", DATA_TYPE_STRING, CANONIFY_ARGS, &FnCallCanonify, "Convert an abitrary string into a legal class name", false, FNCALL_CATEGORY_DATA, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("concat", DATA_TYPE_STRING, CONCAT_ARGS, &FnCallConcat, "Concatenate all arguments into string", true, FNCALL_CATEGORY_DATA, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("changedbefore", DATA_TYPE_CONTEXT, CHANGEDBEFORE_ARGS, &FnCallIsChangedBefore, "True if arg1 was changed before arg2 (ctime)", false, FNCALL_CATEGORY_FILES, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("classify", DATA_TYPE_CONTEXT, CLASSIFY_ARGS, &FnCallClassify, "True if the canonicalization of the argument is a currently defined class", false, FNCALL_CATEGORY_DATA, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("classmatch", DATA_TYPE_CONTEXT, CLASSMATCH_ARGS, &FnCallClassMatch, "True if the regular expression matches any currently defined class", false, FNCALL_CATEGORY_UTILS, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("classesmatching", DATA_TYPE_STRING_LIST, CLASSMATCH_ARGS, &FnCallClassesMatching, "List the defined classes matching regex arg1", false, FNCALL_CATEGORY_UTILS, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("countclassesmatching", DATA_TYPE_INT, COUNTCLASSESMATCHING_ARGS, &FnCallCountClassesMatching, "Count the number of defined classes matching regex arg1", false, FNCALL_CATEGORY_UTILS, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("countlinesmatching", DATA_TYPE_INT, COUNTLINESMATCHING_ARGS, &FnCallCountLinesMatching, "Count the number of lines matching regex arg1 in file arg2", false, FNCALL_CATEGORY_IO, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("difference", DATA_TYPE_STRING_LIST, SETOP_ARGS, &FnCallSetop, "Returns all the unique elements of list arg1 that are not in list arg2", false, FNCALL_CATEGORY_DATA, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("dirname", DATA_TYPE_STRING, DIRNAME_ARGS, &FnCallDirname, "Return the parent directory name for given path", false, FNCALL_CATEGORY_FILES, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("diskfree", DATA_TYPE_INT, DISKFREE_ARGS, &FnCallDiskFree, "Return the free space (in KB) available on the directory's current partition (0 if not found)", false, FNCALL_CATEGORY_FILES, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("escape", DATA_TYPE_STRING, ESCAPE_ARGS, &FnCallEscape, "Escape regular expression characters in a string", false, FNCALL_CATEGORY_DATA, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("every", DATA_TYPE_CONTEXT, EVERY_SOME_NONE_ARGS, &FnCallEverySomeNone, "True if every element in the named list matches the given regular expression", false, FNCALL_CATEGORY_DATA, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("execresult", DATA_TYPE_STRING, EXECRESULT_ARGS, &FnCallExecResult, "Execute named command and assign output to variable", false, FNCALL_CATEGORY_UTILS, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("fileexists", DATA_TYPE_CONTEXT, FILESTAT_ARGS, &FnCallFileStat, "True if the named file can be accessed", false, FNCALL_CATEGORY_FILES, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("filesexist", DATA_TYPE_CONTEXT, FILESEXIST_ARGS, &FnCallFileSexist, "True if the named list of files can ALL be accessed", false, FNCALL_CATEGORY_FILES, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("filesize", DATA_TYPE_INT, FILESTAT_ARGS, &FnCallFileStat, "Returns the size in bytes of the file", false, FNCALL_CATEGORY_FILES, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("filestat", DATA_TYPE_STRING, FILESTAT_DETAIL_ARGS, &FnCallFileStatDetails, "Returns stat() details of the file", false, FNCALL_CATEGORY_FILES, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("filter", DATA_TYPE_STRING_LIST, FILTER_ARGS, &FnCallFilter, "Similarly to grep(), filter the list arg2 for matches to arg2. The matching can be as a regular expression or exactly depending on arg3. The matching can be inverted with arg4. A maximum on the number of matches returned can be set with arg5.", false, FNCALL_CATEGORY_DATA, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("format", DATA_TYPE_STRING, FORMAT_ARGS, &FnCallFormat, "Applies a list of string values in arg2,arg3... to a string format in arg1 with sprintf() rules", true, FNCALL_CATEGORY_DATA, SYNTAX_STATUS_NORMAL),
+- FnCallTypeNew("getenv", DATA_TYPE_STRING, GETENV_ARGS, &FnCallGetEnv, "Return the environment variable named arg1, truncated at arg2 characters", false, FNCALL_CATEGORY_SYSTEM, SYNTAX_STATUS_NORMAL),
@@ Diff output truncated at 100000 characters. @@
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the devel
mailing list