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