#!/usr/bin/awk -f
# SPDX-License-Identifier: GPL-2.0
# 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.

BEGIN {
	usage = "If some fields are empty or look unusual you may have an old version.\n"
	usage = usage "Compare to the current minimal requirements in Documentation/Changes.\n"
	print usage

	system("uname -a")
	printf("\n")

	vernum = "[0-9]+([.]?[0-9]+)+"

	printversion("GNU C", version("gcc -dumpversion"))
	printversion("GNU Make", version("make --version"))
	printversion("Binutils", version("ld -v"))
	printversion("Util-linux", version("mount --version"))
	printversion("Mount", version("mount --version"))
	printversion("Module-init-tools", version("depmod -V"))
	printversion("E2fsprogs", version("tune2fs"))
	printversion("Jfsutils", version("fsck.jfs -V"))
	printversion("Reiserfsprogs", version("reiserfsck -V"))
	printversion("Reiser4fsprogs", version("fsck.reiser4 -V"))
	printversion("Xfsprogs", version("xfs_db -V"))
	printversion("Pcmciautils", version("pccardctl -V"))
	printversion("Pcmcia-cs", version("cardmgr -V"))
	printversion("Quota-tools", version("quota -V"))
	printversion("PPP", version("pppd --version"))
	printversion("Isdn4k-utils", version("isdnctrl"))
	printversion("Nfs-utils", version("showmount --version"))
	printversion("Bison", version("bison --version"))
	printversion("Flex", version("flex --version"))

	while (getline <"/proc/self/maps" > 0) {
		if (/libc.*\.so$/) {
			n = split($0, procmaps, "/")
			if (match(procmaps[n], vernum)) {
				ver = substr(procmaps[n], RSTART, RLENGTH)
				printversion("Linux C Library", ver)
				break
			}
		}
	}

	printversion("Dynamic linker (ldd)", version("ldd --version"))

	while ("ldconfig -p 2>/dev/null" | getline > 0) {
		if (/(libg|stdc)[+]+\.so/) {
			libcpp = $NF
			break
		}
	}
	printversion("Linux C++ Library", version("readlink " libcpp))
	printversion("Procps", version("ps --version"))
	printversion("Net-tools", version("ifconfig --version"))
	printversion("Kbd", version("loadkeys -V"))
	printversion("Console-tools", version("loadkeys -V"))
	printversion("Oprofile", version("oprofiled --version"))
	printversion("Sh-utils", version("expr --v"))
	printversion("Udev", version("udevadm --version"))
	printversion("Wireless-tools", version("iwconfig --version"))

	while ("sort /proc/modules" | getline > 0) {
		mods = mods sep $1
		sep = " "
	}
	printversion("Modules Loaded", mods)
}

function version(cmd,    ver) {
	cmd = cmd " 2>&1"
	while (cmd | getline > 0) {
		if (match($0, vernum)) {
			ver = substr($0, RSTART, RLENGTH)
			break
		}
	}
	close(cmd)
	return ver
}

function printversion(name, value,  ofmt) {
	if (value != "") {
		ofmt = "%-20s\t%s\n"
		printf(ofmt, name, value)
	}
}
