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 (argc < 2) {
- std::string msg = anna::functions::asString("Usage: %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");
}