diff -r 42c603eb6301 -r a1aee1136609 SI/tools.pm --- a/SI/tools.pm Sun Jan 17 16:40:08 2010 +0100 +++ b/SI/tools.pm Mon Jan 18 20:35:27 2010 +0100 @@ -4,8 +4,10 @@ use strict; use warnings; +use File::Find; use base "Exporter"; -our @EXPORT = qw(&run &verbose); + +our @EXPORT = qw(&run &verbose &find_by_devid); sub run(@) { system(@_); @@ -21,5 +23,21 @@ $last = substr($_[-1], -1, 1); }; +sub find_by_devid($$) { + my ($dir, $id) = @_; + my @found; + find( + sub { + push @found, $File::Find::name if (stat)[6] == $id; + return; + }, + $dir + ); + die "ERR: found more than one alias (@found) for $id\n" if @found > 1; + die "ERR: found no alias for $id\n" if not @found; + return $found[0]; +} + + 1; # vim:sts=4 sw=4 aw ai si: