diff gui/src/octave-gui.cc @ 15137:16a6b0a6855d gui

GUI: support for octave arguments and integrate with run-octave. * src/octave.h (octave_initialize_interpreter, octave_execute_interpreter): New functions. (octave_cmdline_argc, octave_cmdline_argv, octave_embedded): New variables. * src/octave.cc (octave_cmdline_argc, octave_cmdline_argv, octave_embedded): New variables. (octave_initialize_interpreter, octave_execute_interpreter): New functions. (octave_main): Rewrite using them. * run-octave.in (octave_executable): New variable. (-gui): New option flag. * gui/src/octave-adapter/octave-main-thread.cc (octave_main_thread::run): Use octave_execute_interpreter. * gui/src/octave-gui.cc (dissociate_terminal): New function. (main): Use it. Also use octave_initialize_interpreter.
author John W. Eaton <jwe@octave.org>
date Sun, 05 Aug 2012 16:15:58 -0400
parents d02b229ce693
children bfc220d1de67
line wrap: on
line diff
--- a/gui/src/octave-gui.cc	Sun Aug 05 16:43:55 2012 -0400
+++ b/gui/src/octave-gui.cc	Sun Aug 05 16:15:58 2012 -0400
@@ -22,36 +22,43 @@
 #include "resource-manager.h"
 #include "main-window.h"
 
-int
-main (int argc, char *argv[])
+// Dissociate from the controlling terminal, if any.
+
+static void
+dissociate_terminal (void)
 {
-  /* dissociate from the controlling terminal, if any */
+#if ! defined (Q_OS_WIN32) || defined (Q_OS_CYGWIN)
+  pid_t pid = fork ();
 
-  pid_t pid = fork ();
   if (pid < 0)
     {
-      //fprintf (stderr, "fork failed\n");
-      return 1;
+      std::cerr << "fork failed!" << std::endl;;
+      exit (1);
     }
   else if (pid == 0)
     {
-      /* child */
-      //fprintf (stderr, "in child, calling setsid ()\n");
+      // Child.
 
       if (setsid () < 0)
         {
-          //fprintf (stderr, "setsid error\n");
-          return 1;
+          std::cerr << "setsid error" << std::endl;
+          exit (1);
         }
     }
   else
-    {
-      /* parent */
-      //fprintf (stderr, "in parent, exiting\n");
-      exit (0);
-    }
+    exit (0);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+  octave_initialize_interpreter (argc, argv, 0);
+
+  dissociate_terminal ();
 
   QApplication application (argc, argv);
+
   while (true)
     {
       if (resource_manager::instance ()->is_first_run ())