#include"plugin.h"// Transport includes#include"transport/config.h"#include"transport/networkplugin.h"#include"transport/logging.h"// Swiften#include"Swiften/Swiften.h"#ifndef _WIN32// for signal handler#include"unistd.h"#include"signal.h"#include"sys/wait.h"#include"sys/signal.h"#endif// Boost#include<boost/algorithm/string.hpp>usingnamespaceboost::filesystem;usingnamespaceboost::program_options;usingnamespaceTransport;#ifndef _WIN32staticvoidspectrum_sigchld_handler(intsig){intstatus;pid_tpid;do{pid=waitpid(-1,&status,WNOHANG);}while(pid!=0&&pid!=(pid_t)-1);if((pid==(pid_t)-1)&&(errno!=ECHILD)){charerrmsg[BUFSIZ];snprintf(errmsg,BUFSIZ,"Warning: waitpid() returned %d",pid);perror(errmsg);}}#endifintmain(intargc,char*argv[]){std::stringhost;intport;#ifndef _WIN32if(signal(SIGCHLD,spectrum_sigchld_handler)==SIG_ERR){std::cout<<"SIGCHLD handler can't be set\n";return-1;}#endifstd::stringerror;Config*cfg=Config::createFromArgs(argc,argv,error,host,port);if(cfg==NULL){std::cerr<<error;return1;}Logging::initBackendLogging(cfg);Swift::SimpleEventLoopeventLoop;Pluginp(cfg,&eventLoop,host,port);eventLoop.run();return0;}