From: hades Date: Wed, 16 Aug 2000 13:01:24 +0000 (+0000) Subject: *** empty log message *** X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=8399a1257dccb8dbf439e87ef826b8ac9d43bc33;p=daqdata.git *** empty log message *** --- diff --git a/allParam/ca/Makefile b/allParam/ca/Makefile index 71fd061..876e015 100644 --- a/allParam/ca/Makefile +++ b/allParam/ca/Makefile @@ -2,7 +2,7 @@ EPICS_BASE = $(HOME)/hades/epics/base CFLAGS = -g -I$(HOME)/include \ -I$(EPICS_BASE)/include -I$(EPICS_BASE)/include/os/$(HOST_ARCH) -libcaParam.a : param.o +libncaParam.a : param.o $(AR) $(ARFLAGS) $@ $< param.o : param.c param.h diff --git a/allParam/ca/caParam.h b/allParam/ca/caParam.h index caeb86f..633efe9 100644 --- a/allParam/ca/caParam.h +++ b/allParam/ca/caParam.h @@ -58,6 +58,7 @@ void desParam(Param *); #define PARAM_RV_NO_SUCH_PARAMETER 0 #define PARAM_RV_FAILED -1 +#define PARAM_RV_NO_INT -2 #define PARAM_MAX_VALUE_LEN 128 diff --git a/allParam/tcl/Makefile b/allParam/tcl/Makefile index 933187a..1e8363e 100644 --- a/allParam/tcl/Makefile +++ b/allParam/tcl/Makefile @@ -1,12 +1,9 @@ CXXFLAGS = -g -I../param CFLAGS = -g -libtclParam.a : param.o +libntclParam.a : param.o $(AR) $(ARFLAGS) $@ $< -tclParam.o : tclParam.cc tclParam.h structParam.h ../param/enhParam.h -structParam.o : structParam.c structParam.h - param.o : param.c param.h clean : diff --git a/allParam/tcl/tclParam.c b/allParam/tcl/tclParam.c index e3ce3f0..eef46d7 100644 --- a/allParam/tcl/tclParam.c +++ b/allParam/tcl/tclParam.c @@ -1,39 +1,103 @@ #define _POSIX_C_SOURCE 199509L +#include + +#include +#include +#include +#include + #include "param.h" int conParam(Param *my) { - return 0; + int retVal; + char *fileName; + int code; + + fileName = getenv("DAQSLOW_PARAM_FILE"); + if (fileName == NULL) { + fileName = "param.tcl"; + } + my->interp = Tcl_CreateInterp(); + code = Tcl_EvalFile(my->interp, fileName); + if (*my->interp->result != 0) { + fprintf(stderr, "opening param file: %s\n", my->interp->result); + retVal = -1; + } else { + if (code != TCL_OK) { + retVal = -1; + } else { + retVal = 0; + } + } + return retVal; } void desParam(Param *my) { + Tcl_DeleteInterp(my->interp); } -int Param_getInt(const Param *my, const char *n, const char *i, int *v) +int Param_getInt(const Param *my, const char *name, const char *idx, int *val) { - return Param_getIntArray(my, n, i, 1, v); + int status; + char valstr[PARAM_MAX_VALUE_LEN]; + char *endptr; + if ((status = Param_getString(my, name, idx, valstr)) != 1) { + msglog(LOG_ERR, "Error: cannot get Parameter %s as a string", idx); + return status; + } + *val = strtoul(valstr, &endptr, 0); + if (*endptr == '\0') { + return PARAM_RV_NO_INT; + } + return 1; } -int Param_getString(const Param *my, const char *n, const char *i, char *v) +int Param_getString(const Param *my, const char *name, const char *idx, char *val) { - return Param_getStringArray(my, n, i, 1, &v); + strcpy(val, Tcl_GetVar2(my->interp, (char *) name, (char *) idx, 0)); + if (val == NULL) { + val = ""; + fprintf(stderr, + "Parameter %s(%s) not found, default is \"\"\n", name, idx); + return 0; + } + return 1; } -int Param_getIntArray(const Param *my, const char *n, const char *i, int num, int *v) +int Param_getIntArray(const Param *my, const char *name, const char *idx, int num, int *val) { - for (int i = 0 ; i= 0)) { + status++; + } else { + status = tmp; + } } - return num; + + return status; } -int Param_getStringArray(const Param *my, const char *n, const char *i, int num, char **v) +int Param_getStringArray(const Param *my, const char *name, const char *idx, int num, char **val) { - for (int i = 0 ; i= 0)) { + status++; + } else { + status = tmp; + } } - return num; + + return status; } diff --git a/allParam/tcl/tclParam.h b/allParam/tcl/tclParam.h index ea8515c..1c9913d 100644 --- a/allParam/tcl/tclParam.h +++ b/allParam/tcl/tclParam.h @@ -5,7 +5,10 @@ * Section containing struct Param (different in the different param.h's) * **************************************************************************/ +#include + typedef struct ParamS { + Tcl_Interp *interp; } Param; /****************************************************************** @@ -46,7 +49,9 @@ void desParam(Param *); #define PARAM_RV_NO_SUCH_PARAMETER 0 #define PARAM_RV_FAILED -1 +#define PARAM_RV_NO_INT -2 +#define PARAM_MAX_NAME_LEN 128 #define PARAM_MAX_VALUE_LEN 128 int Param_getInt(const Param *, const char *, const char *, unsigned long int *);