summaryrefslogtreecommitdiff
path: root/src/conf/conf.cpp
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2013-04-06 13:14:44 +0200
committerPaul Buetow <paul@buetow.org>2013-04-06 13:14:44 +0200
commit5b7605790328c6c0f473296df444d0f4a79ac779 (patch)
tree48b545ac0295c69fb02247d4ad780be311642462 /src/conf/conf.cpp
parentd3982ec72b255876db00825605d1d5aae0bc313e (diff)
tagging ychat-0.7.6ychat-0.7.6
Diffstat (limited to 'src/conf/conf.cpp')
-rwxr-xr-xsrc/conf/conf.cpp190
1 files changed, 93 insertions, 97 deletions
diff --git a/src/conf/conf.cpp b/src/conf/conf.cpp
index f053d85..d54bf68 100755
--- a/src/conf/conf.cpp
+++ b/src/conf/conf.cpp
@@ -8,138 +8,134 @@ using namespace std;
conf::conf( string s_conf, map<string,string>* p_start_params ) : name::name( s_conf )
{
- string s_check[] = {
- get_name(),
- string(getenv("HOME"))+string("/.ychat/") + get_name(),
- string("./etc/") + get_name(),
- string("/etc/") + get_name(),
- string(PREFIX+string("etc/")+get_name()) };
+ string s_check[] = {
+ get_name(),
+ string(getenv("HOME"))+string("/.ychat/") + get_name(),
+ string("./etc/") + get_name(),
+ string("/etc/") + get_name(),
+ string(PREFIX+string("etc/")+get_name()) };
- string s_config;
+ string s_config;
- for ( int i = 0; i < 4; ++i )
- {
- cout << "Checking for " << s_check[i];
- ifstream if_check( s_check[i].c_str() );
- if( if_check )
+ for ( int i = 0; i < 4; ++i )
{
- s_config = s_check[i];
- if_check.close();
- cout << "... ok!" << endl;
- break;
+ cout << "Checking for " << s_check[i];
+ ifstream if_check( s_check[i].c_str() );
+ if( if_check )
+ {
+ s_config = s_check[i];
+ if_check.close();
+ cout << "... ok!" << endl;
+ break;
+ }
+ cout << "... not ok!" << endl;
}
- cout << "... not ok!" << endl;
- }
-
- if ( s_config.empty() )
- {
- cout << CFILEFA << endl;
- exit(1);
- }
- else
- {
- cout << CFILEOK << "..." << endl;
- }
- p_xml = new TiXmlDocument(s_config.c_str());
- TiXmlBase::SetCondenseWhiteSpace( false );
+ if ( s_config.empty() )
+ {
+ cout << CFILEFA << endl;
+ exit(1);
+ }
- if ( !p_xml->LoadFile() )
- {
- cout << XMLER1 << endl;
- exit(1);
- }
+ else
+ {
+ cout << CFILEOK << "..." << endl;
+ }
- vector<string> vec_string;
- parse_xml(p_xml, &vec_string);
+ p_xml = new TiXmlDocument(s_config.c_str());
+ TiXmlBase::SetCondenseWhiteSpace( false );
+
+ if ( !p_xml->LoadFile() )
+ {
+ cout << XMLER1 << endl;
+ exit(1);
+ }
- shashmap<string>::add_elem_insecure(tool::ychat_version(), "ychat.version");
+ vector<string> vec_string;
+ parse_xml(p_xml, &vec_string);
- // Overrides ychat.conf values with command line options (ychat -o key1 value1 -o key2 value2 ...)
- map<string,string>::iterator iter;
- for ( iter = p_start_params->begin(); iter != p_start_params->end(); iter++ )
- {
- shashmap<string>::del_elem_insecure(iter->first);
- shashmap<string>::add_elem_insecure(iter->second, iter->first);
- }
+ shashmap<string>::add_elem_insecure(tool::ychat_version(), "ychat.version");
+
+ // Overrides ychat.conf values with command line options (ychat -o key1 value1 -o key2 value2 ...)
+ map<string,string>::iterator iter;
+ for ( iter = p_start_params->begin(); iter != p_start_params->end(); iter++ )
+ {
+ shashmap<string>::del_elem_insecure(iter->first);
+ shashmap<string>::add_elem_insecure(iter->second, iter->first);
+ }
- delete p_xml;
+ delete p_xml;
}
void
conf::parse_xml(TiXmlNode* p_node, vector<string>* p_vec)
{
if ( p_node->NoChildren() )
- return;
+ return;
for ( TiXmlNode* p_child = p_node->FirstChild(); p_child; p_child = p_child->NextSibling() )
{
- //cout << p_vec->size() << ": (Value:" << p_child->Value() << ") (Type:" << p_child->Type() << ")" << endl;
+ //cout << p_vec->size() << ": (Value:" << p_child->Value() << ") (Type:" << p_child->Type() << ")" << endl;
- if ( strcmp(p_child->Value(),"category") == 0 )
- {
- p_vec->push_back(p_child->ToElement()->Attribute("name"));
- parse_xml(p_child, p_vec);
- p_vec->pop_back();
- }
- else if ( strcmp(p_child->Value(),"option") == 0 )
- {
- string s_option_name = "";
+ if ( strcmp(p_child->Value(),"category") == 0 )
+ {
+ p_vec->push_back(p_child->ToElement()->Attribute("name"));
+ parse_xml(p_child, p_vec);
+ p_vec->pop_back();
+ }
+
+ else if ( strcmp(p_child->Value(),"option") == 0 )
+ {
+ string s_option_name = "";
- for ( vector<string>::iterator iter = p_vec->
- begin();
- iter != p_vec->end();
- ++iter )
- s_option_name.append(*iter + ".");
+ for ( vector<string>::iterator iter = p_vec->begin(); iter != p_vec->end(); ++iter )
+ s_option_name.append(*iter + ".");
- TiXmlElement* p_element = p_child->ToElement();
- exit_if_xml_error();
+ TiXmlElement* p_element = p_child->ToElement();
+ exit_if_xml_error();
- s_option_name.append(p_element->Attribute("name"));
+ s_option_name.append(p_element->Attribute("name"));
#ifdef VERBOSE
- cout << XMLREAD << s_option_name;
+ cout << XMLREAD << s_option_name;
#endif
- TiXmlNode *p_node_value = p_element->FirstChild("value");
- TiXmlNode *p_node_descr = p_element->FirstChild("descr");
+ TiXmlNode *p_node_value = p_element->FirstChild("value");
+ TiXmlNode *p_node_descr = p_element->FirstChild("descr");
- TiXmlText* p_text_value = NULL;
- TiXmlText* p_text_descr = NULL;
+ TiXmlText* p_text_value = NULL;
+ TiXmlText* p_text_descr = NULL;
- if ( p_node_value && p_node_value->FirstChild()
- )
- p_text_value = p_node_value->FirstChild()->ToText();
+ if ( p_node_value && p_node_value->FirstChild() )
+ p_text_value = p_node_value->FirstChild()->ToText();
- if ( p_node_descr && p_node_descr->FirstChild()
- )
- p_text_descr = p_node_descr->FirstChild()->ToText();
+ if ( p_node_descr && p_node_descr->FirstChild() )
+ p_text_descr = p_node_descr->FirstChild()->ToText();
- if ( !p_text_value )
- continue;
+ if ( !p_text_value )
+ continue;
#ifdef VERBOSE
- cout << " := " << p_text_value->Value() << endl;
+ cout << " := " << p_text_value->Value() << endl;
#endif
- shashmap<string>::add_elem_insecure(p_text_value->Value(), s_option_name);
+ shashmap<string>::add_elem_insecure(p_text_value->Value(), s_option_name);
- if ( !p_text_descr )
- continue;
+ if ( !p_text_descr )
+ continue;
- s_option_name.append(".descr");
+ s_option_name.append(".descr");
#ifdef VERBOSE
- cout << XMLREAD << s_option_name << endl;
+ cout << XMLREAD << s_option_name << endl;
#endif
- shashmap<string>::add_elem_insecure(p_text_descr->Value(), s_option_name);
- }
+ shashmap<string>::add_elem_insecure(p_text_descr->Value(), s_option_name);
+ }
}
- exit_if_xml_error()
- ;
+ exit_if_xml_error();
}
-conf::~conf()
+conf::~conf()
{
delete p_xml;
}
@@ -147,20 +143,20 @@ conf::~conf()
void
conf::exit_if_xml_error() const
{
- if ( p_xml->Error() )
- {
- cout << XMLERR << p_xml->ErrorDesc() << endl;
- exit(1);
- }
+ if ( p_xml->Error() )
+ {
+ cout << XMLERR << p_xml->ErrorDesc() << endl;
+ exit(1);
+ }
}
//<<*
string
conf::colored_error_msg(string s_key)
{
- return "<font color=\"#"
- + shashmap<string>::get_elem("chat.html.errorcolor")
- + "\">" + shashmap<string>::get_elem(s_key) + "</font><br>\n";
+ return "<font color=\"#"
+ + shashmap<string>::get_elem("chat.html.errorcolor")
+ + "\">" + shashmap<string>::get_elem(s_key) + "</font><br>\n";
}
//*>>