xref: /plan9/sys/src/cmd/troff/cvt (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
1*219b2ee8SDavid du Colombier
2*219b2ee8SDavid du Colombierawk '
3*219b2ee8SDavid du Colombier
4*219b2ee8SDavid du Colombier/^{/ {
5*219b2ee8SDavid du Colombier	if (prev != "") {
6*219b2ee8SDavid du Colombier		# comments can be trouble (e.g. ffree())
7*219b2ee8SDavid du Colombier		if ( (c = match(prev, /\/\*.*\*\/$/)) != 0 ) {
8*219b2ee8SDavid du Colombier			comment = substr(prev, c)
9*219b2ee8SDavid du Colombier			sub(/\/\*.*\*\/$/, "", prev)
10*219b2ee8SDavid du Colombier		} else comment = ""
11*219b2ee8SDavid du Colombier
12*219b2ee8SDavid du Colombier		x = prev
13*219b2ee8SDavid du Colombier
14*219b2ee8SDavid du Colombier		# isolate argument list
15*219b2ee8SDavid du Colombier		sub(/^[^(]*\(/, "", x)
16*219b2ee8SDavid du Colombier		sub(/\)[^)]*$/, "", x)
17*219b2ee8SDavid du Colombier
18*219b2ee8SDavid du Colombier		# find the names in it
19*219b2ee8SDavid du Colombier		n = split(x, args)
20*219b2ee8SDavid du Colombier		arglist = ""
21*219b2ee8SDavid du Colombier		for (i = 2; i <= n; i += 2)
22*219b2ee8SDavid du Colombier			arglist = arglist args[i]
23*219b2ee8SDavid du Colombier		gsub(/\(\*f\)\(Tchar\)/, "f", arglist)	# special case for n4.c
24*219b2ee8SDavid du Colombier		gsub(/\[[0-9]+\]/, "", arglist)		#     for n8.c
25*219b2ee8SDavid du Colombier		gsub(/[*()\[\]]/, "", arglist)		# discard noise characters *()[]
26*219b2ee8SDavid du Colombier		gsub(/,/, ", ", arglist)		# space nicely
27*219b2ee8SDavid du Colombier		sub(/\(.*\)/, "(" arglist ")", prev)	# reconstruct
28*219b2ee8SDavid du Colombier		print prev comment
29*219b2ee8SDavid du Colombier
30*219b2ee8SDavid du Colombier		# argument declarations
31*219b2ee8SDavid du Colombier		gsub(/,/, ";", x)
32*219b2ee8SDavid du Colombier		gsub(/\(\*f\)\(Tchar\)/, "(*f)()", x)	# special case for n4.c
33*219b2ee8SDavid du Colombier		if (x != "")
34*219b2ee8SDavid du Colombier			print "\t" x ";"
35*219b2ee8SDavid du Colombier	}
36*219b2ee8SDavid du Colombier	prev = $0
37*219b2ee8SDavid du Colombier	next
38*219b2ee8SDavid du Colombier}
39*219b2ee8SDavid du Colombier
40*219b2ee8SDavid du Colombier{	print prev
41*219b2ee8SDavid du Colombier	prev = $0
42*219b2ee8SDavid du Colombier}
43*219b2ee8SDavid du Colombier
44*219b2ee8SDavid du ColombierEND { print prev }
45*219b2ee8SDavid du Colombier' $*
46