home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1994 November / macformat-018.iso / Utility Spectacular / Developer / f2c_5_92 Folder / f2c_5_92 / libF77 / main.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-05-26  |  1.4 KB  |  99 lines  |  [TEXT/ttxt]

  1. /* STARTUP PROCEDURE FOR UNIX FORTRAN PROGRAMS */
  2.  
  3. #ifdef THINK_C
  4. #define NO_ONEXIT
  5. #endif
  6. #include "stdio.h"
  7. #include "signal.h"
  8.  
  9. #ifndef SIGIOT
  10. #define SIGIOT SIGABRT
  11. #endif
  12.  
  13. #ifdef NO__STDC
  14. #define ONEXIT onexit
  15. extern void f_exit();
  16. #else
  17. #ifdef __STDC__
  18. #include "stdlib.h"
  19. extern void f_exit(void);
  20. #ifndef NO_ONEXIT
  21. #define ONEXIT atexit
  22. extern int atexit(void (*)(void));
  23. #endif
  24. #else
  25. #ifndef NO_ONEXIT
  26. #define ONEXIT onexit
  27. extern void f_exit();
  28. #endif
  29. #endif
  30. #endif
  31.  
  32. extern void sig_die();
  33.  
  34. static void sigfdie(n)
  35. {
  36. sig_die("Floating Exception", 1);
  37. }
  38.  
  39.  
  40. static void sigidie(n)
  41. {
  42. sig_die("IOT Trap", 1);
  43. }
  44.  
  45. #ifdef SIGQUIT
  46. static void sigqdie(n)
  47. {
  48. sig_die("Quit signal", 1);
  49. }
  50. #endif
  51.  
  52.  
  53. static void sigindie(n)
  54. {
  55. sig_die("Interrupt", 0);
  56. }
  57.  
  58.  
  59.  
  60. static void sigtdie(n)
  61. {
  62. sig_die("Killed", 0);
  63. }
  64.  
  65.  
  66. int xargc;
  67. char **xargv;
  68.  
  69. main(argc, argv)
  70. int argc;
  71. char **argv;
  72. {
  73. xargc = argc;
  74. xargv = argv;
  75. signal(SIGFPE, sigfdie);    /* ignore underflow, enable overflow */
  76. signal(SIGIOT, sigidie);
  77. #ifdef SIGQUIT
  78. if(signal(SIGQUIT,sigqdie) == SIG_IGN)
  79.     signal(SIGQUIT, SIG_IGN);
  80. #endif
  81. if(signal(SIGINT, sigindie) == SIG_IGN)
  82.     signal(SIGINT, SIG_IGN);
  83. signal(SIGTERM,sigtdie);
  84.  
  85. #ifdef pdp11
  86.     ldfps(01200); /* detect overflow as an exception */
  87. #endif
  88.  
  89. f_init();
  90. #ifndef NO_ONEXIT
  91. ONEXIT(f_exit);
  92. #endif
  93. MAIN__();
  94. #ifdef NO_ONEXIT
  95. f_exit();
  96. #endif
  97. exit(0);    /* exit(0) rather than return(0) to bypass Cray bug */
  98. }
  99.