#!/bin/sh
# Before running this script please ensure that your PATH is
# typical as you use for compilation/istallation. 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 | grep version | awk \
'NR==1{print "xfsprogs              ", $3}'

pccardctl -V 2>&1| grep pcmciautils | awk '{print "pcmciautils           ", $2}'

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

quota -V 2>&1 | grep version | awk \
'NR==1{print "quota-tools           ", $NF}'

pppd --version 2>&1| grep version | awk \
'NR==1{print "PPP                   ", $3}'

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}'

echo -n "Linux C Library        "
sed -n -e '/^.*\/libc-\([^/]*\)\.so$/{s//\1/;p;q}' < /proc/self/maps

ldd -v > /dev/null 2>&1 && ldd -v || ldd --version |head -n 1 | awk \
'NR==1{print "Dynamic linker (ldd)  ", $NF}'

ls -l /usr/lib/libg++.so /usr/lib/libstdc++.so  2>/dev/null | awk -F. \
       '{print "Linux C++ Library      " $4"."$5"."$6}'

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

ifconfig --version 2>&1 | grep tools | awk \
'NR==1{print "Net-tools             ", $NF}'

# Kbd needs 'loadkeys -h',
loadkeys -h 2>&1 | awk \
'(NR==1 && ($3 !~ /option/)) {print "Kbd                   ", $3}'

# while console-tools needs 'loadkeys -V'.
loadkeys -V 2>&1 | awk \
'(NR==1 && ($2 ~ /console-tools/)) {print "Console-tools         ", $3}'

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

expr --v 2>&1 | awk 'NR==1{print "Sh-utils              ", $NF}'

udevinfo -V 2>&1 | grep version | awk '{print "udev                  ", $3}'

iwconfig --version 2>&1 | awk \
'(NR==1 && ($3 == "version")) {print "wireless-tools        ",$4}'

if [ -e /proc/modules ]; then
    X=`cat /proc/modules | sed -e "s/ .*$//"`
    echo "Modules Loaded         "$X
fi
