#! /usr/bin/perl -w

$kver = shift() || die("Usage: select_fragments [kernel_version]\n");
if($kver !~ /([0-9]+\.[0-9]+\.[0-9]+)/) {
    die("Please give kernel version in form #.#.## eg., 2.4.12\n");
}
$k = $1;

for $f (<fragments-*>) {
    if($f =~ m/fragments-([0-9]+\.[0-9]+\.[0-9]+)/) {
	if(&cmp_kver($k, $1) >= 0) {
	    if(!defined($best) || &cmp_kver($b, $1) < 0) {
		$best = $f;
		$b = $1;
	    }
	}
    }
}

if(!defined($best)) {
    exit 0;
}

open(FRAGS, "$best");
while(<FRAGS>) {
    chomp;
    s/\#.*//;
    next if(m/^\s*$/);
    print `cat $_`;
}
close(FRAGS);

# Return +1 if $k > $v
# Return  0 if $k = $v
# Return -1 if $k < $v
sub cmp_kver {
    my ($k, $v) = @_;
    my ($k1, $k2, $k3) = ($k =~ /([0-9]+)\.([0-9]+)\.([0-9]+)/);
    my ($v1, $v2, $v3) = ($v =~ /([0-9]+)\.([0-9]+)\.([0-9]+)/);

    if($v1 < $k1) {return 1;}
    if($v1 > $k1) {return -1;}
    if($v2 < $k2) {return 1;}
    if($v2 > $k2) {return -1;}
    if($v3 < $k3) {return 1;}
    if($v3 > $k3) {return -1;}
    return 0;
}

