File: ptx1.awk

package info (click to toggle)
aegis 4.24.3-3
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd, wheezy
  • size: 34,056 kB
  • ctags: 12,500
  • sloc: cpp: 178,528; sh: 79,948; makefile: 34,813; yacc: 4,610; perl: 1,499; ansic: 492; awk: 325
file content (112 lines) | stat: -rw-r--r-- 2,439 bytes parent folder | download | duplicates (3)
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#
#	aegis - project change supervisor
#	Copyright (C) 1997, 2002, 2006-2008 Peter Miller
#
#	This program is free software; you can redistribute it and/or modify
#	it under the terms of the GNU General Public License as published by
#	the Free Software Foundation; either version 3 of the License, or
#	(at your option) any later version.
#
#	This program is distributed in the hope that it will be useful,
#	but WITHOUT ANY WARRANTY; without even the implied warranty of
#	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#	GNU General Public License for more details.
#
#	You should have received a copy of the GNU General Public License
#	along with this program. If not, see
#	<http://www.gnu.org/licenses/>.
#
function getc()
{
	getc_tmp = substr(getc_buf, getc_pos, 1)
	if (getc_tmp != "")
		++getc_pos
	return getc_tmp
}

BEGIN {
	th_name = "none"
	th_section = "none"
	active = 0
}
/^\.TH/ {
	# watch out for the quotes
	getc_buf = $0
	getc_pos = 4
	argc = 0
	for (;;)
	{
		c = getc()
		while (c == " " || c == "\t")
			c = getc()
		if (c == "")
			break
		quoted = 0
		arg = ""
		for (;;)
		{
			if (c == "\"")
				quoted = !quoted
			else if (c == "")
				break
			else if (!quoted && (c == " " || c == "\t"))
				break
			else
				arg = arg c
			c = getc()
		}
		argv[++argc] = arg
	}

	# th_name = argv[1]
	# gsub(/\\\*\(n\)/, "aegis", th_name)
	# th_section = argv[2]
	th_name = FILENAME
	sub(/^.*\//, "", th_name)
	sub(/\.[0-9]$/, "", th_name)
	th_section = FILENAME
	sub(/^.*\./, "", th_section)
	active = 0
	next
}
/^\.SH/ {
	active = ($2 == "NAME")
	next
}
/^['.]\\"/ {
	# ignore comments
	next
}
/^['.]XX/ {
	# ignore indexing
	next
}
/^['.]/ {
	if (active)
	{
		sub(/^.[a-zA-Z][a-zA-Z]*[ 	]*/, "")
		print th_name "(" th_section ")	" $0
	}
	next
}
{
	if (active)
	{
		gsub(/	/, " ")		# Translate tabs to spaces
		gsub(/__*/, " ")	# Collapse underscores
		gsub(/  +/, " ")	# Collapse spaces
		gsub(/ *, */, ", ")	# Fix comma spacings
		sub(/^ /, "")		# Kill initial spaces
		sub(/ $/, "")		# Kill trailing spaces
		gsub(/\\f\(../, "")	# Kill font changes
		gsub(/\\f./, "")	# Kill font changes
		gsub(/\\s[-+0-9]*/, "")	# Kill size changes
		gsub(/\\&/, "")		# Kill \&
		gsub(/\\\((ru|ul)/, "_")	# Translate
		gsub(/\\\((mi|hy|em)/, "-")	# Translate
		gsub(/\\\*\(n\)/, "aegis")
		gsub(/\\\*\(../, "")	# Kill troff strings
		gsub(/\\/, "")		# Kill all backslashes
		print th_name "(" th_section ")	" $0
	}
}