projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge commit 'origin/stable' into stable
[pspp]
/
src
/
ui
/
terminal
/
main.c
diff --git
a/src/ui/terminal/main.c
b/src/ui/terminal/main.c
index e3d3dbd7df5d7aaf92daa164ef566eea5dc8abd9..8acbdc2dde79d7bd1a8a97be24da76523bf0f928 100644
(file)
--- a/
src/ui/terminal/main.c
+++ b/
src/ui/terminal/main.c
@@
-1,5
+1,5
@@
/* PSPP - a program for statistical analysis.
/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2006, 2007
, 2009
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
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
@@
-34,7
+34,6
@@
#include <data/file-handle-def.h>
#include <libpspp/getl.h>
#include <data/file-name.h>
#include <data/file-handle-def.h>
#include <libpspp/getl.h>
#include <data/file-name.h>
-#include <data/format.h>
#include <data/procedure.h>
#include <data/settings.h>
#include <data/variable.h>
#include <data/procedure.h>
#include <data/settings.h>
#include <data/variable.h>
@@
-53,7
+52,9
@@
#include <ui/terminal/read-line.h>
#include <ui/terminal/terminal.h>
#include <ui/terminal/read-line.h>
#include <ui/terminal/terminal.h>
+#include "fatal-signal.h"
#include "progname.h"
#include "progname.h"
+#include "relocatable.h"
#include "gettext.h"
#define _(msgid) gettext (msgid)
#include "gettext.h"
#define _(msgid) gettext (msgid)
@@
-61,7
+62,7
@@
static void i18n_init (void);
static void fpu_init (void);
static void i18n_init (void);
static void fpu_init (void);
-static void
terminate (bool success) NO_RETURN
;
+static void
clean_up (void)
;
/* If a segfault happens, issue a message to that effect and halt */
void bug_handler(int sig);
/* If a segfault happens, issue a message to that effect and halt */
void bug_handler(int sig);
@@
-84,13
+85,12
@@
main (int argc, char **argv)
signal (SIGABRT, bug_handler);
signal (SIGSEGV, bug_handler);
signal (SIGFPE, bug_handler);
signal (SIGABRT, bug_handler);
signal (SIGSEGV, bug_handler);
signal (SIGFPE, bug_handler);
-
signal (SIGINT, interrupt_handler
);
+
at_fatal_signal (clean_up
);
i18n_init ();
fpu_init ();
gsl_set_error_handler_off ();
i18n_init ();
fpu_init ();
gsl_set_error_handler_off ();
- fmt_init ();
outp_init ();
fn_init ();
fh_init ();
outp_init ();
fn_init ();
fh_init ();
@@
-109,7
+109,7
@@
main (int argc, char **argv)
if (parse_command_line (argc, argv, the_source_stream))
{
msg_ui_init (the_source_stream);
if (parse_command_line (argc, argv, the_source_stream))
{
msg_ui_init (the_source_stream);
- if (!get_testing_mode ())
+ if (!
settings_
get_testing_mode ())
outp_read_devices ();
else
outp_configure_driver_line (
outp_read_devices ();
else
outp_configure_driver_line (
@@
-137,7
+137,8
@@
main (int argc, char **argv)
}
}
}
}
- terminate (!any_errors ());
+ clean_up ();
+ return any_errors ();
}
\f
static void
}
\f
static void
@@
-150,7
+151,7
@@
i18n_init (void)
#if HAVE_LC_PAPER
setlocale (LC_PAPER, "");
#endif
#if HAVE_LC_PAPER
setlocale (LC_PAPER, "");
#endif
- bindtextdomain (PACKAGE,
locale_dir
);
+ bindtextdomain (PACKAGE,
relocate (locale_dir)
);
textdomain (PACKAGE);
#endif /* ENABLE_NLS */
}
textdomain (PACKAGE);
#endif /* ENABLE_NLS */
}
@@
-188,17
+189,9
@@
bug_handler(int sig)
}
}
}
}
-void
-interrupt_handler(int sig UNUSED)
-{
- terminate (false);
-}
-
-
-/* Terminate PSPP. SUCCESS should be true to exit successfully,
- false to exit as a failure. */
+/* Clean up PSPP in preparation for termination. */
static void
static void
-
terminate (bool success
)
+
clean_up (void
)
{
static bool terminating = false;
if (!terminating)
{
static bool terminating = false;
if (!terminating)
@@
-214,10
+207,7
@@
terminate (bool success)
destroy_source_stream (the_source_stream);
prompt_done ();
readln_uninitialize ();
destroy_source_stream (the_source_stream);
prompt_done ();
readln_uninitialize ();
-
outp_done ();
msg_ui_done ();
outp_done ();
msg_ui_done ();
- fmt_done ();
}
}
- exit (success ? EXIT_SUCCESS : EXIT_FAILURE);
}
}