Rework moments routines for improved numerical stability based on
[pspp-builds.git] / src / main.c
index 987daa8f638a7e1b395a7c87ed3a06726320bcfe..4c216030726516b2d51a538b6a6e4f0f0266db67 100644 (file)
@@ -28,6 +28,7 @@
 #include "glob.h"
 #include "lexer.h"
 #include "output.h"
+#include "settings.h"
 #include <signal.h>
 
 #include <stdlib.h>
@@ -55,13 +56,6 @@ void bug_handler(int sig);
    we hit end-of-file unexpectedly (or whatever). */
 int start_interactive;
 
-/* Initialise error handling on the gsl library */
-static void 
-err_handler_gsl (const char *reason, const char *file,
-       int line, int gsl_errno UNUSED)
-{
-  msg(FE, _("gsl error at %s:%d; reason: \"%s\""), file,line,reason);
-}
 
 /* Program entry point. */
 int
@@ -69,7 +63,7 @@ main (int argc, char **argv)
 {
   signal (SIGSEGV, bug_handler);
 
-  gsl_set_error_handler(err_handler_gsl);
+  gsl_set_error_handler_off();
 
   /* Initialization. */
   if (!outp_init ())
@@ -105,6 +99,7 @@ parse_script (void)
 static int
 execute_command (void)
 {
+  int result;
   /* Read the command's first token.
      We may hit end of file.
      If so, give the line reader a chance to proceed to the next file.
@@ -123,7 +118,12 @@ execute_command (void)
 
   /* Parse the command. */
   getl_prompt = GETL_PRPT_CONTINUATION;
-  return cmd_parse ();
+  result =  cmd_parse ();
+  /* Unset the /ALGORITHM subcommand if it was used */
+  unset_cmd_algorithm ();
+
+  return result;
 }
 
 /* Print an error message corresponding to the command return code