From: hades Date: Thu, 29 Mar 2001 12:38:23 +0000 (+0000) Subject: *** empty log message *** X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=94605e272e486a156ba36db3079aa912a79d4389;p=daqdata.git *** empty log message *** --- diff --git a/allParam/file/fileParam.c b/allParam/file/fileParam.c index bdc0ba5..fa09676 100644 --- a/allParam/file/fileParam.c +++ b/allParam/file/fileParam.c @@ -51,25 +51,35 @@ int conSetupParam(Param *my, const char *setup) 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); @@ -92,6 +102,7 @@ int conParam(Param *my) char *storageFile; FILE *f; char buf[2 * (PARAM_MAX_NAME_LEN + 1)]; + char *tmp; my->strerror = NULL; my->setup = NULL; @@ -100,36 +111,52 @@ int conParam(Param *my) ((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); @@ -139,6 +166,9 @@ int conParam(Param *my) return -1; } + free(paramFile); + free(storageFile); + return retVal; } @@ -218,7 +248,7 @@ int Param_getIntArray(const Param *my, const char *name, const char *idx, int ma } } for (i = 0 ; i < maxrows ; i++) { - strval[i] = malloc(PARAM_MAX_VALUE_LEN * sizeof(char)); + free(strval[i]); } return retVal; } @@ -226,15 +256,15 @@ int Param_getIntArray(const Param *my, const char *name, const char *idx, int ma 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; @@ -243,13 +273,13 @@ int Param_getStringArray(const Param *my, const char *name, const char *idx, int *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; } } } @@ -310,7 +340,6 @@ int Param_getBlob(const Param *my, const char *name, const char *idx, size_t *si struct stat fileS, *file = &fileS; stat(filename, file); *size = (size_t) file->st_size; - fprintf(stderr, "Result: %d.\n", *size); *val = stream; } return retVal; diff --git a/allParam/test/param.tcl b/allParam/test/param.tcl index 1f3be28..4dbafa9 100644 --- a/allParam/test/param.tcl +++ b/allParam/test/param.tcl @@ -15,7 +15,7 @@ set file(namea6) test7.blob set file(namea7) /test6.blob set file(namea9) test10.blob -set tname(twhitespace) "test100 whith whitespace" +set tname(twhitespace) "test100 whith whitespace" set tname(tstring) test100 set tname(tint) 100 diff --git a/allParam/test/test_p.tcl b/allParam/test/test_p.tcl index b50fe28..72c3853 100644 --- a/allParam/test/test_p.tcl +++ b/allParam/test/test_p.tcl @@ -13,6 +13,7 @@ set file(namea6) test7.blob set file(namea7) /test6.blob set file(namea9) test10.blob +set tname(twhitespace) "test1000 whith whitespace" set tname(tstring) test1000 set tname(tint) 1000