X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fterminal%2Fmain.c;h=16058e45d33913dda0224d721fc7e188409e93a9;hb=9f1d9ea8ac4f5e35a773581cf3d5ebd9e219bff8;hp=0a09cda97c71d27200f2802fd2a53804f04c0847;hpb=dcf9b154cbcaa35c3d8459a201b77eec8bcb30bd;p=pspp diff --git a/src/ui/terminal/main.c b/src/ui/terminal/main.c index 0a09cda97c..16058e45d3 100644 --- a/src/ui/terminal/main.c +++ b/src/ui/terminal/main.c @@ -18,24 +18,29 @@ 02110-1301, USA. */ #include -#include -#include -#include + #include "command-line.h" -#include "command.h" -#include "dictionary.h" -#include "message.h" -#include "file-handle-def.h" -#include "filename.h" -#include "line-buffer.h" -#include "lexer.h" -#include "output.h" +#include "msg-ui.h" #include "progname.h" -#include "random.h" #include "read-line.h" -#include "settings.h" -#include "variable.h" -#include "version.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + #if HAVE_FPU_CONTROL_H #include @@ -54,12 +59,11 @@ #include -#include "debug-print.h" - static void i18n_init (void); static void fpu_init (void); static void handle_error (int code); static int execute_command (void); +static void terminate (bool success) NO_RETURN; /* If a segfault happens, issue a message to that effect and halt */ void bug_handler(int sig); @@ -67,7 +71,6 @@ void bug_handler(int sig); /* Handle quit/term/int signals */ void interrupt_handler(int sig); -void terminate (bool success); /* Program entry point. */ int @@ -83,6 +86,7 @@ main (int argc, char **argv) gsl_set_error_handler_off (); outp_init (); + msg_ui_init (); fn_init (); fh_init (); getl_initialize (); @@ -101,7 +105,7 @@ main (int argc, char **argv) { int retval; - err_check_count (); + check_msg_count (); retval = execute_command (); if (retval == CMD_EOF) @@ -111,8 +115,7 @@ main (int argc, char **argv) } } - terminate (err_error_count == 0); - abort (); + terminate (!any_errors ()); } /* Parse and execute a command, returning its return code. */ @@ -246,25 +249,26 @@ interrupt_handler(int sig UNUSED) /* Terminate PSPP. SUCCESS should be true to exit successfully, false to exit as a failure. */ -void +static void terminate (bool success) { static bool terminating = false; - if (terminating) - return; - terminating = true; - - err_done (); - outp_done (); + if (!terminating) + { + terminating = true; - cancel_transformations (); - dict_destroy (default_dict); + cancel_transformations (); + dict_destroy (default_dict); - random_done (); - settings_done (); - fh_done (); - lex_done (); - getl_uninitialize (); + random_done (); + settings_done (); + fh_done (); + lex_done (); + getl_uninitialize (); + readln_uninitialize (); + outp_done (); + msg_ui_done (); + } exit (success ? EXIT_SUCCESS : EXIT_FAILURE); }