diff options
author | mbm <mbm@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2006-05-15 22:42:04 +0000 |
---|---|---|
committer | mbm <mbm@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2006-05-15 22:42:04 +0000 |
commit | 7eceaccf8379b7558fd6b3fac52ec6d985033f0b (patch) | |
tree | 107fa12ed954dea86e152334fe02322ca3c3c546 | |
parent | 7da046773161524d5726c688389a8fbe3d10f663 (diff) |
replace find call with perl code
git-svn-id: svn://svn.openwrt.org/openwrt/branches/buildroot-ng/openwrt@3782 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rwxr-xr-x | scripts/timestamp.pl | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/scripts/timestamp.pl b/scripts/timestamp.pl index dc47e24aae..9735dd61e4 100755 --- a/scripts/timestamp.pl +++ b/scripts/timestamp.pl @@ -1,24 +1,35 @@ #!/usr/bin/perl use strict; +use File::stat; + +sub crawl($$) { + my $path = shift; + my $options = shift; + my @results = $path; + opendir(DIR,$path); + foreach my $file (readdir(DIR)) { + if ($file !~m/^(\.(svn|\.?)|CVS$options)$/) { + push @results, crawl("$path/$file",$options); + } + } + closedir(DIR); + return @results; +} sub get_ts($$) { my $path = shift; my $options = shift; my $ts = 0; my $fn = ""; - open FIND, "find $path -not -path \\*.svn\\* -and -not -path \\*CVS\\* $options 2>/dev/null |"; - while (<FIND>) { - chomp; - my $file = $_; - open FILE, "<$file"; - my @stat = stat FILE; - close FILE; - if ($stat[9] > $ts) { - $ts = $stat[9]; + my @search = crawl($path,$options); + while (@search) { + my $file = shift @search; + my $mtime = stat($file)->mtime; + if ($mtime > $ts) { + $ts = $mtime; $fn = $file; } } - close FIND; return ($ts, $fn); } @@ -30,7 +41,7 @@ while (@ARGV > 0) { my $path = shift @ARGV; if ($path =~ /^-x/) { my $str = shift @ARGV; - $options{"-x"} .= " -and -not -path \\*".$str."\\*" + $options{"-x"} .= "|".$str; } elsif ($path =~ /^-/) { $options{$path} = 1; } else { |