-
Notifications
You must be signed in to change notification settings - Fork 0
/
Config.cpp
129 lines (105 loc) · 2.68 KB
/
Config.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include "Config.h"
using namespace std;
#include "Config.h"
#include <sys/stat.h>
#include <string>
#include <fstream>
#include <stdlib.h>
std::string Config::trim( std::string str )
{
unsigned int i = str.length();
// Erase space at the end
for ( ; i != 0; i-- )
{
if ( !isspace(str[i]) && isprint(str[i]) )
{
i++;
break;
}
}
str.erase( i, str.length() );
// Erase space at the beginning
for ( i = 0; i != str.length(); i++ )
{
if ( !isspace(str[i]) && isprint(str[i]) )
{
break;
}
}
str.erase( 0, i );
return str;
}
Config::Config( const char *configFile ):
dbg("config")
{
struct stat statBuf;
std::string line;
if ( stat( configFile, &statBuf ) != -1 )
{
std::ifstream inFile(configFile);
std::string key, value, assign;
if ( inFile.is_open() )
{
while ( !inFile.eof() )
{
getline( inFile, line );
std::string::size_type comment = line.find("#", 0 );
if ( comment != std::string::npos )
{
line.erase( comment, line.length() );
}
line = trim( line );
if ( line.empty() )
continue;
std::string::size_type assign = line.find('=');
if ( assign != std::string::npos )
{
key = trim(line.substr(0,assign));
value = trim(line.substr(assign+1));
dbg.printf(NOTICE, "%s = '%s'\n", key.c_str(), value.c_str());
// printf("line: \"%s\" (%d)\n", line.c_str(), line.length());
//printf("key = \"%s\" value=\"%s\"\n", key.c_str(),
//value.c_str());
cfg[key] = value;
}
}
inFile.close();
}
}
else
{
printf("\nERROR!\n");
printf("Could not open config file: %s\n", configFile );
dbg.printf(EMERG, "Error opening config file: %s\n", configFile );
dbg.printf(EMERG, "Exiting!\n");
exit(0);
}
//
}
string Config::getString( string key )
{
if ( cfg.find(key) == cfg.end() )
{
dbg.printf(EMERG, "Could not find config key: %s\n", key.c_str());
return "";
}
return cfg[key];
}
double Config::getDouble( string key )
{
if ( cfg.find(key) == cfg.end() )
{
dbg.printf(EMERG, "Could not find config key: %s\n", key.c_str());
return 0;
}
return atof(cfg[key].c_str());
}
int Config::getInteger( string key )
{
if ( cfg.find(key) == cfg.end() )
{
dbg.printf(EMERG, "Could not find config key: %s\n", key.c_str());
return 0;
}
return atoi( cfg[key].c_str() );
}