Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/sys_info Changes to sys_info (20170821)



details:   https://anonhg.NetBSD.org/src/rev/72efa3852fb0
branches:  trunk
changeset: 826214:72efa3852fb0
user:      agc <agc%NetBSD.org@localhost>
date:      Mon Aug 21 19:22:31 2017 +0000

description:
Changes to sys_info (20170821)

+ get rid of -a argument, which was superfluous since no arguments
means provide information on everything known

+ add the shell function to check for the path of a program. Taken
from pkgsrc bootstrap script, modified for return values, and "not
found" action

+ use this shell function for tcsh and unbound, both of which may not
exist on systems

+ go back to using standard shell construct for parsing options now,
since there is only 1 option with no optargs

+ from a suggestion from Paul Goyette, run the provided arguments
through sort | uniq

+ add sys_info itself to the list of programs to report

diffstat:

 usr.bin/sys_info/sys_info.1  |  24 +++++++++++----
 usr.bin/sys_info/sys_info.sh |  63 ++++++++++++++++++++++++++++++++++---------
 2 files changed, 66 insertions(+), 21 deletions(-)

diffs (166 lines):

diff -r 2d84f1267d56 -r 72efa3852fb0 usr.bin/sys_info/sys_info.1
--- a/usr.bin/sys_info/sys_info.1       Mon Aug 21 17:11:18 2017 +0000
+++ b/usr.bin/sys_info/sys_info.1       Mon Aug 21 19:22:31 2017 +0000
@@ -1,4 +1,4 @@
-.\" $NetBSD: sys_info.1,v 1.1 2016/06/04 15:27:11 agc Exp $
+.\" $NetBSD: sys_info.1,v 1.2 2017/08/21 19:22:31 agc Exp $
 .\"
 .\" Copyright (c) 2016 Alistair Crooks <agc%NetBSD.org@localhost>
 .\" All rights reserved.
@@ -23,7 +23,7 @@
 .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd June 1, 2016
+.Dd August 21, 2017
 .Dt SYS_INFO 1
 .Os
 .Sh NAME
@@ -31,7 +31,7 @@
 .Nd script to show versioning information
 .Sh SYNOPSIS
 .Nm
-.Op Fl av
+.Op Fl v
 .Op Ar
 .Sh DESCRIPTION
 The
@@ -44,13 +44,23 @@
 utility uses a combination of ways to retrieve version
 information from the installed utilities.
 .Sh OPTIONS
-The following options are available:
+The following option is available:
 .Bl -tag -width inits
-.It Fl a
-Show the version numbers of all components.
 .It Fl v
-Perform the operations in a verbose manner.
+Perform operations in a verbose manner.
 .El
+.Pp
+Arguments may be given to sys_info.
+If any arguments are specified, they are assumed
+to be names of programs, or shared libraries,
+installed on the system.
+If no arguments are provided, then all of the
+items that are known to
+.Nm
+are reported.
+.Pp
+If arguments are provided, the output is displayed in
+alphabetical order, and duplicates are removed.
 .Sh SEE ALSO
 .Xr awk 1 ,
 .Xr strings 1
diff -r 2d84f1267d56 -r 72efa3852fb0 usr.bin/sys_info/sys_info.sh
--- a/usr.bin/sys_info/sys_info.sh      Mon Aug 21 17:11:18 2017 +0000
+++ b/usr.bin/sys_info/sys_info.sh      Mon Aug 21 19:22:31 2017 +0000
@@ -1,6 +1,6 @@
 #! /bin/sh
 
-# $NetBSD: sys_info.sh,v 1.4 2017/08/20 10:17:55 martin Exp $
+# $NetBSD: sys_info.sh,v 1.5 2017/08/21 19:22:31 agc Exp $
 
 # Copyright (c) 2016 Alistair Crooks <agc%NetBSD.org@localhost>
 # All rights reserved.
@@ -26,8 +26,33 @@
 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #
 
+SYS_INFO_VERSION=20170821
 LD_LIBRARY_PATH=${LD_LIBRARY_PATH:-/usr/lib:/usr/X11R7/lib}
 
+# short script to look for an executable $2, and if found, to place
+# path in $1
+# taken from pkgsrc bootstrap
+which_prog()
+{
+       _var="$1"; _name="$2"
+
+       eval _tmp=\"\$$_var\"
+       if [ "x$_tmp" != "x" ]; then
+               # Variable is already set (by the user, for example)
+               return 0
+       fi
+
+       for _d in `echo $PATH | tr ':' ' '`; do
+               if [ -f "$_d/$_name" ] && [ -x "$_d/$_name" ]; then
+                       # Program found
+                       eval $_var=\""$_d/$_name"\"
+                       return 0
+               fi
+       done
+
+       return 1
+}
+
 # print out the version for the given argument
 getversion() {
        case "$1" in
@@ -106,15 +131,22 @@
        sshd)
                sshd -V 2>&1 | awk '/OpenSSH/ { sub("_", "D-", $1); print tolower($1) }'
                ;;
+       sys_info)
+               echo sys_info-${SYS_INFO_VERSION}
+               ;;
        tcsh)
-               grep '/tcsh' /etc/shells > /dev/null 2>&1 && tcsh --version | awk '{ print $1 "-" $2 }'
+               if which_prog tcshpath tcsh; then
+                       ${tcshpath} -c 'echo $version' | awk '{ print $1 "-" $2 }'
+               else
+                       echo "tcsh: not found"
+               fi
                ;;
        unbound)
-               case $(uname -s) in
-               FreeBSD)
-                       unbound-control -h | awk '/^Version/ { print "unbound-" $2 }'
-                       ;;
-               esac
+               if which_prog unboundpath unbound-control; then
+                       ${unboundpath} -h | awk '/^Version/ { print "unbound-" $2 }'
+               else
+                       echo "unbound: not found"
+               fi
                ;;
        xz)
                xz --version | awk '{ print $1 "-" $4; exit }'
@@ -122,16 +154,16 @@
        esac
 }
 
-all=false
-while getopts "av" a; do
-       case "${a}" in
-       a)      all=true ;;
-       v)      set -x ;;
+# check if we have our only option
+while [ $# -gt 0 ]; do
+       case "$1" in
+       -v)     set -x ;;
        *)      break ;;
        esac
        shift
 done
 
+all=false
 # if no arg specified, we want them all
 if [ $# -eq 0 ]; then
        all=true
@@ -141,9 +173,12 @@
 # not really scalable
 if ${all}; then
        args='awk bind bzip2 calendar ftpd g++ gcc grep gzip httpd netbsd netpgp'
-       args="${args} netpgpverify ntp openssl sqlite ssh sshd tcsh unbound xz"
-       set -- ${args}
+       args="${args} netpgpverify ntp openssl sqlite ssh sshd sys_info tcsh"
+       args="${args} unbound xz"
+else
+       args=$(echo $@ | tr ' ' '\n' | sort | uniq)
 fi
+set -- ${args}
 
 while [ $# -gt 0 ]; do
        getversion $1



Home | Main Index | Thread Index | Old Index