$VERSION = 1.00;
@ISA = qw(Exporter);
- @EXPORT = qw(debiantag server_branch server_ref
+ @EXPORT = qw(setup_sigwarn
+ debiantag server_branch server_ref
stat_exists fail ensuredir waitstatusmsg failedcmd
cmdoutput cmdoutput_errok
git_rev_parse git_get_ref git_for_each_ref
our $debugprefix;
our $debuglevel = 0;
+sub setup_sigwarn () {
+ our $sigwarn_mainprocess = $$;
+ $SIG{__WARN__} = sub {
+ die $_[0] unless getppid == $sigwarn_mainprocess;
+ };
+}
+
sub initdebug ($) {
($debugprefix) = @_;
open DEBUG, ">/dev/null" or die $!;
printcmd(\*DEBUG,$debugprefix.$extraprefix,@_) if $debuglevel>0;
}
-sub debiantag ($) {
- my ($v) = @_;
+sub debiantag ($$) {
+ my ($v,$distro) = @_;
$v =~ y/~:/_%/;
- return "debian/$v";
+ return "$distro/$v";
}
sub server_branch ($) { return "$branchprefix/$_[0]"; }
die $! if P->error;
if (!close P) { printdebug "=>!$?\n"; return undef; }
chomp $d;
- $d =~ m/^.*/;
- printdebug "=> \`$&'",(length $' ? '...' : ''),"\n" if $debuglevel>0; #';
+ if ($debuglevel > 0) {
+ $d =~ m/^.*/;
+ my $dd = $&;
+ my $more = (length $' ? '...' : ''); #');
+ $dd =~ s{[^\n -~]|\\}{ sprintf "\\x%02x", ord $& }ge;
+ printdebug "=> \`$dd'",$more,"\n";
+ }
return $d;
}
sub git_get_ref ($) {
# => '' if no such ref
my ($refname) = @_;
- my $_ = $refname;
+ local $_ = $refname;
s{^refs/}{[r]efs/} or die "$refname $_ ?";
return cmdoutput qw(git for-each-ref --format=%(objectname)), $_;
}