1*dcb4b80dSSascha Wildner#! /usr/bin/awk -f 2*dcb4b80dSSascha Wildner# $NetBSD: devlist2h.awk,v 1.3 1998/09/05 14:42:06 christos Exp $ 3*dcb4b80dSSascha Wildner# $FreeBSD: src/sys/dev/pccard/devlist2h.awk,v 1.3 2003/03/28 06:43:50 imp Exp $ 4*dcb4b80dSSascha Wildner# $DragonFly: src/sys/bus/pccard/devlist2h.awk,v 1.1 2004/02/10 07:55:45 joerg Exp $ 5*dcb4b80dSSascha Wildner# 6*dcb4b80dSSascha Wildner# Copyright (c) 1998 The NetBSD Foundation, Inc. 7*dcb4b80dSSascha Wildner# All rights reserved. 8*dcb4b80dSSascha Wildner# 9*dcb4b80dSSascha Wildner# This code is derived from software contributed to The NetBSD Foundation 10*dcb4b80dSSascha Wildner# by Christos Zoulas. 11*dcb4b80dSSascha Wildner# 12*dcb4b80dSSascha Wildner# Redistribution and use in source and binary forms, with or without 13*dcb4b80dSSascha Wildner# modification, are permitted provided that the following conditions 14*dcb4b80dSSascha Wildner# are met: 15*dcb4b80dSSascha Wildner# 1. Redistributions of source code must retain the above copyright 16*dcb4b80dSSascha Wildner# notice, this list of conditions and the following disclaimer. 17*dcb4b80dSSascha Wildner# 2. Redistributions in binary form must reproduce the above copyright 18*dcb4b80dSSascha Wildner# notice, this list of conditions and the following disclaimer in the 19*dcb4b80dSSascha Wildner# documentation and/or other materials provided with the distribution. 20*dcb4b80dSSascha Wildner# 3. All advertising materials mentioning features or use of this software 21*dcb4b80dSSascha Wildner# must display the following acknowledgement: 22*dcb4b80dSSascha Wildner# This product includes software developed by the NetBSD 23*dcb4b80dSSascha Wildner# Foundation, Inc. and its contributors. 24*dcb4b80dSSascha Wildner# 4. Neither the name of The NetBSD Foundation nor the names of its 25*dcb4b80dSSascha Wildner# contributors may be used to endorse or promote products derived 26*dcb4b80dSSascha Wildner# from this software without specific prior written permission. 27*dcb4b80dSSascha Wildner# 28*dcb4b80dSSascha Wildner# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 29*dcb4b80dSSascha Wildner# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 30*dcb4b80dSSascha Wildner# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 31*dcb4b80dSSascha Wildner# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 32*dcb4b80dSSascha Wildner# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 33*dcb4b80dSSascha Wildner# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 34*dcb4b80dSSascha Wildner# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 35*dcb4b80dSSascha Wildner# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 36*dcb4b80dSSascha Wildner# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 37*dcb4b80dSSascha Wildner# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 38*dcb4b80dSSascha Wildner# POSSIBILITY OF SUCH DAMAGE. 39*dcb4b80dSSascha Wildner# 40*dcb4b80dSSascha Wildner# Copyright (c) 1995, 1996 Christopher G. Demetriou 41*dcb4b80dSSascha Wildner# All rights reserved. 42*dcb4b80dSSascha Wildner# 43*dcb4b80dSSascha Wildner# Redistribution and use in source and binary forms, with or without 44*dcb4b80dSSascha Wildner# modification, are permitted provided that the following conditions 45*dcb4b80dSSascha Wildner# are met: 46*dcb4b80dSSascha Wildner# 1. Redistributions of source code must retain the above copyright 47*dcb4b80dSSascha Wildner# notice, this list of conditions and the following disclaimer. 48*dcb4b80dSSascha Wildner# 2. Redistributions in binary form must reproduce the above copyright 49*dcb4b80dSSascha Wildner# notice, this list of conditions and the following disclaimer in the 50*dcb4b80dSSascha Wildner# documentation and/or other materials provided with the distribution. 51*dcb4b80dSSascha Wildner# 3. All advertising materials mentioning features or use of this software 52*dcb4b80dSSascha Wildner# must display the following acknowledgement: 53*dcb4b80dSSascha Wildner# This product includes software developed by Christopher G. Demetriou. 54*dcb4b80dSSascha Wildner# This product includes software developed by Christos Zoulas 55*dcb4b80dSSascha Wildner# 4. The name of the author(s) may not be used to endorse or promote products 56*dcb4b80dSSascha Wildner# derived from this software without specific prior written permission 57*dcb4b80dSSascha Wildner# 58*dcb4b80dSSascha Wildner# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 59*dcb4b80dSSascha Wildner# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 60*dcb4b80dSSascha Wildner# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 61*dcb4b80dSSascha Wildner# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 62*dcb4b80dSSascha Wildner# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 63*dcb4b80dSSascha Wildner# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 64*dcb4b80dSSascha Wildner# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 65*dcb4b80dSSascha Wildner# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 66*dcb4b80dSSascha Wildner# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 67*dcb4b80dSSascha Wildner# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 68*dcb4b80dSSascha Wildner# 69*dcb4b80dSSascha Wildnerfunction collectline(f, line) { 70*dcb4b80dSSascha Wildner oparen = 0 71*dcb4b80dSSascha Wildner line = "" 72*dcb4b80dSSascha Wildner while (f <= NF) { 73*dcb4b80dSSascha Wildner if ($f == "#") { 74*dcb4b80dSSascha Wildner line = line "(" 75*dcb4b80dSSascha Wildner oparen = 1 76*dcb4b80dSSascha Wildner f++ 77*dcb4b80dSSascha Wildner continue 78*dcb4b80dSSascha Wildner } 79*dcb4b80dSSascha Wildner if (oparen) { 80*dcb4b80dSSascha Wildner line = line $f 81*dcb4b80dSSascha Wildner if (f < NF) 82*dcb4b80dSSascha Wildner line = line " " 83*dcb4b80dSSascha Wildner f++ 84*dcb4b80dSSascha Wildner continue 85*dcb4b80dSSascha Wildner } 86*dcb4b80dSSascha Wildner line = line $f 87*dcb4b80dSSascha Wildner if (f < NF) 88*dcb4b80dSSascha Wildner line = line " " 89*dcb4b80dSSascha Wildner f++ 90*dcb4b80dSSascha Wildner } 91*dcb4b80dSSascha Wildner if (oparen) 92*dcb4b80dSSascha Wildner line = line ")" 93*dcb4b80dSSascha Wildner return line 94*dcb4b80dSSascha Wildner} 95*dcb4b80dSSascha WildnerBEGIN { 96*dcb4b80dSSascha Wildner nproducts = nvendors = 0 97*dcb4b80dSSascha Wildner hfile="pccarddevs.h" 98*dcb4b80dSSascha Wildner} 99*dcb4b80dSSascha WildnerNR == 1 { 100*dcb4b80dSSascha Wildner printf("/*\n") > hfile 101*dcb4b80dSSascha Wildner printf(" * THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.\n") \ 102*dcb4b80dSSascha Wildner > hfile 103*dcb4b80dSSascha Wildner printf(" */\n") > hfile 104*dcb4b80dSSascha Wildner 105*dcb4b80dSSascha Wildner next 106*dcb4b80dSSascha Wildner} 107*dcb4b80dSSascha Wildner$1 == "vendor" { 108*dcb4b80dSSascha Wildner nvendors++ 109*dcb4b80dSSascha Wildner 110*dcb4b80dSSascha Wildner vendorindex[$2] = nvendors; # record index for this name, for later. 111*dcb4b80dSSascha Wildner vendors[nvendors, 1] = $2; # name 112*dcb4b80dSSascha Wildner if ($3 == "-1") 113*dcb4b80dSSascha Wildner $3 = "0xffffffff"; 114*dcb4b80dSSascha Wildner vendors[nvendors, 2] = $3; # id 115*dcb4b80dSSascha Wildner printf("#define\tPCMCIA_VENDOR_%s\t%s\t", vendors[nvendors, 1], 116*dcb4b80dSSascha Wildner vendors[nvendors, 2]) > hfile 117*dcb4b80dSSascha Wildner vendors[nvendors, 3] = collectline(4, line) 118*dcb4b80dSSascha Wildner printf("/* %s */\n", vendors[nvendors, 3]) > hfile 119*dcb4b80dSSascha Wildner next 120*dcb4b80dSSascha Wildner} 121*dcb4b80dSSascha Wildner$1 == "product" { 122*dcb4b80dSSascha Wildner nproducts++ 123*dcb4b80dSSascha Wildner 124*dcb4b80dSSascha Wildner products[nproducts, 1] = $2; # vendor name 125*dcb4b80dSSascha Wildner if ($3 == "-1") 126*dcb4b80dSSascha Wildner $3 = "0xffffffff"; 127*dcb4b80dSSascha Wildner products[nproducts, 2] = $3; # product id 128*dcb4b80dSSascha Wildner products[nproducts, 3] = $4; # id 129*dcb4b80dSSascha Wildner 130*dcb4b80dSSascha Wildner f = 5; 131*dcb4b80dSSascha Wildner 132*dcb4b80dSSascha Wildner if ($4 == "{") { 133*dcb4b80dSSascha Wildner products[nproducts, 3] = "0xffffffff"; 134*dcb4b80dSSascha Wildner z = "{ " 135*dcb4b80dSSascha Wildner for (i = 0; i < 4; i++) { 136*dcb4b80dSSascha Wildner if (f <= NF) { 137*dcb4b80dSSascha Wildner gsub("&sp", " ", $f) 138*dcb4b80dSSascha Wildner gsub("&tab", "\t", $f) 139*dcb4b80dSSascha Wildner gsub("&nl", "\n", $f) 140*dcb4b80dSSascha Wildner z = z $f " " 141*dcb4b80dSSascha Wildner f++ 142*dcb4b80dSSascha Wildner } 143*dcb4b80dSSascha Wildner else { 144*dcb4b80dSSascha Wildner if (i == 3) 145*dcb4b80dSSascha Wildner z = z "NULL " 146*dcb4b80dSSascha Wildner else 147*dcb4b80dSSascha Wildner z = z "NULL, " 148*dcb4b80dSSascha Wildner } 149*dcb4b80dSSascha Wildner } 150*dcb4b80dSSascha Wildner products[nproducts, 4] = z $f 151*dcb4b80dSSascha Wildner f++ 152*dcb4b80dSSascha Wildner } 153*dcb4b80dSSascha Wildner else { 154*dcb4b80dSSascha Wildner products[nproducts, 4] = "{ NULL, NULL, NULL, NULL }" 155*dcb4b80dSSascha Wildner } 156*dcb4b80dSSascha Wildner printf("#define\tPCMCIA_CIS_%s_%s\t%s\n", 157*dcb4b80dSSascha Wildner products[nproducts, 1], products[nproducts, 2], 158*dcb4b80dSSascha Wildner products[nproducts, 4]) > hfile 159*dcb4b80dSSascha Wildner printf("#define\tPCMCIA_PRODUCT_%s_%s\t%s\n", products[nproducts, 1], 160*dcb4b80dSSascha Wildner products[nproducts, 2], products[nproducts, 3]) > hfile 161*dcb4b80dSSascha Wildner 162*dcb4b80dSSascha Wildner products[nproducts, 5] = collectline(f, line) 163*dcb4b80dSSascha Wildner 164*dcb4b80dSSascha Wildner printf("#define\tPCMCIA_STR_%s_%s\t\"%s\"\n", 165*dcb4b80dSSascha Wildner products[nproducts, 1], products[nproducts, 2], 166*dcb4b80dSSascha Wildner products[nproducts, 5]) > hfile 167*dcb4b80dSSascha Wildner 168*dcb4b80dSSascha Wildner next 169*dcb4b80dSSascha Wildner} 170*dcb4b80dSSascha Wildner{ 171*dcb4b80dSSascha Wildner print $0 > hfile 172*dcb4b80dSSascha Wildner} 173