xref: /minix3/external/bsd/top/dist/sigconv.awk (revision b89261ba018da33f0bd8cd05f5a1fe9e7a9c837b)
1*b89261baSDavid van Moolenbroek# Copyright (c) 1984 through 2008, William LeFebvre
2*b89261baSDavid van Moolenbroek# All rights reserved.
3*b89261baSDavid van Moolenbroek#
4*b89261baSDavid van Moolenbroek# Redistribution and use in source and binary forms, with or without
5*b89261baSDavid van Moolenbroek# modification, are permitted provided that the following conditions are met:
6*b89261baSDavid van Moolenbroek#
7*b89261baSDavid van Moolenbroek#    * Redistributions of source code must retain the above copyright
8*b89261baSDavid van Moolenbroek# notice, this list of conditions and the following disclaimer.
9*b89261baSDavid van Moolenbroek#
10*b89261baSDavid van Moolenbroek#    * Redistributions in binary form must reproduce the above
11*b89261baSDavid van Moolenbroek# copyright notice, this list of conditions and the following disclaimer
12*b89261baSDavid van Moolenbroek# in the documentation and/or other materials provided with the
13*b89261baSDavid van Moolenbroek# distribution.
14*b89261baSDavid van Moolenbroek#
15*b89261baSDavid van Moolenbroek#    * Neither the name of William LeFebvre nor the names of other
16*b89261baSDavid van Moolenbroek# contributors may be used to endorse or promote products derived from
17*b89261baSDavid van Moolenbroek# this software without specific prior written permission.
18*b89261baSDavid van Moolenbroek#
19*b89261baSDavid van Moolenbroek# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20*b89261baSDavid van Moolenbroek# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21*b89261baSDavid van Moolenbroek# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22*b89261baSDavid van Moolenbroek# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23*b89261baSDavid van Moolenbroek# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24*b89261baSDavid van Moolenbroek# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25*b89261baSDavid van Moolenbroek# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26*b89261baSDavid van Moolenbroek# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27*b89261baSDavid van Moolenbroek# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28*b89261baSDavid van Moolenbroek# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29*b89261baSDavid van Moolenbroek# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30*b89261baSDavid van Moolenbroek
31*b89261baSDavid van Moolenbroek#
32*b89261baSDavid van Moolenbroek# Awk script converts an include file with definitions for signal names
33*b89261baSDavid van Moolenbroek# in to a predefined array that associates the signal numbers to the names.
34*b89261baSDavid van Moolenbroek#
35*b89261baSDavid van Moolenbroek
36*b89261baSDavid van MoolenbroekBEGIN		{
37*b89261baSDavid van Moolenbroek		    nsig = 0;
38*b89261baSDavid van Moolenbroek		    j = 0;
39*b89261baSDavid van Moolenbroek		    print "/* This file was automatically generated */"
40*b89261baSDavid van Moolenbroek		    print "/* by the awk script \"sigconv.awk\".      */\n"
41*b89261baSDavid van Moolenbroek		    print "struct sigdesc {"
42*b89261baSDavid van Moolenbroek		    print "    const char *name;"
43*b89261baSDavid van Moolenbroek		    print "    int  number;"
44*b89261baSDavid van Moolenbroek		    print "};\n"
45*b89261baSDavid van Moolenbroek		    print "struct sigdesc sigdesc[] = {"
46*b89261baSDavid van Moolenbroek		}
47*b89261baSDavid van Moolenbroek
48*b89261baSDavid van Moolenbroek/^#define[ \t][ \t]*SIG[A-Z]/	{
49*b89261baSDavid van Moolenbroek
50*b89261baSDavid van Moolenbroek				    j = sprintf("%d", $3);
51*b89261baSDavid van Moolenbroek				    if (siglist[j] != "") next;
52*b89261baSDavid van Moolenbroek				    str = $2;
53*b89261baSDavid van Moolenbroek
54*b89261baSDavid van Moolenbroek				    if (nsig < j)
55*b89261baSDavid van Moolenbroek					nsig = j;
56*b89261baSDavid van Moolenbroek
57*b89261baSDavid van Moolenbroek				    siglist[j] = sprintf("\"%s\",\t%2d", \
58*b89261baSDavid van Moolenbroek						substr(str, 4), j);
59*b89261baSDavid van Moolenbroek				}
60*b89261baSDavid van Moolenbroek/^#[ \t]*define[ \t][ \t]*SIG[A-Z]/	{
61*b89261baSDavid van Moolenbroek
62*b89261baSDavid van Moolenbroek				    j = sprintf("%d", $4);
63*b89261baSDavid van Moolenbroek				    if (siglist[j] != "") next;
64*b89261baSDavid van Moolenbroek				    str = $3;
65*b89261baSDavid van Moolenbroek
66*b89261baSDavid van Moolenbroek				    if (nsig < j)
67*b89261baSDavid van Moolenbroek					nsig = j;
68*b89261baSDavid van Moolenbroek
69*b89261baSDavid van Moolenbroek				    siglist[j] = sprintf("\"%s\",\t%2d", \
70*b89261baSDavid van Moolenbroek						substr(str, 4), j);
71*b89261baSDavid van Moolenbroek				}
72*b89261baSDavid van Moolenbroek/^#[ \t]*define[ \t][ \t]*_SIG[A-Z]/	{
73*b89261baSDavid van Moolenbroek
74*b89261baSDavid van Moolenbroek				    j = sprintf("%d", $4);
75*b89261baSDavid van Moolenbroek				    if (siglist[j] != "") next;
76*b89261baSDavid van Moolenbroek				    str = $3;
77*b89261baSDavid van Moolenbroek
78*b89261baSDavid van Moolenbroek				    if (nsig < j)
79*b89261baSDavid van Moolenbroek					nsig = j;
80*b89261baSDavid van Moolenbroek
81*b89261baSDavid van Moolenbroek				    siglist[j] = sprintf("\"%s\",\t%2d", \
82*b89261baSDavid van Moolenbroek					    substr(str, 5), j);
83*b89261baSDavid van Moolenbroek				}
84*b89261baSDavid van Moolenbroek
85*b89261baSDavid van MoolenbroekEND				{
86*b89261baSDavid van Moolenbroek				    for (n = 1; n <= nsig; n++)
87*b89261baSDavid van Moolenbroek					if (siglist[n] != "")
88*b89261baSDavid van Moolenbroek					    printf("    { %s },\n", siglist[n]);
89*b89261baSDavid van Moolenbroek
90*b89261baSDavid van Moolenbroek				    printf("    { NULL,\t 0 }\n};\n");
91*b89261baSDavid van Moolenbroek				}
92