aboutsummaryrefslogtreecommitdiff
path: root/commands/help.sh
blob: b811780409bb6429475924959125a6b1cff45791 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/bin/sh
# help.sh -- "dejagnu help" command
#
# Copyright (C) 2018, 2021 Free Software Foundation, Inc.
#
# This file is part of DejaGnu.
#
# DejaGnu is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# DejaGnu is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with DejaGnu; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.

# ##help
# #Usage: dejagnu help [ OPTIONS... ] COMMAND
# #	--verbose, -v		Emit additional messages
# #	--path, -w		Passed to man(1)
# #	-W			Passed to man(1)
# ##end

# shellcheck disable=SC2003
# The shellcheck tool complains about use of expr and recommends using
# newer shell features instead.  Solaris 10 /bin/sh does not support the
# newer features, so we must use expr in this script.

# shellcheck disable=SC2006
# The shellcheck tool complains about the old style backtick command
# substitution.  Solaris 10 /bin/sh does not support the new style $()
# command substitution and the usage of command substitution in this script
# is simple enough to work.  Most notably, nesting backtick command
# substitution is tricky, but we do not do that.

# This script was written by Jacob Bachmeyer.

# For testing and development
in_test_mode=false
if test x"$1" = x--DGTest ; then
    in_test_mode=true
    shift
fi

args=
command=dejagnu
verbose=0
for a in "$@"; do
    case $a in
	-v|--v|-verb*|--verb*)	verbose=`expr $verbose + 1` ;;
	-w|-W|--path)		args="${args} ${a}" ;;
	-*)			echo Unrecognized option "\"$a\"" ;;
	*)			command="${command}-${a}" ;;
    esac
done

if expr "$verbose" \> 0 > /dev/null ; then
    echo Verbose level is $verbose
fi

## Get the location of this script and check for nearby "doc" dir.
commdir=`echo "$0" | sed -e 's@/[^/]*$@@'`
docdir=`echo "$commdir" | sed -e 's@/[^/]*$@@'`/doc

if expr "$verbose" \> 0 > /dev/null ; then
    echo Running from "$commdir"
    if expr "$verbose" \> 1 > /dev/null ; then
	echo Probing "$docdir"
    fi
fi

if test -d "$docdir"; then
    if expr "$verbose" \> 1 > /dev/null ; then
	echo Probing "${docdir}/${command}.1"
    fi
    if test -r "${docdir}/${command}.1" ; then
	command="${docdir}/${command}.1"
    fi
fi

# Word splitting on the "args" variable is intended.
# Globbing is not, but ensure that verbose output will show the problem.

if expr "$verbose" \> 0 > /dev/null ; then
    #shellcheck disable=SC2086
    echo Forwarding to man $args "\"$command\""
fi

if $in_test_mode ; then
    echo man "$args $command"
else
    #shellcheck disable=SC2086
    exec man $args "$command"
fi

#EOF