rem: struct sigaction ign_handler; ign_handler.sa_handler = SIG_IGN; sigemptyset(&ign_handler.sa_mask); ign_handler.sa_flags = 0;   sigaction(SIGTERM, &es_handler, 0); sigaction(SIGINT, &es_handler, 0); sigaction(SIGQUIT, &es_handler, 0); sigaction(SIGABRT, &es_handler, 0);   sigaction(SIGHUP, &ign_handler, 0); sigaction(SIGPIPE, &ign_handler, 0);  try {
add: try {
context: int main(int argc, char *argv[]){  struct sigaction es_handler;  es_handler.sa_handler = signal_handler;  sigemptyset(&es_handler.sa_mask);  es_handler.sa_flags = 0;  struct sigaction ign_handler;  ign_handler.sa_handler = SIG_IGN;  sigemptyset(&ign_handler.sa_mask);  ign_handler.sa_flags = 0;  /* handle the follwing signals explicitly */  sigaction(SIGTERM, &es_handler, 0);  sigaction(SIGINT, &es_handler, 0);  sigaction(SIGQUIT, &es_handler, 0);  sigaction(SIGABRT, &es_handler, 0);    /* ignore the following signals */  sigaction(SIGHUP, &ign_handler, 0);  sigaction(SIGPIPE, &ign_handler, 0);  try { /* FIXME: remove this at some point; ecasound shoult not leak exceptions anymore */    COMMAND_LINE cline (argc, argv);    parse_command_line(cline);    bool debug_to_cerr = true;    if (cline.has("-D") != true) {      debug_to_cerr = false;      attach_debug_object(&textdebug);      }    ecadebug->set_debug_level(ECA_DEBUG::info |			      ECA_DEBUG::module_flow);    if (cline.has("-o:stdout") ||	cline.has("stdout") || 	cline.has("-d:0") || 	cline.has('q'))      ecadebug->disable();    else {      if (debug_to_cerr == true)	print_header(&cerr);      else	print_header(&cout);    }    try {      ECA_SESSION* session = new ECA_SESSION(cline);      global_pointer_to_ecasession = session; // used only for signal handling!      if (session->is_interactive()) {#if defined USE_NCURSES || defined USE_TERMCAP	start_iactive_readline(session);#else	start_iactive(session);#endif      }      else {	if (session->is_selected_chainsetup_connected() == true) {	  ECA_ENGINE* epros = new ECA_ENGINE(session);	  global_pointer_to_ecaengine = epros;	  epros->exec();	}      }    }    catch(ECA_ERROR& e) {      /* problems with ECA_SESSION constructor (...parsing 'cline' options) */      std::cerr << "---\nERROR: [" << e.error_section() << "] : \"" << e.error_message() << "\"\n\n";      clean_exit(127);    }  }  catch(...) {    std::cerr << "---\nCaught an unknown exception! (1)\n";    std::cerr << "This is a severe programming error that should be reported!\n";    global_error_no = 1;  }  ecadebug->flush();  // std::cerr << "Normal exit..." << endl;  clean_exit(global_error_no);}