ncurses 5.7 - patch 20090829
[ncurses.git] / misc / ncu-indent
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.20 2009/02/21 20:56:23 tom Exp $
30 NOOP=no
31 OPTS='
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_SP_ARGx
48 -T NCURSES_SP_DCLx
49 -T NCURSES_EXPORT_VAR
50 -T NCURSES_INLINE
51 -T SCREEN
52 -T TERMTYPE
53 -T attr_t
54 -T cchar_t
55 -T chtype
56 -T inline
57 -T wchar_t
58 -T wint_t
59
60 -T BUFFER
61 -T CHARTYPE
62 -T FILE
63 -T GCC_NORETURN
64 -T LINE
65 -T MARK
66 -T RETSIGTYPE 
67 -T TBUFF
68 -T WINDOW
69 -T size_t
70 -T va_list
71
72 -T Cardinal
73 -T Widget
74 -T XtPointer
75 '
76 for name in $*
77 do
78         case $name in
79         -v|-n)
80                 NOOP=yes
81                 OPTS="$OPTS -v"
82                 ;;
83         -*)
84                 OPTS="$OPTS $name"
85                 ;;
86         *.[ch]|*.cc|*.cpp)
87                 save="${name}".a$$
88                 test="${name}".b$$
89                 rm -f "$save" "$test"
90                 mv "$name" "$save"
91                 sed \
92                         -e '/EMPTY_MODULE(/s/)$/);/' \
93                         -e 's,\(MODULEID(\),//\1,' \
94                         -e '/MODULE_ID(/s/)$/);/' \
95                         -e 's,\<GCC_NORETURN;,;//GCC_NORETURN;,' \
96                         -e 's,\<GCC_PRINTFLIKE(,;//GCC_PRINTFLIKE(,' \
97                         -e 's,\<GCC_SCANFLIKE(,;//GCC_SCANFLIKE(,' \
98                         -e 's,\(\<NCURSES_EXPORT_VAR\>.*;\),//\1,' \
99                         "$save" >"$test"
100                 cp "$test" "$name"
101                 chmod u+w "$name"
102                 # ${INDENT_PROG-indent} --version
103                 ${INDENT_PROG-indent} -npro $OPTS "$name"
104                 sed \
105                         -e '/EMPTY_MODULE(/s/);$/)/' \
106                         -e 's,//\(MODULEID(\),\1,' \
107                         -e '/MODULE_ID(/s/);$/)/' \
108                         -e 's,;[        ]*//GCC_NORETURN;, GCC_NORETURN;,' \
109                         -e 's,;[        ]*//GCC_PRINTFLIKE(, GCC_PRINTFLIKE(,' \
110                         -e 's,;[        ]*//GCC_SCANFLIKE(, GCC_SCANFLIKE(,' \
111                         -e 's,//\(\<NCURSES_EXPORT_VAR\>[ ]*\),\1,' \
112                         "$name" >"$test"
113                 mv "$test" "$name"
114                 rm -f "${name}~"
115                 if test $NOOP = yes ; then
116                         if (cmp -s "$name" "$save" ) then
117                                 echo "** no change: $name"
118                         else
119                                 diff -u "$save" "$name"
120                         fi
121                         rm -f "$name"
122                         mv "$save" "$name"
123                 elif ( cmp -s "$name" "$save" ) ; then
124                         echo "** unchanged $name"
125                         rm -f "${name}"
126                         mv "$save" "$name"
127                 else
128                         echo "** updated $name"
129                         rm -f "$save"
130                 fi
131                 ;;
132         *)
133                 echo "** ignored:   $name"
134                 ;;
135         esac
136 done