chiark
/
gitweb
/
~ianmdlvl
/
dgit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Run debian/rules debian/tests/control
[dgit.git]
/
Debian
/
Dgit.pm
diff --git
a/Debian/Dgit.pm
b/Debian/Dgit.pm
index 2938ae11855b5f48208af630792ec9a37c66b8a9..a453f352718b33a5567e040cdd9302973c40b279 100644
(file)
--- a/
Debian/Dgit.pm
+++ b/
Debian/Dgit.pm
@@
-15,7
+15,8
@@
BEGIN {
$VERSION = 1.00;
@ISA = qw(Exporter);
$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
stat_exists fail ensuredir waitstatusmsg failedcmd
cmdoutput cmdoutput_errok
git_rev_parse git_get_ref git_for_each_ref
@@
-25,7
+26,7
@@
BEGIN {
initdebug enabledebug enabledebuglevel
printdebug debugcmd
$debugprefix *debuglevel *DEBUG
initdebug enabledebug enabledebuglevel
printdebug debugcmd
$debugprefix *debuglevel *DEBUG
- shellquote printcmd);
+ shellquote printcmd
messagequote
);
# implicitly uses $main::us
%EXPORT_TAGS = ( policyflags => [qw(NOFFCHECK FRESHREPO)] );
@EXPORT_OK = @{ $EXPORT_TAGS{policyflags} };
# implicitly uses $main::us
%EXPORT_TAGS = ( policyflags => [qw(NOFFCHECK FRESHREPO)] );
@EXPORT_OK = @{ $EXPORT_TAGS{policyflags} };
@@
-48,6
+49,13
@@
sub FRESHREPO () { return 0x4; }
our $debugprefix;
our $debuglevel = 0;
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 $!;
sub initdebug ($) {
($debugprefix) = @_;
open DEBUG, ">/dev/null" or die $!;
@@
-73,12
+81,22
@@
sub printdebug {
print DEBUG $debugprefix, @_ or die $! if $debuglevel>0;
}
print DEBUG $debugprefix, @_ or die $! if $debuglevel>0;
}
+sub messagequote ($) {
+ local ($_) = @_;
+ s{\\}{\\\\}g;
+ s{\n}{\\n}g;
+ s{\x08}{\\b}g;
+ s{\t}{\\t}g;
+ s{[\000-\037\177]}{ sprintf "\\x%02x", ord $& }ge;
+ $_;
+}
+
sub shellquote {
my @out;
local $_;
foreach my $a (@_) {
$_ = $a;
sub shellquote {
my @out;
local $_;
foreach my $a (@_) {
$_ = $a;
- if (!length || m{[^-=_./0-9a-z]}i) {
+ if (!length || m{[^-=_./
:
0-9a-z]}i) {
s{['\\]}{'\\$&'}g;
push @out, "'$_'";
} else {
s{['\\]}{'\\$&'}g;
push @out, "'$_'";
} else {
@@
-173,8
+191,13
@@
sub cmdoutput_errok {
die $! if P->error;
if (!close P) { printdebug "=>!$?\n"; return undef; }
chomp $d;
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;
}
return $d;
}