home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1999 November / PCONLINE_11_99.ISO / filesbbs / OS2 / MMSRC029.ZIP / mmail-0.29 / interfac / main.cc < prev    next >
Encoding:
C/C++ Source or Header  |  1999-07-14  |  1.3 KB  |  78 lines

  1. /*
  2.  * MultiMail offline mail reader
  3.  * main, error
  4.  
  5.  Copyright (c) 1996 Kolossvary Tamas <thomas@vma.bme.hu>
  6.  Copyright (c) 1999 William McBrine <wmcbrine@clark.net>
  7.  
  8.  Distributed under the GNU General Public License.
  9.  For details, see the file COPYING in the parent directory. */
  10.  
  11. #include "error.h"
  12. #include "interfac.h"
  13.  
  14. #include <new>
  15. #include <clocale>
  16.  
  17. Interface *interface = 0;
  18. const chtype *ColorArray = 0;
  19. ErrorType error;
  20. mmail mm;
  21. #ifdef __PDCURSES__
  22. int curs_start, curs_end;
  23. #endif
  24.  
  25. void memError();
  26. void fatalError(const char *description);
  27.  
  28. ErrorType::ErrorType()
  29. {
  30.     set_new_handler(memError);
  31.     mygetcwd(origdir);
  32. }
  33.  
  34. ErrorType::~ErrorType()
  35. {
  36.     mychdir(origdir);
  37. }
  38.  
  39. const char *ErrorType::getOrigDir()
  40. {
  41.     return origdir;
  42. }
  43.  
  44. #if defined (SIGWINCH) && !defined (XCURSES)
  45. void sigwinchHandler(int sig)
  46. {
  47.     if (sig == SIGWINCH)
  48.         interface->setResized();
  49.     signal(SIGWINCH, sigwinchHandler);
  50. }
  51. #endif
  52.  
  53. void fatalError(const char *description)
  54. {
  55.     delete interface;
  56.     fprintf(stderr, "\n\n%s\n\n", description);
  57.     exit(EXIT_FAILURE);
  58. };
  59.  
  60. void memError()
  61. {
  62.     fatalError("Out of memory");
  63. }
  64.  
  65. int main(int argc, char **argv)
  66. {
  67.     setlocale(LC_ALL, "");
  68.     interface = new Interface();
  69.     interface->init();
  70.     if (argc > 1)
  71.         for (int i = 1; (i < argc) &&
  72.             interface->fromCommandLine(argv[i]); i++);
  73.     else
  74.         interface->main();
  75.     delete interface;
  76.     return EXIT_SUCCESS;
  77. }
  78.