#!/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")

	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"))

	while (getline <"/proc/self/maps" > 0) {
		if (/libc.*\.so$/) {
			n = split($0, procmaps, "/")
			if (match(procmaps[n], /[0-9]+([.]?[0-9]+)+/)) {
				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, /[0-9]+([.]?[0-9]+)+/)) {
			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)
	}
}
