| 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 |