X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fui%2Fterminal%2Fmain.c;h=a92d6c040ff4a3ff8cdef27d72b027d32a766a3c;hb=95008dd8d8a668c4e7163486835e32d1755b8269;hp=a709d99351ca1b22486e77550cd51c2ce0dcb40f;hpb=2be9bee9da6a2ce27715e58128569594319abfa2;p=pspp diff --git a/src/ui/terminal/main.c b/src/ui/terminal/main.c index a709d99351..a92d6c040f 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 @@ -33,7 +33,7 @@ #include "data/dataset.h" #include "data/dictionary.h" #include "data/file-handle-def.h" -#include "data/file-name.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); @@ -90,13 +88,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 +107,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 +133,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 +145,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 +158,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 +191,6 @@ bug_handler(int sig) recurse. */ signal (sig, SIG_DFL); -#if DEBUGGING - connect_debugger (); -#endif switch (sig) { case SIGABRT: @@ -228,7 +224,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