#!/usr/bin/perl

use strict;
use warnings;

my $dir = shift;

die "no directory to scan" if !$dir;

die "no such directory" if ! -d $dir;

warn "\n\nNOTE: strange directory name: $dir\n\n" if $dir !~ m|^(.*/)?(\d+.\d+.\d+\-\d+\-pve)(/+)?$|;

my $apiver = $2;

open(my $FIND_KO_FH, "find '$dir' -name '*.ko'|");
while (defined(my $fn = <$FIND_KO_FH>)) {
    chomp $fn;
    my $relfn = $fn;
    $relfn =~ s|^$dir/*||;

    my $cmd = "/sbin/modinfo -F firmware '$fn'";
    open(my $MOD_FH, "$cmd|");
    while (defined(my $fw = <$MOD_FH>)) {
	chomp $fw;
	print "$fw $relfn\n";
    }
    close($MOD_FH);

}
close($FIND_KO_FH);

exit 0;