X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fterminal%2Fmain.c;h=26a6a316e0757c1947e44172702b3c304fb11630;hb=3b03678858485b01277d7488323613fb28691834;hp=a9db6febe4a9db25e72244b206e51bf88e3db724;hpb=9ade26c8349b4434008c46cf09bc7473ec743972;p=pspp diff --git a/src/ui/terminal/main.c b/src/ui/terminal/main.c index a9db6febe4..26a6a316e0 100644 --- a/src/ui/terminal/main.c +++ b/src/ui/terminal/main.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2006, 2007, 2009, 2010, 2011 Free Software Foundation, Inc. + Copyright (C) 1997-2000, 2006-2007, 2009-2014 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,10 +30,10 @@ #endif #include +#include "data/dataset.h" #include "data/dictionary.h" #include "data/file-handle-def.h" -#include "data/file-name.h" -#include "data/procedure.h" +#include "data/session.h" #include "data/settings.h" #include "data/variable.h" #include "gsl/gsl_errno.h" @@ -48,11 +48,9 @@ #include "math/random.h" #include "output/driver.h" #include "output/message-item.h" -#include "ui/debugger.h" #include "ui/source-init-opts.h" #include "ui/terminal/terminal-opts.h" #include "ui/terminal/terminal-reader.h" -#include "ui/terminal/terminal.h" #include "gl/fatal-signal.h" #include "gl/progname.h" @@ -61,7 +59,7 @@ #include "gettext.h" #define _(msgid) gettext (msgid) -static struct dataset *the_dataset; +static struct session *the_session; static void add_syntax_reader (struct lexer *, const char *file_name, const char *encoding, enum lex_syntax_mode); @@ -82,6 +80,9 @@ main (int argc, char **argv) set_program_name (argv[0]); + prepare_fatal_error_message (); + prepare_diagnostic_information (); + signal (SIGABRT, bug_handler); signal (SIGSEGV, bug_handler); signal (SIGFPE, bug_handler); @@ -90,13 +91,14 @@ main (int argc, char **argv) fpu_init (); gsl_set_error_handler_off (); + output_engine_push (); fh_init (); settings_init (); - terminal_check_size (); random_init (); lexer = lex_create (); - the_dataset = create_dataset (); + the_session = session_create (NULL); + dataset_create (the_session, ""); parser = argv_parser_create (); terminal_opts = terminal_opts_init (parser, &syntax_mode, &process_statrc, @@ -108,7 +110,7 @@ main (int argc, char **argv) argv_parser_destroy (parser); msg_set_handler (output_msg, lexer); - dataset_set_default_syntax_encoding (the_dataset, syntax_encoding); + session_set_default_syntax_encoding (the_session, syntax_encoding); /* Add syntax files to source stream. */ if (process_statrc) @@ -134,7 +136,7 @@ main (int argc, char **argv) lex_get (lexer); for (;;) { - int result = cmd_parse (lexer, the_dataset); + int result = cmd_parse (lexer, session_active_dataset (the_session)); if (result == CMD_EOF || result == CMD_FINISH) break; @@ -146,7 +148,7 @@ main (int argc, char **argv) lex_discard_noninteractive (lexer); } else if (result == CMD_CASCADING_FAILURE - && lex_get_error_mode (lexer) != LEX_ERROR_INTERACTIVE) + && lex_get_error_mode (lexer) != LEX_ERROR_TERMINAL) { msg (SE, _("Stopping syntax file processing here to avoid " "a cascade of dependent command failures.")); @@ -159,13 +161,13 @@ main (int argc, char **argv) } - destroy_dataset (the_dataset); + output_engine_pop (); + session_destroy (the_session); random_done (); settings_done (); fh_done (); lex_destroy (lexer); - output_close (); i18n_done (); return msg_ui_any_errors (); @@ -192,9 +194,6 @@ bug_handler(int sig) recurse. */ signal (sig, SIG_DFL); -#if DEBUGGING - connect_debugger (); -#endif switch (sig) { case SIGABRT: @@ -228,7 +227,11 @@ output_msg (const struct msg *m_, void *lexer_) m.last_line = lex_get_last_line_number (lexer, 0); } + m.command_name = output_get_command_name (); + message_item_submit (message_item_create (&m)); + + free (m.command_name); } static void