source: branches/samba-3.5.x/source3/script/scancvslog.pl

Last change on this file was 414, checked in by Herwig Bauernfeind, 15 years ago

Samba 3.5.0: Initial import

File size: 2.4 KB
Line 
1#!/usr/bin/perl
2require"timelocal.pl";
3
4#
5# usage scancvslog.pl logfile starttime tag
6#
7# this will extract all entries from the specified cvs log file
8# that have a date later than or equal to starttime and a tag
9# value of tag. If starttime is not specified, all entries are
10# extracted. If tag is not specified then entries for all
11# branches are extracted. starttime must be specified as
12# "monthname day, year"
13#
14# Example to extract all entries for SAMBA_2_2 branch from the
15# log file named cvs.log
16#
17# scancvslog.pl cvs.log "" SAMBA_2_2
18#
19#
20# To extract all log entries after Jan 10, 1999 (Note month name
21# must be spelled out completely).
22#
23# scancvslog.pl cvs.log "January 10, 1999"
24#
25
26open(INFILE,@ARGV[0]) || die "Unable to open @ARGV[0]\n";
27
28%Monthnum = (
29 "January", 0,
30 "February", 1,
31 "March", 2,
32 "April", 3,
33 "May", 4,
34 "June", 5,
35 "July", 6,
36 "August", 7,
37 "September", 8,
38 "October", 9,
39 "November", 10,
40 "December", 11,
41 "Jan", 0,
42 "Feb", 1,
43 "Mar", 2,
44 "Apr", 3,
45 "May", 4,
46 "Jun", 5,
47 "Jul", 6,
48 "Aug", 7,
49 "Sep", 8,
50 "Oct", 9,
51 "Nov", 10,
52 "Dec", 11
53);
54
55$Starttime = (@ARGV[1]) ? &make_time(@ARGV[1]) : 0;
56$Tagvalue = @ARGV[2];
57
58while (&get_entry) {
59 $_=$Entry[0];
60# get rid of extra white space
61 s/\s+/ /g;
62# get rid of any time string in date
63 s/ \d\d:\d\d:\d\d/,/;
64 s/^Date:\s*\w*\s*(\w*)\s*(\w*),\s*(\w*).*/$1 $2 $3/;
65 $Testtime = &make_time($_);
66 $Testtag = &get_tag;
67 if (($Testtime >= $Starttime) && ($Tagvalue eq $Testtag)) {
68 print join("\n",@Entry),"\n";
69 }
70}
71close(INFILE);
72
73sub make_time {
74 $_ = @_[0];
75 s/,//;
76 ($month, $day, $year) = split(" ",$_);
77 if (($year < 1900)||($day < 1)||($day > 31)||not length($Monthnum{$month})) {
78 print "Bad date format @_[0]\n";
79 print "Date needs to be specified as \"Monthname day, year\"\n";
80 print "eg: \"January 10, 1999\"\n";
81 exit 1;
82 }
83 $year = ($year == 19100) ? 2000 : $year;
84 $month = $Monthnum{$month};
85 $Mytime=&timelocal((0,0,0,$day,$month,$year));
86}
87
88sub get_tag {
89 @Mytag = grep (/Tag:/,@Entry);
90 $_ = @Mytag[0];
91 s/^.*Tag:\s*(\w*).*/$1/;
92 return $_;
93}
94
95sub get_entry {
96 @Entry=();
97 if (not eof(INFILE)) {
98 while (not eof(INFILE)) {
99 $_ = <INFILE>;
100 chomp $_;
101 next if (not ($_));
102 if (/^\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/) {
103 next if ($#Entry == -1);
104 push(Entry,$_);
105 return @Entry;
106 } else {
107 push(Entry,$_);
108 }
109 }
110 }
111 return @Entry;
112}
Note: See TracBrowser for help on using the repository browser.