File: ref-ptx1.awk

package info (click to toggle)
tardy 1.25-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster, stretch, wheezy
  • size: 4,956 kB
  • ctags: 1,678
  • sloc: cpp: 15,400; sh: 3,755; makefile: 1,526; ansic: 1,248; awk: 223
file content (120 lines) | stat: -rw-r--r-- 3,127 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
113
114
115
116
117
118
119
120
#
# tardy - a tar post-processor
# Copyright (C) 2011 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\)/, "Tardy", 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/ {
    # ignore conditional (around indexing)
    next
}
/^['.]\\}/ {
    # ignore conditional (around 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(/\\\((mi|hy|em)/, "-")  # Translate
        gsub(/\\\*\(n\)/, "Tardy")
        gsub(/\\\*\(../, "")         # Kill troff strings
        gsub(/\\/, "")               # Kill all backslashes
        print th_name "(" th_section ") " $0
    }
}