On Mon, Oct 24, 2005 at 12:53:22PM +0200, Mattia Dongili wrote: > [sorry again for line wrapping] > > On Mon, October 24, 2005 10:58 am, Sven Luther said: > > On Mon, Oct 24, 2005 at 11:01:53AM +0200, Mattia Dongili wrote: > [...] > >> you could rewrite the grep this way: > >> > >> my @ramdisklist = > >> grep { > >> -x and ( > >> system ("$_ --supported-host-version=$hostversion > >> --supported-target-version=$version 1>/dev/null 2>&1") == 0 > >> or ( > >> (($ramdisk eq "/usr/sbin/mkinitrd") and (system ("dpkg", > >> "--compare-versions", "$version", "lt", "2.6.13") == 0)) > >> or > >> (($ramdisk eq "/usr/sbin/mkinitramfs") and (system > >> ("dpkg", > >> "--compare-versions", "$version", "lt", "2.6.12") == 1)) > >> or > >> (($ramdisk eq "/usr/sbin/mkinitrd.yaird") and (system > >> ("dpkg", "--compare-versions", "$version", "lt", "2.6.8") == > >> 1) and (system ("dpkg", "--compare-versions", > >> "$hostversion", "lt", "2.6.8") == 1)) > >> ) > >> ) > >> } > >> (split (/ /, $ramdisk)); > > > > Oh, right, altough your code disregard the fact that i need to check for > > two return values of the --supported* case. > > oh, I'm just not considering the fact that '$_ --supported-*' can return > other values than just 0 or 1. Is this the case? AFAIR you were talking of > some tool returning 2 in some case, if so please discard my suggestion?
hehe, indeed and system returns values shifted by 8 even. Current code is : my @ramdisklist = grep { if (-x) { my $ret = system ("$_ --supported-host-version=$hostversion --supported-target-version=$version 1>/dev/null 2>&1") >> 8; $ret == 0 or ( $ret == 1 and ( (("$_" eq "/usr/sbin/mkinitrd") and (system ("dpkg", "--compare-versions", "$version", "lt", "2.6.13") == 0)) or (("$_" eq "/usr/sbin/mkinitramfs") and (system ("dpkg", "--compare-versions", "$version", "lt", "2.6.12") == 1)) or (("$_" eq "/usr/sbin/mkinitrd.yaird") and (system ("dpkg", "--compare-versions", "$version", "lt", "2.6.8") == 1) and (system ("dpkg", "--compare-versions", "$hostversion", "lt", "2.6.8") == 1)) ) ) } } (split (/ /, $ramdisk)); As you suggested below, does this sound reasonable ? Seems to work fine. Friendly, Sven Luther -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]