* gc.c (cleanup, scm_init_storage): Use on_exit if present and
authorMikael Djurfeldt <djurfeldt@nada.kth.se>
Thu, 2 Sep 1999 14:51:51 +0000 (14:51 +0000)
committerMikael Djurfeldt <djurfeldt@nada.kth.se>
Thu, 2 Sep 1999 14:51:51 +0000 (14:51 +0000)
atexit not available.  (sunos4.1.4 needs it.)

libguile/gc.c

index ea28c92..89c03a2 100644 (file)
@@ -1858,7 +1858,17 @@ scm_unprotect_object (obj)
 int terminating;
 
 /* called on process termination.  */
-static void cleanup (void)
+#ifdef HAVE_ATEXIT
+static void
+cleanup (void)
+#else
+#ifdef HAVE_ON_EXIT
+static void
+cleanup (int status, void *arg)
+#else
+#error Dont know how to setup a cleanup handler on your system.
+#endif
+#endif
 {
   terminating = 1;
   scm_flush_all_ports ();
@@ -1905,6 +1915,10 @@ scm_init_storage (scm_sizet init_heap_size)
 
 #ifdef HAVE_ATEXIT
   atexit (cleanup);
+#else
+#ifdef HAVE_ON_EXIT
+  on_exit (cleanup, 0);
+#endif
 #endif
 
   scm_undefineds = scm_cons (SCM_UNDEFINED, SCM_EOL);