From 59a1855e38acee31f794c457d8ffc6c516367059 Mon Sep 17 00:00:00 2001 From: Carl Myers Date: Fri, 4 Mar 2011 18:11:29 -0800 Subject: [PATCH] Added handler to ensure warn and die are logged (with some extra changes by Sitaram) --- src/gitolite.pm | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/gitolite.pm b/src/gitolite.pm index c0581c8..a4463d0 100644 --- a/src/gitolite.pm +++ b/src/gitolite.pm @@ -50,6 +50,24 @@ BEGIN { die "ENV GL_BINDIR not set\n" unless $ENV{GL_BINDIR}; } +# ---------------------------------------------------------------------------- +# register signal handlers to log any problems +# ---------------------------------------------------------------------------- +BEGIN { + $SIG{__DIE__} = sub { + my $msg = join(' ', "Die generated at line", (caller)[2], "in", (caller)[1], ":", @_, "\n"); + $msg =~ s/[\n\r]+/<>/g; + log_it($msg); + }; + + $SIG{__WARN__} = sub { + my $msg = join(' ', "Warn generated at line", (caller)[2], "in", (caller)[1], ":", @_, "\n"); + $msg =~ s/[\n\r]+/<>/g; + log_it($msg); + warn @_; + }; +} + use lib $ENV{GL_BINDIR}; use gitolite_rc; @@ -126,7 +144,7 @@ sub log_it { # the rest of it upto the caller; we just dump it into the logfile $logmsg .= "\t@_" if @_; # erm... this is hard to explain so just see the commit message ok? - $logmsg =~ s/([\x00-\x08\x0A-\x1F\x7F-\xFF]+)/sprintf "<>","",$1/ge; + $logmsg =~ s/([\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\xFF]+)/sprintf "<>","",$1/ge; print $log_fh "$ENV{GL_TS}\t$ENV{GL_USER}\t$ip\t$logmsg\n"; close $log_fh or die "close log failed: $!\n"; }