1#! /usr/bin/awk -f 2# $NetBSD: devlist2h.awk,v 1.7 2003/12/05 04:33:27 grant Exp $ 3# 4# Copyright (c) 1995, 1996 Christopher G. Demetriou 5# All rights reserved. 6# 7# Redistribution and use in source and binary forms, with or without 8# modification, are permitted provided that the following conditions 9# are met: 10# 1. Redistributions of source code must retain the above copyright 11# notice, this list of conditions and the following disclaimer. 12# 2. Redistributions in binary form must reproduce the above copyright 13# notice, this list of conditions and the following disclaimer in the 14# documentation and/or other materials provided with the distribution. 15# 3. All advertising materials mentioning features or use of this software 16# must display the following acknowledgement: 17# This product includes software developed by Christopher G. Demetriou. 18# 4. The name of the author may not be used to endorse or promote products 19# derived from this software without specific prior written permission 20# 21# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 22# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 23# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 24# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 25# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 26# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 30# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31# 32BEGIN { 33 nproducts = nvendors = 0 34 hfile="pcidevs.h" 35} 36NR == 1 { 37 printf("/*\n") > hfile 38 printf(" * THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.\n") \ 39 > hfile 40 printf(" */\n") > hfile 41 42 next 43} 44NF > 0 && $1 == "vendor" { 45 nvendors++ 46 47 vendorindex[$2] = nvendors; # record index for this name, for later. 48 vendors[nvendors, 1] = $2; # name 49 vendors[nvendors, 2] = $3; # id 50 printf("#define\tPCI_VENDOR_%s\t%s\t", vendors[nvendors, 1], 51 vendors[nvendors, 2]) > hfile 52 53 i = 3; f = 4; 54 55 # comments 56 ocomment = oparen = 0 57 if (f <= NF) { 58 printf("\t/* ") > hfile 59 ocomment = 1; 60 } 61 while (f <= NF) { 62 if ($f == "#") { 63 printf("(") > hfile 64 oparen = 1 65 f++ 66 continue 67 } 68 if (oparen) { 69 printf("%s", $f) > hfile 70 if (f < NF) 71 printf(" ") > hfile 72 f++ 73 continue 74 } 75 vendors[nvendors, i] = $f 76 printf("%s", vendors[nvendors, i]) > hfile 77 if (f < NF) 78 printf(" ") > hfile 79 i++; f++; 80 } 81 if (oparen) 82 printf(")") > hfile 83 if (ocomment) 84 printf(" */") > hfile 85 printf("\n") > hfile 86 87 next 88} 89NF > 0 && $1 == "product" { 90 nproducts++ 91 92 products[nproducts, 1] = $2; # vendor name 93 products[nproducts, 2] = $3; # product id 94 products[nproducts, 3] = $4; # id 95 printf("#define\tPCI_PRODUCT_%s_%s\t%s\t", products[nproducts, 1], 96 products[nproducts, 2], products[nproducts, 3]) > hfile 97 98 i=4; f = 5; 99 100 # comments 101 ocomment = oparen = 0 102 if (f <= NF) { 103 printf("\t/* ") > hfile 104 ocomment = 1; 105 } 106 while (f <= NF) { 107 if ($f == "#") { 108 printf("(") > hfile 109 oparen = 1 110 f++ 111 continue 112 } 113 if (oparen) { 114 printf("%s", $f) > hfile 115 if (f < NF) 116 printf(" ") > hfile 117 f++ 118 continue 119 } 120 products[nproducts, i] = $f 121 printf("%s", products[nproducts, i]) > hfile 122 if (f < NF) 123 printf(" ") > hfile 124 i++; f++; 125 } 126 if (oparen) 127 printf(")") > hfile 128 if (ocomment) 129 printf(" */") > hfile 130 printf("\n") > hfile 131 132 next 133} 134{ 135 print $0 > hfile 136} 137END { 138 close(hfile) 139} 140