OLD | NEW |
| (Empty) |
1 # Copyright © 2002 Adam Heath <doogie@debian.org> | |
2 # Copyright © 2012-2013 Guillem Jover <guillem@debian.org> | |
3 # | |
4 # This program is free software; you can redistribute it and/or modify | |
5 # it under the terms of the GNU General Public License as published by | |
6 # the Free Software Foundation; either version 2 of the License, or | |
7 # (at your option) any later version. | |
8 # | |
9 # This program is distributed in the hope that it will be useful, | |
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 # GNU General Public License for more details. | |
13 # | |
14 # You should have received a copy of the GNU General Public License | |
15 # along with this program. If not, see <https://www.gnu.org/licenses/>. | |
16 | |
17 package Dpkg::Exit; | |
18 | |
19 use strict; | |
20 use warnings; | |
21 | |
22 our $VERSION = '1.01'; | |
23 | |
24 use Exporter qw(import); | |
25 | |
26 our @EXPORT_OK = qw(push_exit_handler pop_exit_handler run_exit_handlers); | |
27 | |
28 # XXX: Backwards compatibility, stop exporting on VERSION 2.00. | |
29 ## no critic (Variables::ProhibitPackageVars) | |
30 our @handlers = (); | |
31 ## use critic | |
32 | |
33 =encoding utf8 | |
34 | |
35 =head1 NAME | |
36 | |
37 Dpkg::Exit - program exit handlers | |
38 | |
39 =head1 DESCRIPTION | |
40 | |
41 The Dpkg::Exit module provides support functions to run handlers on exit. | |
42 | |
43 =head1 FUNCTIONS | |
44 | |
45 =over 4 | |
46 | |
47 =item push_exit_handler($func) | |
48 | |
49 Register a code reference into the exit function handlers stack. | |
50 | |
51 =cut | |
52 | |
53 sub push_exit_handler { | |
54 my ($func) = shift; | |
55 push @handlers, $func; | |
56 } | |
57 | |
58 =item pop_exit_handler() | |
59 | |
60 Pop the last registered exit handler from the handlers stack. | |
61 | |
62 =cut | |
63 | |
64 sub pop_exit_handler { | |
65 pop @handlers; | |
66 } | |
67 | |
68 =item run_exit_handlers() | |
69 | |
70 Run the registered exit handlers. | |
71 | |
72 =cut | |
73 | |
74 sub run_exit_handlers { | |
75 &$_() foreach (reverse @handlers); | |
76 } | |
77 | |
78 sub exit_handler { | |
79 run_exit_handlers(); | |
80 exit(127); | |
81 } | |
82 | |
83 $SIG{INT} = \&exit_handler; | |
84 $SIG{HUP} = \&exit_handler; | |
85 $SIG{QUIT} = \&exit_handler; | |
86 | |
87 =back | |
88 | |
89 =head1 CHANGES | |
90 | |
91 =head2 Version 1.01 | |
92 | |
93 New functions: push_exit_handler(), pop_exit_handler(), run_exit_handlers() | |
94 Deprecated variable: @handlers | |
95 | |
96 =cut | |
97 | |
98 1; | |
OLD | NEW |