The code that acquires the version strings for libc and libcpp is identical, as is the printversion call. The only difference being the name of the library being printed. Refactor the code by unifying the bits that are common to both libraries. Signed-off-by: Alexander Kapshuk <alexander.kapshuk@gmail.com> Link: https://lore.kernel.org/r/20210108112626.8623-1-alexander.kapshuk@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Awk
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Awk
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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]+)+"
 | |
| 	libc = "libc[.]so[.][0-9]+$"
 | |
| 	libcpp = "(libg|stdc)[+]+[.]so([.][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 ("ldconfig -p 2>/dev/null" | getline > 0)
 | |
| 		if ($NF ~ libc || $NF ~ libcpp)
 | |
| 			if (!seen[ver = version("readlink " $NF)]++)
 | |
| 				printversion("Linux C" ($NF ~ libcpp? "++" : "") " Library", ver)
 | |
| 
 | |
| 	printversion("Dynamic linker (ldd)", version("ldd --version"))
 | |
| 	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)
 | |
| 	}
 | |
| }
 |