mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
1d726fe0e0
(This used to be commit 8021669b16
)
113 lines
2.4 KiB
Raku
Executable File
113 lines
2.4 KiB
Raku
Executable File
#!/usr/bin/perl
|
|
require"timelocal.pl";
|
|
|
|
#
|
|
# usage scancvslog.pl logfile starttime tag
|
|
#
|
|
# this will extract all entries from the specified cvs log file
|
|
# that have a date later than or equal to starttime and a tag
|
|
# value of tag. If starttime is not specified, all entries are
|
|
# extracted. If tag is not specified then entries for all
|
|
# branches are extracted. starttime must be specified as
|
|
# "monthname day, year"
|
|
#
|
|
# Example to extract all entries for SAMBA_2_2 branch from the
|
|
# log file named cvs.log
|
|
#
|
|
# scancvslog.pl cvs.log "" SAMBA_2_2
|
|
#
|
|
#
|
|
# To extract all log entries after Jan 10, 1999 (Note month name
|
|
# must be spelled out completely).
|
|
#
|
|
# scancvslog.pl cvs.log "January 10, 1999"
|
|
#
|
|
|
|
open(INFILE,@ARGV[0]) || die "Unable to open @ARGV[0]\n";
|
|
|
|
%Monthnum = (
|
|
"January", 0,
|
|
"February", 1,
|
|
"March", 2,
|
|
"April", 3,
|
|
"May", 4,
|
|
"June", 5,
|
|
"July", 6,
|
|
"August", 7,
|
|
"September", 8,
|
|
"October", 9,
|
|
"November", 10,
|
|
"December", 11,
|
|
"Jan", 0,
|
|
"Feb", 1,
|
|
"Mar", 2,
|
|
"Apr", 3,
|
|
"May", 4,
|
|
"Jun", 5,
|
|
"Jul", 6,
|
|
"Aug", 7,
|
|
"Sep", 8,
|
|
"Oct", 9,
|
|
"Nov", 10,
|
|
"Dec", 11
|
|
);
|
|
|
|
$Starttime = (@ARGV[1]) ? &make_time(@ARGV[1]) : 0;
|
|
$Tagvalue = @ARGV[2];
|
|
|
|
while (&get_entry) {
|
|
$_=$Entry[0];
|
|
# get rid of extra white space
|
|
s/\s+/ /g;
|
|
# get rid of any time string in date
|
|
s/ \d\d:\d\d:\d\d/,/;
|
|
s/^Date:\s*\w*\s*(\w*)\s*(\w*),\s*(\w*).*/$1 $2 $3/;
|
|
$Testtime = &make_time($_);
|
|
$Testtag = &get_tag;
|
|
if (($Testtime >= $Starttime) && ($Tagvalue eq $Testtag)) {
|
|
print join("\n",@Entry),"\n";
|
|
}
|
|
}
|
|
close(INFILE);
|
|
|
|
sub make_time {
|
|
$_ = @_[0];
|
|
s/,//;
|
|
($month, $day, $year) = split(" ",$_);
|
|
if (($year < 1900)||($day < 1)||($day > 31)||not length($Monthnum{$month})) {
|
|
print "Bad date format @_[0]\n";
|
|
print "Date needs to be specified as \"Monthname day, year\"\n";
|
|
print "eg: \"January 10, 1999\"\n";
|
|
exit 1;
|
|
}
|
|
$year = ($year == 19100) ? 2000 : $year;
|
|
$month = $Monthnum{$month};
|
|
$Mytime=&timelocal((0,0,0,$day,$month,$year));
|
|
}
|
|
|
|
sub get_tag {
|
|
@Mytag = grep (/Tag:/,@Entry);
|
|
$_ = @Mytag[0];
|
|
s/^.*Tag:\s*(\w*).*/$1/;
|
|
return $_;
|
|
}
|
|
|
|
sub get_entry {
|
|
@Entry=();
|
|
if (not eof(INFILE)) {
|
|
while (not eof(INFILE)) {
|
|
$_ = <INFILE>;
|
|
chomp $_;
|
|
next if (not ($_));
|
|
if (/^\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/) {
|
|
next if ($#Entry == -1);
|
|
push(Entry,$_);
|
|
return @Entry;
|
|
} else {
|
|
push(Entry,$_);
|
|
}
|
|
}
|
|
}
|
|
return @Entry;
|
|
}
|