-// ANNA - Anna is Not 'N' Anymore
+// ANNA - Anna is Not Nothingness Anymore
//
// (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo
//
-// https://bitbucket.org/testillano/anna
+// http://redmine.teslayout.com/projects/anna-suite
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
-// * Neither the name of Google Inc. nor the names of its
+// * Neither the name of the copyright holder nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
void _exit(const std::string & msg) {
- std::cout << std::endl << msg << std::endl;
- exit(-1);
+ std::cout << std::endl << msg << std::endl;
+ exit(-1);
}
int main(int argc, char** argv) {
- Logger::setLevel(Logger::Debug);
- Logger::initialize("stackManagement", new TraceWriter("file.trace", 2048000));
- stack::Engine & engine = stack::Engine::instantiate();
- std::string exec = argv[0];
- std::string param = argv[1] ? argv[1] : "";
-
- if (param == "") {
- std::string msg = anna::functions::asString("Use: %s <list of xml dictionaries overloaded>,\n i.e. '%s avps.xml commands.xml'", exec.c_str(), exec.c_str());
- _exit(msg);
- }
-
- int index = 1;
- const char *xmlFile = argv[index];
- stack::Dictionary *dictionary;
-
- try {
- dictionary = engine.createDictionary(0 /* general unique stack id */);
- dictionary->allowUpdates();
-
- while (xmlFile) {
- dictionary->load(xmlFile);
- xmlFile = argv[++index];
- }
-
- engine.removeStack(0);
- // Trace:
- LOGINFORMATION(Logger::information(engine.asString(), ANNA_FILE_LOCATION));
- LOGDEBUG(Logger::debug(dictionary->asString(), ANNA_FILE_LOCATION));
- // Output:
- std::ofstream out("./result.xml", std::ifstream::out);
- std::string buffer = dictionary->asXMLString();
- out.write(buffer.c_str(), buffer.size());
- out.close();
- std::cout << "Written 'result.xml'" << std::endl;
- } catch (anna::RuntimeException &ex) {
- ex.trace();
- std::cout << ex.getText() << std::endl;
- }
-
- _exit("Open 'file.trace' in order to see the stacks loaded");
+ std::string exec = argv[0];
+ std::string execBN = exec.substr(exec.find_last_of("/") + 1);
+ std::string filetrace = execBN + ".trace";
+ Logger::setLevel(Logger::Debug);
+ Logger::initialize(execBN.c_str(), new TraceWriter(filetrace.c_str(), 2048000));
+ stack::Engine & engine = stack::Engine::instantiate();
+
+ if(argc < 2) {
+ std::string msg = anna::functions::asString("Usage: %s <list of '.xml' dictionaries overloaded>\n e.g. '%s avps.xml commands.xml'", exec.c_str(), exec.c_str());
+ _exit(msg);
+ }
+
+ stack::Dictionary *dictionary;
+ int index = 1;
+
+ try {
+ dictionary = engine.createDictionary(0 /* general unique stack id */);
+ dictionary->allowUpdates();
+
+ while(index < argc) {
+ dictionary->load(argv[index]);
+ index++;
+ }
+
+ engine.removeStack(0);
+ // Trace:
+ LOGINFORMATION(Logger::information(engine.asString(), ANNA_FILE_LOCATION));
+ LOGDEBUG(Logger::debug(dictionary->asString(), ANNA_FILE_LOCATION));
+ // Output:
+ std::ofstream out("./result.xml", std::ifstream::out);
+ std::string buffer = dictionary->asXMLString();
+ out.write(buffer.c_str(), buffer.size());
+ out.close();
+ std::cout << "Written 'result.xml'" << std::endl;
+ } catch(anna::RuntimeException &ex) {
+ ex.trace();
+ std::cout << ex.getText() << std::endl;
+ }
+
+ _exit("Open 'file.trace' in order to see the stacks loaded");
}