#! /usr/bin/perl
use IPC::Open3;
use strict;
use warnings;
my $patchdir = "patch2.diff";
my $found = 0;
sub runstr {
?my @cmd=@_;
?print "cmd=@cmdn";
?local $/;
?local (*PIPE);
?open3(fileno STDIN,*PIPE,">/dev/null",@cmd);
?my $output = <PIPE>;
?close PIPE or $!==0 or die "can't run @cmd:$!n";
?print "output: $outputn";
?return $output;?
}
sub findpatch{
?my ($cmd1,$cmd2,$cmd3) = @_;
?print "cmd1=$cmd1,cmd2=$cmd2,cmd3=$cmd3n";
?my $current = runstr("pwd");
?$current =~ s/n//g;
?print "current:$currentn";
?chdir($cmd1);
?my $out = runstr("cat",$cmd2);
?my $obj = $out =~ s/n/ /g;
?print "obj:$obj,out:$outn";
?my $outfiles = runstr("cat",$cmd3);
?$outfiles =~ s/n/ /g;
?print "outfiles:$outfilesn";
?foreach my $in (split/ /,$outfiles) {
??print "in:$inn";
??for (split/ /,$out) {
???print "_sdddd:$_n";
???if ($_ eq $patchdir) {
????last;
???}
???-e "$_/$in" or next;
???$found = 1;
???print "$_:found=$foundn";???
??}
??if ($found) {
???last;
??}
?}
?chdir($current);
?return $found;
}
if (findpatch("/home/xuan/linux/.pc","/home/xuan/linux/patches/series","/home/xuan/linux/patchfiles/files")) { ?print "have found patchn"; }