Skip to content

Commit

Permalink
Add a -r option to print the running kernel version.
Browse files Browse the repository at this point in the history
MFC after:	1 week
  • Loading branch information
dag-erling committed Nov 14, 2017
1 parent 0a1e549 commit 6de5543
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 14 deletions.
19 changes: 10 additions & 9 deletions bin/freebsd-version/freebsd-version.1
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,15 @@
.\"
.\" $FreeBSD$
.\"
.Dd October 5, 2013
.Dd November 14, 2017
.Dt FREEBSD-VERSION 1
.Os
.Sh NAME
.Nm freebsd-version
.Nd print the version and patch level of the installed system
.Sh SYNOPSIS
.Nm
.Op Fl ku
.Op Fl kru
.Sh DESCRIPTION
The
.Nm
Expand All @@ -50,21 +50,22 @@ 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
.Nm
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
Expand Down
25 changes: 20 additions & 5 deletions bin/freebsd-version/freebsd-version.sh.in
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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.
#
Expand All @@ -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
}

Expand All @@ -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
;;
Expand All @@ -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
Expand Down

0 comments on commit 6de5543

Please sign in to comment.