1#!/bin/sh
2#****************************************************************************
3#* Copyright (c) 2001-2006,2008 Thomas E. Dickey                            *
4#*                                                                          *
5#* Permission is hereby granted, free of charge, to any person obtaining a  *
6#* copy of this software and associated documentation files (the            *
7#* "Software"), to deal in the Software without restriction, including      *
8#* without limitation the rights to use, copy, modify, merge, publish,      *
9#* distribute, distribute with modifications, sublicense, and/or sell       *
10#* copies of the Software, and to permit persons to whom the Software is    *
11#* furnished to do so, subject to the following conditions:                 *
12#*                                                                          *
13#* The above copyright notice and this permission notice shall be included  *
14#* in all copies or substantial portions of the Software.                   *
15#*                                                                          *
16#* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
17#* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
18#* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
19#* IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
20#* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
21#* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
22#* THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
23#*                                                                          *
24#* Except as contained in this notice, the name(s) of the above copyright   *
25#* holders shall not be used in advertising or otherwise to promote the     *
26#* sale, use or other dealings in this Software without prior written       *
27#* authorization.                                                           *
28#****************************************************************************/
29# $Id: ncu-indent,v 1.17 2008/08/03 15:46:44 tom Exp $
30NOOP=no
31OPTS='
32--blank-lines-after-procedures
33--braces-on-if-line
34--continuation-indentation0
35--continue-at-parentheses
36--cuddle-else
37--indent-level4
38--leave-preprocessor-space
39--no-blank-lines-after-commas
40--no-blank-lines-after-declarations
41--no-space-after-function-call-names
42--procnames-start-lines
43--space-special-semicolon
44--swallow-optional-blank-lines
45--tab-size8
46
47-T NCURSES_EXPORT_VAR
48-T NCURSES_INLINE
49-T SCREEN
50-T TERMTYPE
51-T attr_t
52-T cchar_t
53-T chtype
54-T inline
55-T wchar_t
56-T wint_t
57
58-T BUFFER
59-T CHARTYPE
60-T FILE
61-T GCC_NORETURN
62-T LINE
63-T MARK
64-T RETSIGTYPE 
65-T TBUFF
66-T WINDOW
67-T size_t
68-T va_list
69
70-T Cardinal
71-T Widget
72-T XtPointer
73'
74for name in $*
75do
76	case $name in
77	-v|-n)
78		NOOP=yes
79		OPTS="$OPTS -v"
80		;;
81	-*)
82		OPTS="$OPTS $name"
83		;;
84	*.[ch]|*.cc|*.cpp)
85		save="${name}".a$$
86		test="${name}".b$$
87		rm -f "$save" "$test"
88		mv "$name" "$save"
89		sed \
90			-e '/EMPTY_MODULE(/s/)$/);/' \
91			-e '/MODULE_ID(/s/)$/);/' \
92			-e 's,\<GCC_NORETURN;,;//GCC_NORETURN;,' \
93			-e 's,\<GCC_PRINTFLIKE(,;//GCC_PRINTFLIKE(,' \
94			-e 's,\<GCC_SCANFLIKE(,;//GCC_SCANFLIKE(,' \
95			-e 's,\(\<NCURSES_EXPORT_VAR\>\),//\1,' \
96			"$save" >"$test"
97		cp "$test" "$name"
98		chmod u+w "$name"
99		# ${INDENT_PROG-indent} --version
100		${INDENT_PROG-indent} -npro $OPTS "$name"
101		sed \
102			-e '/EMPTY_MODULE(/s/);$/)/' \
103			-e '/MODULE_ID(/s/);$/)/' \
104			-e 's,;[ 	]*//GCC_NORETURN;, GCC_NORETURN;,' \
105			-e 's,;[ 	]*//GCC_PRINTFLIKE(, GCC_PRINTFLIKE(,' \
106			-e 's,;[ 	]*//GCC_SCANFLIKE(, GCC_SCANFLIKE(,' \
107			-e 's,//\(\<NCURSES_EXPORT_VAR\>\),\1,' \
108			"$name" >"$test"
109		mv "$test" "$name"
110		rm -f "${name}~"
111		if test $NOOP = yes ; then
112			if (cmp -s "$name" "$save" ) then
113				echo "** no change: $name"
114			else
115				diff -u "$save" "$name"
116			fi
117			rm -f "$name"
118			mv "$save" "$name"
119		elif ( cmp -s "$name" "$save" ) ; then
120			echo "** unchanged $name"
121			rm -f "${name}"
122			mv "$save" "$name"
123		else
124			echo "** updated $name"
125			rm -f "$save"
126		fi
127		;;
128	*)
129		echo "** ignored:   $name"
130		;;
131	esac
132done
133