rem: std::cerr << "Normal exit..." << std::endl;
context: int main(int argc, char *argv[]){  ecasound_setup_signals();  try {     /* FIXME: remove this at some point; ecasound shoult not leak exceptions anymore */    COMMAND_LINE cline (argc, argv);    ecasound_parse_command_line(cline);    bool debug_to_cerr = true;    if (cline.has("-D") != true) {      debug_to_cerr = false;      attach_debug_object(&ecasound_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)	ecasound_print_header(&cerr);      else	ecasound_print_header(&std::cout);    }    try {      ECA_SESSION* session = new ECA_SESSION(cline);      ecasound_pointer_to_ecasession = session; // used only for signal handling!      if (session->is_interactive() == true) {#if defined USE_NCURSES || defined USE_TERMCAP	ecasound_start_iactive_readline(session);#else	ecasound_start_iactive(session);#endif      }      else {	ecasound_start_passive(session);      }    }    catch(ECA_ERROR& e) {      /* problems with ECA_SESSION constructor (...parsing 'cline' options) */      std::cerr << "---\nERROR: [" << e.error_section() << "] : \"" << e.error_message() << "\"\n\n";      ecasound_clean_exit(ecasound_return_cpp_exception);    }  }  catch(...) {    std::cerr << "---\nCaught an unknown exception! (1)\n";    std::cerr << "This is a severe programming error that should be reported!\n";    ecasound_error_no = ecasound_return_unknown_exception;  }  ecadebug->flush();  std::cerr << "Normal exit..." << std::endl;  ecasound_clean_exit(ecasound_error_no);}