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