mirror of
				https://github.com/samba-team/samba.git
				synced 2025-11-04 00:23:49 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			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;
 | 
						|
}
 |