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