00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifdef _WIN32
00021 #pragma warning(disable:4786)
00022 #endif
00023 #include <stdio.h>
00024 #include "Parse.h"
00025
00026 #include "config.h"
00027
00028 #define C slask[strlen(slask) - 1]
00029 #ifdef SOCKETS_NAMESPACE
00030 using namespace SOCKETS_NAMESPACE;
00031 #endif
00032
00033 config_m config;
00034 static std::string config_filename;
00035
00036
00037 static void read_config(const std::string& filename)
00038 {
00039 FILE *fil = fopen(filename.c_str(),"rt");
00040 config_filename = filename;
00041 if (fil)
00042 {
00043 char slask[1000];
00044 std::string key;
00045 std::string value;
00046 fgets(slask,1000,fil);
00047 while (!feof(fil))
00048 {
00049 while (strlen(slask) && (C == 13 || C == 10))
00050 C = 0;
00051 Parse pa(slask);
00052 pa.getword(key);
00053 pa.getrest(value);
00054 config[key] = value;
00055
00056 fgets(slask,1000,fil);
00057 }
00058 fclose(fil);
00059 }
00060 }
00061
00062
00063 void write_config()
00064 {
00065 FILE *fil = fopen(config_filename.c_str(),"wt");
00066 if (fil)
00067 {
00068 for (config_m::iterator it = config.begin(); it != config.end(); it++)
00069 {
00070 std::string key = (*it).first;
00071 std::string value = (*it).second;
00072 if (key[0] != '.')
00073 fprintf(fil,"%s %s\n",key.c_str(),value.c_str());
00074 }
00075 fclose(fil);
00076 }
00077 }
00078
00079
00080 void parse_config(int argc,char *argv[],const std::string& filename)
00081 {
00082 read_config( filename );
00083 for (int i = 1; i < argc; i++)
00084 if (argv[i][0] == '-' && i < argc - 1)
00085 {
00086 config[argv[i] + 1] = argv[i + 1];
00087 i++;
00088 }
00089 write_config();
00090 }
00091
00092