From d634f32f4b2dc1be2842b98d796d8d7b410b79e1 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sat, 17 Jan 2009 20:47:22 +0000 Subject: options parser refactoring --- src/anytun.cpp | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) (limited to 'src/anytun.cpp') diff --git a/src/anytun.cpp b/src/anytun.cpp index 8c7c239..2c06a46 100644 --- a/src/anytun.cpp +++ b/src/anytun.cpp @@ -111,7 +111,7 @@ void syncConnector(void* p ) { ThreadParam* param = reinterpret_cast(p); - SyncClient sc ( param->connto.host, param->connto.port); + SyncClient sc ( param->connto.addr, param->connto.port); sc.run(); } @@ -330,22 +330,26 @@ int main(int argc, char* argv[]) { cLog.msg(Log::PRIO_NOTICE) << "anytun started..."; /// std::cout << "anytun - secure anycast tunneling protocol" << std::endl; - int32_t result = gOpt.parse(argc, argv); - if(result) { - if(result > 0) { - std::cerr << "syntax error near: " << argv[result] << std::endl << std::endl; - cLog.msg(Log::PRIO_ERR) << "syntax error, exitting"; - } - if(result == -2) { - std::cerr << "can't parse host-port definition" << std::endl << std::endl; - cLog.msg(Log::PRIO_ERR) << "can't parse host-port definition, exitting"; + + try + { + bool result = gOpt.parse(argc, argv); + if(!result) { + gOpt.printUsage(); + exit(0); } - + } + catch(syntax_error& e) + { + std::cerr << e << std::endl; gOpt.printUsage(); - - exit(result); + exit(-1); } + gOpt.printOptions(); + exit(0); + + std::ofstream pidFile; if(gOpt.getPidFile() != "") { pidFile.open(gOpt.getPidFile().c_str()); @@ -379,7 +383,7 @@ int main(int argc, char* argv[]) else src = new UDPPacketSource(gOpt.getLocalAddr(), gOpt.getLocalPort()); - ConnectToList connect_to = gOpt.getConnectTo(); + HostList connect_to = gOpt.getRemoteSyncHosts(); SyncQueue queue; if(gOpt.getRemoteAddr() != "") @@ -430,7 +434,7 @@ int main(int argc, char* argv[]) sig.init(); #endif - OptionConnectTo* connTo = new OptionConnectTo(); + OptionHost* connTo = new OptionHost(); ThreadParam p(dev, *src, *connTo); boost::thread senderThread(boost::bind(sender,&p)); @@ -443,7 +447,7 @@ int main(int argc, char* argv[]) syncListenerThread = new boost::thread(boost::bind(syncListener,&queue)); std::list connectThreads; - for(ConnectToList::iterator it = connect_to.begin() ;it != connect_to.end(); ++it) { + for(HostList::iterator it = connect_to.begin() ;it != connect_to.end(); ++it) { ThreadParam * point = new ThreadParam(dev, *src, *it); connectThreads.push_back(new boost::thread(boost::bind(syncConnector,point))); } -- cgit v1.2.3