cachesim
A cache simulator
|
00001 /* -*- mode:c; coding: utf-8 -*- */ 00002 00003 #include "parse_config.h" 00004 00005 #include <stdlib.h> 00006 #include <string.h> 00007 #include <ctype.h> 00008 #include <errno.h> 00009 00010 enum 00011 { 00012 LINE_BUF_SIZE = 1024, 00013 MAX_LINE_LENGTH = 1000 00014 }; 00015 00020 typedef struct ConfigParam 00021 { 00022 char *name; 00023 char *value; 00024 } ConfigParam; 00025 00030 struct ConfigFile 00031 { 00032 int size; 00033 int reserved; 00034 ConfigParam *params; 00035 }; 00036 00037 ConfigFile * 00038 config_file_parse(const char *path, FILE *log_f) 00039 { 00040 ConfigFile *cfg = (ConfigFile*) calloc(1, sizeof(*cfg)); 00041 00042 // FIXME: реализовать разбор конфигурационного файла и сортировку массива params 00043 00044 return cfg; 00045 } 00046 00047 ConfigFile * 00048 config_file_free(ConfigFile *cfg) 00049 { 00050 // FIXME: реализовать 00051 return NULL; 00052 } 00053 00054 const char * 00055 config_file_get(const ConfigFile *cfg, const char *name) 00056 { 00057 // FIXME: реализовать бинарный поиск 00058 return NULL; 00059 } 00060 00061 int 00062 config_file_get_int(const ConfigFile *cfg, const char *name, int *p_value) 00063 { 00064 const char *str = config_file_get(cfg, name); 00065 if (!str) { 00066 return 0; 00067 } 00068 char *eptr = NULL; 00069 errno = 0; 00070 int value = strtol(str, &eptr, 10); 00071 if (*eptr || errno) { 00072 return -1; 00073 } 00074 *p_value = value; 00075 return 1; 00076 } 00077 00078 /* 00079 * Local variables: 00080 * c-basic-offset: 4 00081 * End: 00082 */