]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
*** empty log message ***
authorhades <hades>
Thu, 29 Mar 2001 12:38:23 +0000 (12:38 +0000)
committerhades <hades>
Thu, 29 Mar 2001 12:38:23 +0000 (12:38 +0000)
allParam/file/fileParam.c
allParam/test/param.tcl
allParam/test/test_p.tcl

index bdc0ba5b6dbf46a6106e19a52236b659b5c414cd..fa09676f2d7c79520c10fce4b3dd23c8809583d3 100644 (file)
@@ -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;
index 1f3be2833089b0fe5b2dc7903cd87dd869609415..4dbafa987d14134bc1c9b9ad151444d32bf6cd77 100644 (file)
@@ -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
index b50fe28cfa5a3798c93679adacc9fd411ffc0656..72c3853e67848edeb01039b5aca207391d9da0fe 100644 (file)
@@ -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