first commit
This commit is contained in:
85
CS4210/Project 2/common/config_parser/parser.c
Normal file
85
CS4210/Project 2/common/config_parser/parser.c
Normal file
@@ -0,0 +1,85 @@
|
||||
#include "parser.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
static char* getNextLine(char arr[160], FILE* stream) {
|
||||
while (fgets(arr, 160, stream)) {
|
||||
if (arr[0] == '#' || !isalnum(arr[0])) {
|
||||
continue;
|
||||
} else {
|
||||
return arr;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Load fileName and return a FILE*
|
||||
*/
|
||||
ConfigFile* loadFile(char* fileName) {
|
||||
ConfigFile* newConfig = NULL;
|
||||
|
||||
newConfig = malloc(sizeof(ConfigFile));
|
||||
if (!newConfig) {
|
||||
printf("Memory Allocation Failed in _FILE_ line: _LINE_\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
newConfig->file = fopen(fileName, "r");
|
||||
|
||||
if (!newConfig->file) {
|
||||
free(newConfig);
|
||||
printf("Failed to Open File in _FILE_: _LINE_\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return newConfig;
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
void releaseConfig(ConfigFile** configFile) {
|
||||
|
||||
if (!configFile) {
|
||||
return;
|
||||
}
|
||||
if ((*configFile)->file) {
|
||||
fclose((*configFile)->file);
|
||||
}
|
||||
free(*configFile);
|
||||
*configFile = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
int nextSet(ConfigFile* config) {
|
||||
char temp[160];
|
||||
char* pc;
|
||||
int i;
|
||||
|
||||
if (!getNextLine(temp, config->file)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
pc = strtok(temp,":");
|
||||
|
||||
strncpy(config->currentParamter, pc, 80);
|
||||
|
||||
pc = strtok(NULL,":");
|
||||
|
||||
for (i=0; pc[i] != '\0'; i++) {
|
||||
if (isspace(pc[i])) {
|
||||
pc[i] = '\0';
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
strncpy(config->currentValue, pc, 80);
|
||||
|
||||
return 1;
|
||||
}
|
||||
Reference in New Issue
Block a user