summaryrefslogtreecommitdiff
path: root/sys/src/9/xen/cppx
blob: 77370d014a6bf3659dcf842660eb9fd7c65cc5d4 (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
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/bin/rc
awk '
function qq(s) {
	gsub("\"", "£", s)
	return "\"@" s "\""
}

/^#include/	{ next
}
/^#define.*\\$/ {
	save[n++] = $0
	print qq($0 "\\")
	next
}
(n > 0) && /\\$/ {
	save[n++] = $0
	print qq($0 "\\")
	next
}
(n > 0)  {
	save[n++] = $0
	print qq($0)
	for (i = 0; i < n; i++) print save[i]
	n = 0
	next
}
/^# *((define)|(error)).*[^\\]*$/ {
	print qq($0)
	print
	next
}
/^# *undef.*[^\\]*$/ {
	print
	print qq($0)
	next
}
	{ print
}
' $* |
cpp -P |
sed -e 's/£/"/g' -e 's/^"@(.*\\)\\"$/\1/' -e 's/^"@(.*)"$/\1/'