####################################################### # # findfile.irc # by blue-elf/astigmatik (belf@null.net) # 28 February 2006 # # This addon adds two functions for jIRCii. # # findfile(dir,wildcard,N [, &closure]); # finddir(dir,wildcard,N [, &closure]); # # Scripters' tool. &closure part is optional. # Refer to ffdemo1 and ffdemo2 aliases. # ####################################################### ######## DEMO ALIASES AND FUNCTIONS alias ffdemo1 { $path = systemProperties()['user.dir']; echo("Listing \bFILES\b in $path"); $var = findfile($path, "*", 0, "&fileInfo1"); echo("Total files: $var"); } alias ffdemo2 { $path = systemProperties()['user.dir']; echo("Listing \bDIRS\b in $path"); $var = finddir($path, "*", 0, "&fileInfo2"); echo("Total dirs: $var"); } sub fileInfo1 { $f = getFileName($1); echo(">> $[20]f" . lof($1)); } sub fileInfo2 { echo(">> " . getFileName($1)); } ######## END OF DEMO # findfile(dir,wildcard,N [, &closure]); sub findfile { return findFileOrDir('file', $1, $2, $3, $4); } # finddir(dir,wildcard,N [, &closure]); sub finddir { return findFileOrDir('dir', $1, $2, $3, $4); } sub findFileOrDir { if (($2 eq '' || !-isDir $2) || $3 eq '' || (!-isnumber $4 || $4 < 0 || $4 eq '')) { return; } local('$str $file @dirList @results $tmpfile'); @results = array(); import java.io.*; $str = [new File: $2]; @dirList = [$str list]; foreach $file (@dirList) { $tmpfile = getFileProper($2, $file); if (lc($3) iswm lc($file)) { if ($1 eq 'file' && -isFile $tmpfile) { push(@results, $tmpfile); } if ($1 eq 'dir' && -isDir $tmpfile) { push(@results, $tmpfile); } } } if ($4 == 0) { if ($5) { @dirList = map(function($5), @results); } return size(@results); } if ($4 <= size(@results)) { if ($5) { [function($5): @results[$4 - 1]]; } return @results[$4 - 1]; } return; } # END