[Gnucash-changes] r12882 - gnucash/trunk/src - Exit gnucash from C, not guile.

Chris Shoemaker chris at cvs.gnucash.org
Thu Jan 19 00:54:16 EST 2006


Author: chris
Date: 2006-01-19 00:54:16 -0500 (Thu, 19 Jan 2006)
New Revision: 12882
Trac: http://svn.gnucash.org/trac/changeset/12882

Modified:
   gnucash/trunk/src/bin/Makefile.am
   gnucash/trunk/src/bin/gnucash-bin.c
   gnucash/trunk/src/scm/main.scm
Log:
   Exit gnucash from C, not guile.


Modified: gnucash/trunk/src/bin/Makefile.am
===================================================================
--- gnucash/trunk/src/bin/Makefile.am	2006-01-19 05:18:27 UTC (rev 12881)
+++ gnucash/trunk/src/bin/Makefile.am	2006-01-19 05:54:16 UTC (rev 12882)
@@ -4,6 +4,8 @@
 AM_CFLAGS = -I${top_builddir} ${GLIB_CFLAGS} ${GNOME_CFLAGS} ${GTK_CFLAGS} \
 ${QOF_CFLAGS} \
 -I${top_srcdir}/src/gnome-utils \
+-I${top_srcdir}/src/engine \
+-I${top_srcdir}/src/gnome \
 -I${top_builddir}/src/gnome-utils \
 -I${top_srcdir}/src/gnc-module
 
@@ -11,6 +13,8 @@
 gnucash_bin_SOURCES = gnucash-bin.c
 gnucash_bin_LDADD = ${GUILE_LIBS} ${GLIB_LIBS} ${GNOME_LIBS} ${GTK_LIBS} \
 ${QOF_LIBS} \
+${top_builddir}/src/engine/libgncmod-engine.la \
+${top_builddir}/src/gnome/libgncgnome.la \
 ${top_builddir}/src/gnome-utils/libgncmod-gnome-utils.la \
 ${top_builddir}/src/gnc-module/libgncmodule.la
 

Modified: gnucash/trunk/src/bin/gnucash-bin.c
===================================================================
--- gnucash/trunk/src/bin/gnucash-bin.c	2006-01-19 05:18:27 UTC (rev 12881)
+++ gnucash/trunk/src/bin/gnucash-bin.c	2006-01-19 05:54:16 UTC (rev 12882)
@@ -35,6 +35,8 @@
 #include "i18n.h"
 #include "gnc-version.h"
 #include "gnc-file.h"
+#include "gnc-hooks.h"
+#include "top-level.h"
 
 static int gnucash_show_version;
 /* GNUCASH_SVN is defined whenever we're building from an SVN tree */
@@ -131,6 +133,25 @@
 }
 
 static void
+shutdown(int status) 
+{
+    if (gnucash_ui_is_running()) {
+        if (!gnucash_ui_is_terminating()) {
+            if (gnc_file_query_save()) {
+                gnc_hook_run(HOOK_UI_SHUTDOWN, NULL);
+                gnc_gui_shutdown();
+            }
+        }
+    } else {
+        gnc_gui_destroy();
+        gnc_hook_run(HOOK_SHUTDOWN, NULL);
+        gnc_engine_shutdown();
+        exit(status);
+    }   
+}
+
+
+static void
 inner_main (void *closure, int argc, char **argv)
 {
     SCM main_mod;
@@ -160,6 +181,7 @@
     gnc_module_load_optional("gnucash/business-gnome", 0);
 
     scm_c_eval_string("(gnc:main)");
+    shutdown(0);
     return;
 }
 

Modified: gnucash/trunk/src/scm/main.scm
===================================================================
--- gnucash/trunk/src/scm/main.scm	2006-01-19 05:18:27 UTC (rev 12881)
+++ gnucash/trunk/src/scm/main.scm	2006-01-19 05:54:16 UTC (rev 12882)
@@ -563,4 +563,5 @@
       ;; command line
       (map handle-batch-mode-item (reverse gnc:*batch-mode-things-to-do*)))
 
-  (gnc:shutdown 0))
+  ;;return to C
+)



More information about the gnucash-changes mailing list