blob: 999d2d7b1d38592ce2f1c1a4074fccdd3c6a44c7 (
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
|
# eat all comments
/^\s*\/\*/ {
:comment
/\*\/\s*$/ { n; b nocomment }
n; b comment
}
:nocomment
# drop if don't start with typedef
/^\s*typedef/ ! b
# one line typedef xxx (...); we are done
s/^\s*typedef\s+(.*)(\(\*?\w+\))?\s*(\(.*\));.*$/typedef \1 \2 \3;/
t finish
# if ends with ,
s/^\s*typedef\s+(.*)(\(\*?\w+\))?\s*(\(.*,)/typedef \1 \2 \3/
# drop if substitution fail, copy pattern to hold space
T;h
:loop;n
# append each parameters
/,$/ { H; b loop }
# when ; reached, append a swap hold space to pattern space
/;.*$/ { H;x}
:finish
# drop \n
s/\n//g
# replace multi spaces with one
s/\t/ /g
s/ {2,}/ /g
p
|