diff options
Diffstat (limited to 'debian/vendor-h2o/share/h2o/kill-on-close')
-rwxr-xr-x | debian/vendor-h2o/share/h2o/kill-on-close | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/debian/vendor-h2o/share/h2o/kill-on-close b/debian/vendor-h2o/share/h2o/kill-on-close deleted file mode 100755 index 4890abd..0000000 --- a/debian/vendor-h2o/share/h2o/kill-on-close +++ /dev/null @@ -1,63 +0,0 @@ -#! /bin/sh -exec ${H2O_PERL:-perl} -x $0 "$@" -#! perl - -use strict; -use warnings; -use Errno qw(EINTR); -use POSIX qw(WNOHANG); - -my $rmpath; - -while (@ARGV) { - if ($ARGV[0] eq '--') { - shift @ARGV; - last; - } elsif ($ARGV[0] !~ /^--/) { - last; - } elsif ($ARGV[0] =~ /^--rm(?:=(.*)|)$/) { - shift @ARGV; - if (defined $1) { - $rmpath = $1; - } else { - die "option `--rm` requires an argument\n" - unless @ARGV; - $rmpath = shift @ARGV; - } - } else { - die "unknown argument: $ARGV[0]"; - } -} - -shift @ARGV - if @ARGV && $ARGV[0] eq '--'; - -die "Usage: $0 [--rm=path] -- cmd args...\n" - unless @ARGV; - -open my $wait_fh, '<&', 5 - or die "failed to open wait file descriptor (fd=5):$!"; - -my $pid = fork; -die "fork failed:$!" - if $pid == -1; -if ($pid == 0) { - exec @ARGV; - die "failed to exec $ARGV[0]:$!"; -} - -$SIG{INT} = sub {}; - -while (1) { - my $r = sysread $wait_fh, my $buf, 1; - last if !defined($r) || $r == 0 || ($r == -1 && $! != EINTR); -} - -kill 'TERM', $pid; -while (waitpid($pid, 0) != $pid) { -} - -if (defined $rmpath) { - exec '/bin/rm', '-rf', $rmpath; - die "failed to exec /bin/rm:$!"; -} |