#! /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 () { 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() { 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; }