#!/bin/sh
# Before running this script please ensure that your PATH is
# typical as you use for compilation/installation. I use
# /bin /sbin /usr/bin /usr/sbin /usr/local/bin, but it may
# differ on your system.
#
echo 'If some fields are empty or look unusual you may have an old version.'
echo 'Compare to the current minimal requirements in Documentation/Changes.'
echo ' '

uname -a
echo ' '

gcc -dumpversion 2>&1 |
awk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("GNU C\t\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

make --version 2>&1 |
awk '/GNU Make/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("GNU Make\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

ld -v 2>&1 |
awk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Binutils\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

mount --version 2>&1 |
awk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	$0 = substr($0,RSTART,RLENGTH)
	printf("Util-linux\t\t%s\nMount\t\t\t%s\n",$0,$0)
}'

depmod -V  2>&1 |
awk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Module-init-tools\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

tune2fs 2>&1 |
awk '/^tune2fs/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("E2fsprogs\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

fsck.jfs -V 2>&1 |
awk '/version/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Jfsutils\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

reiserfsck -V 2>&1 |
awk '/^reiserfsck/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Reiserfsprogs\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

fsck.reiser4 -V 2>&1 | grep ^fsck.reiser4 | awk \
'NR==1{print "reiser4progs          ", $2}'

xfs_db -V 2>&1 |
awk '/version/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Xfsprogs\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

pccardctl -V 2>&1 |
awk '/pcmciautils/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Pcmciautils\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

cardmgr -V 2>&1| grep version | awk \
'NR==1{print "pcmcia-cs             ", $3}'

quota -V 2>&1 |
awk '/version/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Quota-tools\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

pppd --version 2>&1 |
awk '/version/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("PPP\t\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

isdnctrl 2>&1 | grep version | awk \
'NR==1{print "isdn4k-utils          ", $NF}'

showmount --version 2>&1 | grep nfs-utils | awk \
'NR==1{print "nfs-utils             ", $NF}'

test -r /proc/self/maps &&
sed '
	/.*libc-\(.*\)\.so$/!d
	s//Linux C Library\t\t\1/
	q
' /proc/self/maps

ldd --version 2>&1 |
awk '/^ldd/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Dynamic linker (ldd)\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

libcpp=`ldconfig -p 2>/dev/null |
	awk '/(libg|stdc)[+]+\.so/ {
	print $NF
	exit
	}
'`
test -r "$libcpp" &&
ls -l $libcpp |
sed '
	s!.*so\.!!
	s!^!Linux C++ Library\t!
'
ps --version 2>&1 |
awk '/version/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Procps\t\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

ifconfig --version 2>&1 |
awk '/tools/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Net-tools\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

loadkeys -V 2>&1 |
awk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	$0 = substr($0,RSTART,RLENGTH)
	printf("Kbd\t\t\t%s\nConsole-tools\t\t%s\n",$0,$0)
}'

oprofiled --version 2>&1 | awk \
'(NR==1 && ($2 == "oprofile")) {print "oprofile              ", $3}'

expr --v 2>&1 |
awk '/^expr/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Sh-utils\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

udevadm --version 2>&1 |
awk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Udev\t\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

iwconfig --version 2>&1 |
awk '/version/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Wireless-tools\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

test -e /proc/modules &&
sort /proc/modules |
sed '
	s/ .*//
	H
${
	g
	s/^\n/Modules Loaded\t\t/
	y/\n/ /
	q
}
	d
'
