1#!/bin/sh
2
3# Try to find a GNU indent.  There could be a BSD indent in front of a
4# GNU gindent so when indent is found, keep looking.
5
6gindent=
7indent=
8paths=`echo $PATH | sed \
9	-e 's/::/:.:/g' \
10	-e 's/^:/.:/' \
11	-e 's/:$/:./' \
12	-e 's/:/ /g'`
13for path in $paths
14do
15    if test ! -n "${gindent}" -a -x ${path}/gindent
16    then
17	gindent=${path}/gindent
18	break
19    elif test ! -n "${indent}" -a -x ${path}/indent
20    then
21	indent=${path}/indent
22    fi
23done
24
25if test -n "${gindent}"
26then
27    indent=${gindent}
28elif test -n "${indent}"
29then
30    :
31else
32    echo "Indent not found" 1>&2
33fi
34
35
36# Check that the indent found is both GNU and a reasonable version.
37# Different indent versions give different indentation.
38
39m1=2
40m2=2
41m3=9
42
43version=`${indent} --version 2>/dev/null < /dev/null`
44case "${version}" in
45    *GNU* ) ;;
46    * ) echo "error: GNU indent $m1.$m2.$m3 expected" 1>&2 ; exit 1;;
47esac
48v1=`echo "${version}" | sed 's/^.* \([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)$/\1/'`
49v2=`echo "${version}" | sed 's/^.* \([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)$/\2/'`
50v3=`echo "${version}" | sed 's/^.* \([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)$/\3/'`
51
52if test $m1 -ne $v1 -o $m2 -ne $v2 -o $m3 -gt $v3
53then
54    echo "error: Must be GNU indent version $m1.$m2.$m3 or later" 1>&2
55    exit 1
56fi
57
58if test $m3 -ne $v3
59then
60    echo "warning: GNU indent version $m1.$m2.$m3 recommended" 1>&2
61fi
62
63# Check that we're in the GDB source directory
64
65case `pwd` in
66    */gdb ) ;;
67    */sim/* ) ;;
68    * ) echo "Not in GDB directory" 1>&2 ; exit 1 ;;
69esac
70
71
72# Run indent per GDB specs
73
74types="\
75-T FILE \
76-T bfd -T asection -T pid_t \
77-T prgregset_t -T fpregset_t -T gregset_t -T sigset_t \
78-T td_thrhandle_t -T td_event_msg_t -T td_thr_events_t \
79-T td_notify_t -T td_thr_iter_f -T td_thrinfo_t \
80-T caddr_t \
81`cat *.h | sed -n \
82    -e 's/^.*[^a-z0-9_]\([a-z0-9_]*_ftype\).*$/-T \1/p' \
83    -e 's/^.*[^a-z0-9_]\([a-z0-9_]*_func\).*$/-T \1/p' \
84    -e 's/^typedef.*[^a-zA-Z0-9_]\([a-zA-Z0-9_]*[a-zA-Z0-9_]\);$/-T \1/p' \
85    | sort -u`"
86
87${indent} ${types} "$@"
88