~vcs-imports/samba/main

« back to all changes in this revision

Viewing changes to source/script/scancvslog.pl

  • Committer: jerry
  • Date: 2006-07-14 21:48:39 UTC
  • Revision ID: vcs-imports@canonical.com-20060714214839-586d8c489a8fcead
gutting trunk to move to svn:externals

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/perl
2
 
require"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
 
 
26
 
open(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
 
 
58
 
while (&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
 
}
71
 
close(INFILE);
72
 
 
73
 
sub 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
 
 
88
 
sub get_tag {
89
 
  @Mytag = grep (/Tag:/,@Entry);
90
 
  $_ = @Mytag[0];
91
 
  s/^.*Tag:\s*(\w*).*/$1/;
92
 
  return $_;
93
 
}
94
 
 
95
 
sub 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
 
}