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