Add a -r option to print the running kernel version.

MFC after:	1 week
This commit is contained in:
des 2017-11-14 10:15:17 +00:00
parent 0a1e54957c
commit 6de5543c71
2 changed files with 30 additions and 14 deletions

View File

@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd October 5, 2013
.Dd November 14, 2017
.Dt FREEBSD-VERSION 1
.Os
.Sh NAME
@ -33,7 +33,7 @@
.Nd print the version and patch level of the installed system
.Sh SYNOPSIS
.Nm
.Op Fl ku
.Op Fl kru
.Sh DESCRIPTION
The
.Nm
@ -50,6 +50,11 @@ if a new kernel has been installed but the system has not yet
rebooted,
.Nm
will print the version and patch level of the new kernel.
.It Fl r
Print the version and patch level of the running kernel.
Unlike
.Xr uname 1 ,
this is unaffected by environment variables.
.It Fl u
Print the version and patch level of the installed userland.
These are hardcoded into
@ -57,14 +62,10 @@ These are hardcoded into
during the build.
.El
.Pp
If both
.Fl k
and
.Fl u
are specified,
If several of the above options are specified,
.Nm
will print the kernel version first, then the userland version, on
separate lines.
will print the installed kernel version first, then the running kernel
version, and finally the userland version, on separate lines.
If neither is specified, it will print the userland version only.
.Sh IMPLEMENTATION NOTES
The

View File

@ -38,7 +38,7 @@ LOADER_RE1='^\([A-Z_a-z][0-9A-Z_a-z]*=[-./0-9A-Z_a-z]\{1,\}\).*$'
LOADER_RE2='^\([A-Z_a-z][0-9A-Z_a-z]*="[-./0-9A-Z_a-z]\{1,\}"\).*$'
KERNEL_RE='^@@TYPE@@ \([-.0-9A-Za-z]\{1,\}\) .*$'
progname=$(basename $0)
progname=${0##*/}
#
# Print an error message and exit.
@ -70,6 +70,13 @@ kernel_version() {
what -qs "$kernfile" | sed -n "s/$KERNEL_RE/\\1/p"
}
#
# Print the version of the currently running kernel.
#
running_version() {
sysctl -n kern.osrelease
}
#
# Print the hardcoded userland version.
#
@ -81,7 +88,7 @@ userland_version() {
# Print a usage string and exit.
#
usage() {
echo "usage: $progname [-ku]" >&2
echo "usage: $progname [-kru]" >&2
exit 1
}
@ -90,11 +97,14 @@ usage() {
#
main() {
# parse command-line arguments
while getopts "ku" option ; do
while getopts "kru" option ; do
case $option in
k)
opt_k=1
;;
r)
opt_r=1
;;
u)
opt_u=1
;;
@ -108,15 +118,20 @@ main() {
fi
# default is -u
if [ $((opt_k + opt_u)) -eq 0 ] ; then
if [ $((opt_k + opt_r + opt_u)) -eq 0 ] ; then
opt_u=1
fi
# print kernel version
# print installed kernel version
if [ $opt_k ] ; then
kernel_version
fi
# print running kernel version
if [ $opt_r ] ; then
running_version
fi
# print userland version
if [ $opt_u ] ; then
userland_version