cachesim
A cache simulator
parse_config.c
Go to the documentation of this file.
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  */