| Index: third_party/dpkg-dev/scripts/Dpkg/Exit.pm
 | 
| diff --git a/third_party/dpkg-dev/scripts/Dpkg/Exit.pm b/third_party/dpkg-dev/scripts/Dpkg/Exit.pm
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..b967f42f52c1bcc092d11b48006f1402c85f1d34
 | 
| --- /dev/null
 | 
| +++ b/third_party/dpkg-dev/scripts/Dpkg/Exit.pm
 | 
| @@ -0,0 +1,98 @@
 | 
| +# Copyright © 2002 Adam Heath <doogie@debian.org>
 | 
| +# Copyright © 2012-2013 Guillem Jover <guillem@debian.org>
 | 
| +#
 | 
| +# 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
 | 
| +# the Free Software Foundation; either version 2 of the License, or
 | 
| +# (at your option) any later version.
 | 
| +#
 | 
| +# This program is distributed in the hope that it will be useful,
 | 
| +# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
| +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
| +# GNU General Public License for more details.
 | 
| +#
 | 
| +# You should have received a copy of the GNU General Public License
 | 
| +# along with this program.  If not, see <https://www.gnu.org/licenses/>.
 | 
| +
 | 
| +package Dpkg::Exit;
 | 
| +
 | 
| +use strict;
 | 
| +use warnings;
 | 
| +
 | 
| +our $VERSION = '1.01';
 | 
| +
 | 
| +use Exporter qw(import);
 | 
| +
 | 
| +our @EXPORT_OK = qw(push_exit_handler pop_exit_handler run_exit_handlers);
 | 
| +
 | 
| +# XXX: Backwards compatibility, stop exporting on VERSION 2.00.
 | 
| +## no critic (Variables::ProhibitPackageVars)
 | 
| +our @handlers = ();
 | 
| +## use critic
 | 
| +
 | 
| +=encoding utf8
 | 
| +
 | 
| +=head1 NAME
 | 
| +
 | 
| +Dpkg::Exit - program exit handlers
 | 
| +
 | 
| +=head1 DESCRIPTION
 | 
| +
 | 
| +The Dpkg::Exit module provides support functions to run handlers on exit.
 | 
| +
 | 
| +=head1 FUNCTIONS
 | 
| +
 | 
| +=over 4
 | 
| +
 | 
| +=item push_exit_handler($func)
 | 
| +
 | 
| +Register a code reference into the exit function handlers stack.
 | 
| +
 | 
| +=cut
 | 
| +
 | 
| +sub push_exit_handler {
 | 
| +    my ($func) = shift;
 | 
| +    push @handlers, $func;
 | 
| +}
 | 
| +
 | 
| +=item pop_exit_handler()
 | 
| +
 | 
| +Pop the last registered exit handler from the handlers stack.
 | 
| +
 | 
| +=cut
 | 
| +
 | 
| +sub pop_exit_handler {
 | 
| +    pop @handlers;
 | 
| +}
 | 
| +
 | 
| +=item run_exit_handlers()
 | 
| +
 | 
| +Run the registered exit handlers.
 | 
| +
 | 
| +=cut
 | 
| +
 | 
| +sub run_exit_handlers {
 | 
| +    &$_() foreach (reverse @handlers);
 | 
| +}
 | 
| +
 | 
| +sub exit_handler {
 | 
| +    run_exit_handlers();
 | 
| +    exit(127);
 | 
| +}
 | 
| +
 | 
| +$SIG{INT} = \&exit_handler;
 | 
| +$SIG{HUP} = \&exit_handler;
 | 
| +$SIG{QUIT} = \&exit_handler;
 | 
| +
 | 
| +=back
 | 
| +
 | 
| +=head1 CHANGES
 | 
| +
 | 
| +=head2 Version 1.01
 | 
| +
 | 
| +New functions: push_exit_handler(), pop_exit_handler(), run_exit_handlers()
 | 
| +Deprecated variable: @handlers
 | 
| +
 | 
| +=cut
 | 
| +
 | 
| +1;
 | 
| 
 |