5547c29967
PR: ports/171853 Submitted by: ohauer Approved by: miwi (maintainer) explicit per PM
96 lines
1.6 KiB
Perl
Executable file
96 lines
1.6 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
#
|
|
# MAINTAINER= miwi@FreeBSD.org
|
|
#
|
|
# $FreeBSD$
|
|
#
|
|
|
|
use strict;
|
|
|
|
my $pr = shift;
|
|
my $user = shift;
|
|
my $ssh;
|
|
|
|
if ($pr eq "") {
|
|
print STDERR "getpr prnum [username]\n";
|
|
exit 1
|
|
}
|
|
|
|
if( !defined $ENV{"CVS_RSH"} ) {
|
|
$ssh = "ssh";
|
|
} else {
|
|
$ssh = $ENV{"CVS_RSH"};
|
|
}
|
|
|
|
if ($user ne "") {
|
|
$user = "$user@";
|
|
}
|
|
|
|
my $pr_num = "PR_" . $pr;
|
|
my $pr_patch = "PR_" . $pr . ".patch";
|
|
|
|
# get the PR off of freefall
|
|
|
|
open(D, "> $pr_num") or die "$pr_num: $!";
|
|
open(PATCH, "> $pr_patch") or die "$pr_patch: $!";
|
|
open(PR, " ${ssh} ${user}freefall.freebsd.org query-pr -F $pr | ") or die $!;
|
|
|
|
my $fix = "";
|
|
my $infix = 0;
|
|
|
|
while(<PR>) {
|
|
print D;
|
|
|
|
if (m/^>Release-Note:/) {
|
|
$infix = 0;
|
|
}
|
|
if ($infix == 1) {
|
|
print PATCH;
|
|
}
|
|
if (m/^>Fix:/) {
|
|
$infix = 1;
|
|
}
|
|
}
|
|
close(D);
|
|
close(PR);
|
|
close(PATCH);
|
|
|
|
# decode the submission attempting to find a file attachment by extension
|
|
# .tar.gz, .shar or just .gz, if not found, display what we think of as
|
|
# the file submission (probably just a patch)
|
|
|
|
open(PATCH, $pr_patch);
|
|
while(<PATCH>) {
|
|
if (m/^# This is a shell archive. Save it in a file, remove anything before/) {
|
|
&shar;
|
|
exit;
|
|
}
|
|
if (m/^begin (\d+)? (.*)/) {
|
|
&uudecode($2);
|
|
close(PATCH);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
close(PATCH);
|
|
system("more $pr_patch");
|
|
|
|
exit;
|
|
|
|
sub uudecode {
|
|
my ($fname) = @_;
|
|
|
|
$fname =~ s/\s+$//g;
|
|
print "$fname\n";
|
|
|
|
print `uudecode $pr_patch`;
|
|
if (($fname =~ m/.tar.gz$/) || ($fname =~ m/.tgz$/)) {
|
|
print "you may extract this tarball by typing tar xvzf $fname\n";
|
|
} elsif ($fname =~ m/.gz$/) {
|
|
print `gunzip $fname`;
|
|
}
|
|
}
|
|
|
|
sub shar {
|
|
print "you may extract this shar archive by typing sh $pr_patch\n";
|
|
}
|