46 lines
938 B
Plaintext
46 lines
938 B
Plaintext
|
|
awk '
|
|
|
|
/^{/ {
|
|
if (prev != "") {
|
|
# comments can be trouble (e.g. ffree())
|
|
if ( (c = match(prev, /\/\*.*\*\/$/)) != 0 ) {
|
|
comment = substr(prev, c)
|
|
sub(/\/\*.*\*\/$/, "", prev)
|
|
} else comment = ""
|
|
|
|
x = prev
|
|
|
|
# isolate argument list
|
|
sub(/^[^(]*\(/, "", x)
|
|
sub(/\)[^)]*$/, "", x)
|
|
|
|
# find the names in it
|
|
n = split(x, args)
|
|
arglist = ""
|
|
for (i = 2; i <= n; i += 2)
|
|
arglist = arglist args[i]
|
|
gsub(/\(\*f\)\(Tchar\)/, "f", arglist) # special case for n4.c
|
|
gsub(/\[[0-9]+\]/, "", arglist) # for n8.c
|
|
gsub(/[*()\[\]]/, "", arglist) # discard noise characters *()[]
|
|
gsub(/,/, ", ", arglist) # space nicely
|
|
sub(/\(.*\)/, "(" arglist ")", prev) # reconstruct
|
|
print prev comment
|
|
|
|
# argument declarations
|
|
gsub(/,/, ";", x)
|
|
gsub(/\(\*f\)\(Tchar\)/, "(*f)()", x) # special case for n4.c
|
|
if (x != "")
|
|
print "\t" x ";"
|
|
}
|
|
prev = $0
|
|
next
|
|
}
|
|
|
|
{ print prev
|
|
prev = $0
|
|
}
|
|
|
|
END { print prev }
|
|
' $*
|