summaryrefslogtreecommitdiffstats
path: root/tools/sed-callbacks
diff options
context:
space:
mode:
Diffstat (limited to 'tools/sed-callbacks')
-rw-r--r--tools/sed-callbacks11
1 files changed, 10 insertions, 1 deletions
diff --git a/tools/sed-callbacks b/tools/sed-callbacks
index 4a2e27f..42051ba 100644
--- a/tools/sed-callbacks
+++ b/tools/sed-callbacks
@@ -1,11 +1,20 @@
+# 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 }
-/;$/ { H;x}
+# when ; reached, append a swap hold space to pattern space
+/;.*$/ { H;x}
:finish
+# drop \n
s/\n//g
+# replace multi spaces with one
s/ {2,}/ /g
p