Mercurial > octave
annotate liboctave/util/quit.cc @ 27480:63b417917f5e
remove some obsolete signal handling functions
* quit.h, quit.cc (octave_exception): Delete enum declaration.
(octave_exception_state, octave_exit_exception_status,
octave_exit_exception_safe_to_return): Delete variables and all uses.
(octave_throw_interrupt_exception, octave_throw_execution_exception,
octave_throw_bad_alloc, octave_throw_exit_exception,
octave_rethrow_exception): Delete functions and all uses.
* cquit.c: Delete
* liboctave/util/module.mk: Update.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Sun, 06 Oct 2019 16:30:35 -0400 |
parents | fd32c1a9b1bd |
children | 7a871724d4b0 |
rev | line source |
---|---|
4153 | 1 /* |
2 | |
26376
00f796120a6d
maint: Update copyright dates in all source files.
John W. Eaton <jwe@octave.org>
parents:
25438
diff
changeset
|
3 Copyright (C) 2002-2019 John W. Eaton |
4153 | 4 |
5 This file is part of Octave. | |
6 | |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24444
diff
changeset
|
7 Octave is free software: you can redistribute it and/or modify it |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22402
diff
changeset
|
8 under the terms of the GNU General Public License as published by |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24444
diff
changeset
|
9 the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22402
diff
changeset
|
10 (at your option) any later version. |
4153 | 11 |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22402
diff
changeset
|
12 Octave is distributed in the hope that it will be useful, but |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22402
diff
changeset
|
13 WITHOUT ANY WARRANTY; without even the implied warranty of |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22402
diff
changeset
|
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22402
diff
changeset
|
15 GNU General Public License for more details. |
4153 | 16 |
17 You should have received a copy of the GNU General Public License | |
7016 | 18 along with Octave; see the file COPYING. If not, see |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24444
diff
changeset
|
19 <https://www.gnu.org/licenses/>. |
4153 | 20 |
21 */ | |
22 | |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
23 #if defined (HAVE_CONFIG_H) |
21301
40de9f8f23a6
Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents:
21202
diff
changeset
|
24 # include "config.h" |
4153 | 25 #endif |
26 | |
4154 | 27 #include <cstring> |
28 | |
27471 | 29 #include <ostream> |
30 #include <sstream> | |
4180 | 31 #include <new> |
32 | |
4153 | 33 #include "quit.h" |
34 | |
27480
63b417917f5e
remove some obsolete signal handling functions
John W. Eaton <jwe@octave.org>
parents:
27471
diff
changeset
|
35 sig_atomic_t octave_interrupt_state = 0; |
63b417917f5e
remove some obsolete signal handling functions
John W. Eaton <jwe@octave.org>
parents:
27471
diff
changeset
|
36 |
63b417917f5e
remove some obsolete signal handling functions
John W. Eaton <jwe@octave.org>
parents:
27471
diff
changeset
|
37 volatile sig_atomic_t octave_signal_caught = 0; |
63b417917f5e
remove some obsolete signal handling functions
John W. Eaton <jwe@octave.org>
parents:
27471
diff
changeset
|
38 |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23426
diff
changeset
|
39 void (*octave_signal_hook) (void) = nullptr; |
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23426
diff
changeset
|
40 void (*octave_interrupt_hook) (void) = nullptr; |
4429 | 41 |
27471 | 42 namespace octave |
43 { | |
44 std::string execution_exception::stack_trace (void) const | |
45 { | |
46 size_t nframes = m_stack_info.size (); | |
47 | |
48 if (nframes == 0) | |
49 return std::string (); | |
50 | |
51 std::ostringstream buf; | |
52 | |
53 buf << "error: called from\n"; | |
54 | |
55 for (const auto& frm : m_stack_info) | |
56 { | |
57 buf << " " << frm.fcn_name (); | |
58 | |
59 int line = frm.line (); | |
60 | |
61 if (line > 0) | |
62 { | |
63 buf << " at line " << line; | |
64 | |
65 int column = frm.column (); | |
66 | |
67 if (column > 0) | |
68 buf << " column " << column; | |
69 } | |
70 | |
71 buf << "\n"; | |
72 } | |
73 | |
74 return buf.str (); | |
75 } | |
76 | |
77 void execution_exception::display (std::ostream& os) const | |
78 { | |
79 if (! m_message.empty ()) | |
80 { | |
81 os << m_err_type << ": " << m_message; | |
82 | |
83 if (m_message.back () != '\n') | |
84 { | |
85 os << "\n"; | |
86 | |
87 std::string st = stack_trace (); | |
88 | |
89 if (! st.empty ()) | |
90 os << st; | |
91 } | |
92 } | |
93 } | |
94 } | |
95 | |
4153 | 96 void |
5142 | 97 octave_handle_signal (void) |
98 { | |
27480
63b417917f5e
remove some obsolete signal handling functions
John W. Eaton <jwe@octave.org>
parents:
27471
diff
changeset
|
99 octave_signal_caught = 0; |
63b417917f5e
remove some obsolete signal handling functions
John W. Eaton <jwe@octave.org>
parents:
27471
diff
changeset
|
100 |
5142 | 101 if (octave_signal_hook) |
102 octave_signal_hook (); | |
103 | |
104 if (octave_interrupt_state > 0) | |
105 { | |
106 octave_interrupt_state = -1; | |
27480
63b417917f5e
remove some obsolete signal handling functions
John W. Eaton <jwe@octave.org>
parents:
27471
diff
changeset
|
107 |
63b417917f5e
remove some obsolete signal handling functions
John W. Eaton <jwe@octave.org>
parents:
27471
diff
changeset
|
108 if (octave_interrupt_hook) |
63b417917f5e
remove some obsolete signal handling functions
John W. Eaton <jwe@octave.org>
parents:
27471
diff
changeset
|
109 octave_interrupt_hook (); |
63b417917f5e
remove some obsolete signal handling functions
John W. Eaton <jwe@octave.org>
parents:
27471
diff
changeset
|
110 |
63b417917f5e
remove some obsolete signal handling functions
John W. Eaton <jwe@octave.org>
parents:
27471
diff
changeset
|
111 throw octave::interrupt_exception (); |
5142 | 112 } |
113 } |