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