annotate ParamHelper/ReadParamsFromFile.c @ 1:1b61e0c00512

almost working k=3, about to change to k=4
author Sean Halle <seanhalle@yahoo.com>
date Wed, 19 Feb 2014 09:27:10 -0800
parents
children
rev   line source
seanhalle@0 1 /*
seanhalle@0 2 * Author: SeanHalle@yahoo.com
seanhalle@0 3 *
seanhalle@0 4 * Created on June 15, 2009, 10:12 AM
seanhalle@0 5 */
seanhalle@0 6
seanhalle@0 7 #include <stdio.h>
seanhalle@0 8 #include <stdlib.h>
seanhalle@0 9 #include <string.h>
seanhalle@0 10
seanhalle@0 11 #include "../Matrix_Mult.h"
seanhalle@0 12
seanhalle@0 13 ParamStruc * makeParamFromStrs( char * type, char *value );
seanhalle@0 14
seanhalle@0 15 #define _GNU_SOURCE
seanhalle@0 16
seanhalle@0 17 /*Copied from gnu's win32 lib
seanhalle@0 18 */
seanhalle@0 19 ssize_t
seanhalle@0 20 getline( char **lineptr, size_t *n, FILE *stream )
seanhalle@0 21 {
seanhalle@0 22 if ( lineptr == NULL || n == NULL) return -1;
seanhalle@0 23 if (*lineptr == NULL || *n == 0)
seanhalle@0 24 { *n = 500; //max length of line in a config file
seanhalle@0 25 *lineptr = (char *) malloc( *n );
seanhalle@0 26 if (*lineptr == NULL) return -1;
seanhalle@0 27 }
seanhalle@0 28 if( fgets( *lineptr, *n, stream ) )
seanhalle@0 29 return *n;
seanhalle@0 30 else
seanhalle@0 31 return -1;
seanhalle@0 32 }
seanhalle@0 33
seanhalle@0 34 void
seanhalle@0 35 readParamFileIntoBag( char *paramFileName, ParamBag * bag )
seanhalle@0 36 {
seanhalle@0 37 size_t lineSz = 0;
seanhalle@0 38 FILE* paramFile;
seanhalle@0 39 char* line = NULL;
seanhalle@0 40
seanhalle@0 41 char* paramType;// = malloc( 12 ); //"double" is the longest type
seanhalle@0 42 char* paramName;// = malloc( 500 ); //max of 500 chars in name
seanhalle@0 43 char* paramValue;// = malloc( 500 ); //max of 500 chars in value
seanhalle@0 44
seanhalle@0 45 lineSz = 500; //max length of line in a config file
seanhalle@0 46 line = (char *) malloc( lineSz );
seanhalle@0 47 if( line == NULL )
seanhalle@0 48 { printf( "\nIn readParamFileIntoBag: no mem for line\n" );
seanhalle@0 49 return;
seanhalle@0 50 }
seanhalle@0 51
seanhalle@0 52
seanhalle@0 53 paramFile = fopen( paramFileName, "r" );
seanhalle@0 54 if( paramFile == NULL ) {printf("\ncouldn't open file\n"); exit(0);}
seanhalle@0 55 fseek( paramFile, 0, SEEK_SET );
seanhalle@0 56 while( !feof( paramFile ) )
seanhalle@0 57 { while( getline( &line, &lineSz, paramFile ) != -1 )
seanhalle@0 58 {
seanhalle@0 59 char *lineEnd = line + strlen(line) +1;
seanhalle@0 60 char *searchPos = line;
seanhalle@0 61
seanhalle@0 62 if( *line == '\n') continue; //blank line
seanhalle@0 63 if( *line == '/' ) continue; //comment line
seanhalle@0 64
seanhalle@0 65 //read the param type
seanhalle@0 66 paramType = line; //start of string
seanhalle@0 67 int foundIt = 0;
seanhalle@0 68 for( ; searchPos < lineEnd && !foundIt; searchPos++)
seanhalle@0 69 { if( *searchPos == ',' )
seanhalle@0 70 { foundIt = 1;
seanhalle@0 71 *searchPos = 0; //mark end of string
seanhalle@0 72 }
seanhalle@0 73 }
seanhalle@0 74 //get rid of leading spaces
seanhalle@0 75 for( ; searchPos < lineEnd; searchPos++)
seanhalle@0 76 { if( *searchPos != ' ' ) break;
seanhalle@0 77 }
seanhalle@0 78 //read the param name
seanhalle@0 79 paramName = searchPos;
seanhalle@0 80 foundIt = 0;
seanhalle@0 81 for( ; searchPos < lineEnd && !foundIt; searchPos++)
seanhalle@0 82 { if( *searchPos == ',' )
seanhalle@0 83 { foundIt = 1;
seanhalle@0 84 *searchPos = 0; //mark end
seanhalle@0 85 }
seanhalle@0 86 }
seanhalle@0 87 //get rid of leading spaces
seanhalle@0 88 for( ; searchPos < lineEnd; searchPos++)
seanhalle@0 89 { if( *searchPos != ' ' ) break;
seanhalle@0 90 }
seanhalle@0 91 //read the param value
seanhalle@0 92 paramValue = searchPos;
seanhalle@0 93 foundIt = 0;
seanhalle@0 94 for( ; searchPos < lineEnd && !foundIt; searchPos++)
seanhalle@0 95 { if( *searchPos == '\n' )
seanhalle@0 96 { foundIt = 1;
seanhalle@0 97 *searchPos = 0; //mark end
seanhalle@0 98 }
seanhalle@0 99 }
seanhalle@0 100 if( foundIt )
seanhalle@0 101 { printf("Found: %s, %s, %s\n", paramType, paramName, paramValue );
seanhalle@0 102 ParamStruc *
seanhalle@0 103 paramStruc = makeParamFromStrs( paramType, paramValue );
seanhalle@0 104 addParamToBag( paramName, paramStruc, bag );
seanhalle@0 105 }
seanhalle@0 106 }
seanhalle@0 107 }
seanhalle@0 108 free( line );
seanhalle@0 109 }
seanhalle@0 110