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