#define _POSIX_C_SOURCE 199509L
 
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+
+#include <hadesstd.h>
+
 #include "param.h"
 
 #define BUFFERSIZE 130
 int conParam(Param *my)
 {
        int i = 0;
-       char fileName[PARAM_MAX_NAME_LEN];
+       char *fileName;
        FILE *f;
        char buf[BUFFERSIZE];
 
-       strcpy(fileName, fn);
+       fileName = getenv("DAQSLOW_PARAM_FILE");
        if (fileName == NULL) {
-               strcmp(fileName, "param.tcl");
+               strcpy(fileName, "param.tcl");
        }
        if (NULL == (f = fopen(fileName, "r"))) {
                msglog(LOG_ERR, "opening param file: %s\n", strerror(errno));
 {
 }
 
-int Param_getParamNumber(const Param *my, const char *name, const char *idx, int num)
+int Param_getParamNumber(const Param *my, const char *name, const char *idx)
 {
        int retVal = -1;
        int i;
        char fullName[PARAM_MAX_NAME_LEN];
 
-       if (num == -1) {
-               sprintf(fullName, "%s(%s)", name, idx);
-       } else {
-               sprintf(fullName, "%s(%s%d)", name, idx, num);
-       }
+       sprintf(fullName, "%s(%s)", name, idx);
        for (i = 0; i < my->nVals; i++) {
                if (strcmp(my->pname[i], fullName) == 0) {
                        retVal = i;
        return retVal;
 }
 
-int Param_getInt(const Param *my, const char *name, const char *idx, int *val)
+int Param_getInt(const Param *my, const char *name, const char *idx, unsigned long int *val)
 {
        int status;
        char valstr[PARAM_MAX_VALUE_LEN];
 int Param_getString(const Param *my, const char *name, const char *idx, char *val)
 {
        int n;
-       n = Param_getParamNumber(name, index, num);
+       n = Param_getParamNumber(my, name, idx);
        if (n == -1) {
                msglog(LOG_WARNING, "Parameter %s(%s) not found, returning NULL-pointer.\n", name, idx);
                return 0;
        } else {
-               strcpy(val[i], my->value[n]);
+               strcpy(val, my->value[n]);
        }
        return 1;
 }
 
-int Param_getIntArray(const Param *my, const char *name, const char *idx, int num, int *val)
+int Param_getIntArray(const Param *my, const char *name, const char *idx, int num, unsigned long int *val)
 {
        int status;
        int tmp;
+       int i;
        char index[PARAM_MAX_NAME_LEN];
-       for (int i = 0 ; i < num ; i++) {
+       for (i = 0 ; i < num ; i++) {
                sprintf(index,"%s%d", idx, i);
-               if ((tmp = Param_getInt(my, name, index, val[i]) == 1) && (status >= 0)) {
+               if ((tmp = Param_getInt(my, name, index, val + i) == 1) && (status >= 0)) {
                        status++;
                } else {
                        status = tmp;
 {
        int status;
        int tmp;
+       int i;
        char index[PARAM_MAX_NAME_LEN];
-       for (int i = 0 ; i < num ; i++) {
+       for (i = 0 ; i < num ; i++) {
                sprintf(index,"%s%d", idx, i);
                if ((tmp = Param_getString(my, name, index, val[i]) == 1) && (status >= 0)) {
                        status++;