sprintf(storageFile, "%s_s.tcl", (setup == NULL) ? "default" : setup);
if (NULL == (f = fopen(paramFile, "r"))) {
+ desParam(my);
return -1;
} else {
while(fgets(buf, 2 * (PARAM_MAX_NAME_LEN + 1), f) != NULL) {
if (buf[0] != '#') {
+ int items = 0;
+
((FileParam *) (my->specParam))->nVals++;
((FileParam *) (my->specParam))->pname = realloc(((FileParam *) (my->specParam))->pname, ((FileParam *) (my->specParam))->nVals * sizeof(char *));
((FileParam *) (my->specParam))->value = realloc(((FileParam *) (my->specParam))->value, ((FileParam *) (my->specParam))->nVals * sizeof(char *));
((FileParam *) (my->specParam))->pname[((FileParam *) (my->specParam))->nVals - 1] = malloc(2 * (PARAM_MAX_NAME_LEN + 1) * sizeof(char));
((FileParam *) (my->specParam))->value[((FileParam *) (my->specParam))->nVals - 1] = malloc(PARAM_MAX_VALUE_LEN * sizeof(char));
- sscanf(buf, "set%s\"%[^\"]\"",
+ items = sscanf(buf, "set%s %*[\"]%[^\"]\"",
((FileParam *) (my->specParam))->pname[((FileParam *) (my->specParam))->nVals - 1],
((FileParam *) (my->specParam))->value[((FileParam *) (my->specParam))->nVals - 1]
);
- if(strcmp(((FileParam *) (my->specParam))->value[((FileParam *) (my->specParam))->nVals - 1],"") == 0) {
- sscanf(buf, "set%s%s",
+ if (items != 2) {
+ items = sscanf(buf, "set%s%s",
((FileParam *) (my->specParam))->pname[((FileParam *) (my->specParam))->nVals - 1],
((FileParam *) (my->specParam))->value[((FileParam *) (my->specParam))->nVals - 1]
);
}
+ if (items != 2) {
+ free(((FileParam *) (my->specParam))->pname[((FileParam *) (my->specParam))->nVals - 1]);
+ free(((FileParam *) (my->specParam))->value[((FileParam *) (my->specParam))->nVals - 1]);
+ ((FileParam *) (my->specParam))->nVals--;
+ ((FileParam *) (my->specParam))->pname = realloc(((FileParam *) (my->specParam))->pname, ((FileParam *) (my->specParam))->nVals * sizeof(char *));
+ ((FileParam *) (my->specParam))->value = realloc(((FileParam *) (my->specParam))->value, ((FileParam *) (my->specParam))->nVals * sizeof(char *));
+ }
}
}
fclose(f);
char *storageFile;
FILE *f;
char buf[2 * (PARAM_MAX_NAME_LEN + 1)];
+ char *tmp;
my->strerror = NULL;
my->setup = NULL;
((FileParam *) (my->specParam))->value = 0;
((FileParam *) (my->specParam))->nVals = 0;
- paramFile = getenv("DAQSLOW_PARAM_FILE");
- if (paramFile == NULL) {
- paramFile = "param.tcl";
+ if((tmp = getenv("DAQSLOW_PARAM_FILE")) != NULL) {
+ paramFile = malloc(strlen(tmp) + 1);
+ strcpy(paramFile, tmp);
+ } else {
+ paramFile = malloc(strlen("param.tcl") + 1);
+ strcpy(paramFile, "param.tcl");
}
- storageFile = getenv("DAQSLOW_STORAGE_FILE");
- if (storageFile == NULL) {
- storageFile = "storage.tcl";
+ if((tmp = getenv("DAQSLOW_STORAGE_FILE")) != NULL) {
+ storageFile = malloc(strlen(tmp) + 1);
+ strcpy(storageFile, tmp);
+ } else {
+ storageFile = malloc(strlen("storage.tcl") + 1);
+ strcpy(storageFile, "storage.tcl");
}
if (NULL == (f = fopen(paramFile, "r"))) {
+ desParam(my);
return -1;
} else {
while(fgets(buf, 2 * (PARAM_MAX_NAME_LEN + 1), f) != NULL) {
if (buf[0] != '#') {
+ int items = 0;
+
((FileParam *) (my->specParam))->nVals++;
((FileParam *) (my->specParam))->pname = realloc(((FileParam *) (my->specParam))->pname, ((FileParam *) (my->specParam))->nVals * sizeof(char *));
((FileParam *) (my->specParam))->value = realloc(((FileParam *) (my->specParam))->value, ((FileParam *) (my->specParam))->nVals * sizeof(char *));
((FileParam *) (my->specParam))->pname[((FileParam *) (my->specParam))->nVals - 1] = malloc(2 * (PARAM_MAX_NAME_LEN + 1) * sizeof(char));
((FileParam *) (my->specParam))->value[((FileParam *) (my->specParam))->nVals - 1] = malloc(PARAM_MAX_VALUE_LEN * sizeof(char));
- sscanf(buf, "set%s\"%[\"]\"",
+ items = sscanf(buf, "set%s %*[\"]%[^\"]\"",
((FileParam *) (my->specParam))->pname[((FileParam *) (my->specParam))->nVals - 1],
((FileParam *) (my->specParam))->value[((FileParam *) (my->specParam))->nVals - 1]
);
- if(strcmp(((FileParam *) (my->specParam))->value[((FileParam *) (my->specParam))->nVals - 1],"") == 0) {
- sscanf(buf, "set%s%s",
+ if (items != 2) {
+ items = sscanf(buf, "set%s%s",
((FileParam *) (my->specParam))->pname[((FileParam *) (my->specParam))->nVals - 1],
((FileParam *) (my->specParam))->value[((FileParam *) (my->specParam))->nVals - 1]
);
}
+ if (items != 2) {
+ free(((FileParam *) (my->specParam))->pname[((FileParam *) (my->specParam))->nVals - 1]);
+ free(((FileParam *) (my->specParam))->value[((FileParam *) (my->specParam))->nVals - 1]);
+ ((FileParam *) (my->specParam))->nVals--;
+ ((FileParam *) (my->specParam))->pname = realloc(((FileParam *) (my->specParam))->pname, ((FileParam *) (my->specParam))->nVals * sizeof(char *));
+ ((FileParam *) (my->specParam))->value = realloc(((FileParam *) (my->specParam))->value, ((FileParam *) (my->specParam))->nVals * sizeof(char *));
+ }
}
}
fclose(f);
return -1;
}
+ free(paramFile);
+ free(storageFile);
+
return retVal;
}
}
}
for (i = 0 ; i < maxrows ; i++) {
- strval[i] = malloc(PARAM_MAX_VALUE_LEN * sizeof(char));
+ free(strval[i]);
}
return retVal;
}
int Param_getStringArray(const Param *my, const char *name, const char *idx, int maxrows, int *rows, char **val)
{
int i;
- int n;
+ int n = -2;
char lname[PARAM_MAX_NAME_LEN];
char lidx[PARAM_MAX_NAME_LEN];
for(i = 0 ; i <=strlen(name) ; i++) {
- lname[i] = tolower(name[i]);
+ lname[i] = (char) tolower(name[i]);
}
for(i = 0 ; i <=strlen(idx) ; i++) {
- lidx[i] = tolower(idx[i]);
+ lidx[i] = (char) tolower(idx[i]);
}
*rows = 0;
*rows = 1;
} else {
char index[PARAM_MAX_NAME_LEN];
- for (i = 0 ; i < maxrows ; i++) {
+
+ n = -2;
+ for (i = 0 ; (i < maxrows) && (n != -1) ; i++) {
sprintf(index,"%s%d", lidx, i);
if((n = Param_getParamNumber(my, lname, index)) != -1) {
strcpy(val[i], ((FileParam *) (my->specParam))->value[n]);
(*rows)++;
- } else {
- i = maxrows;
}
}
}
struct stat fileS, *file = &fileS;
stat(filename, file);
*size = (size_t) file->st_size;
- fprintf(stderr, "Result: %d.\n", *size);
*val = stream;
}
return retVal;