scancvslog.pl
来自「samba-3.0.22.tar.gz 编译smb服务器的源码」· PL 代码 · 共 113 行
PL
113 行
#!/usr/bin/perlrequire"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;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?