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