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$ 68# 69function collectline(f, line) { 70 oparen = 0 71 line = "" 72 while (f <= NF) { 73 if ($f == "#") { 74 line = line "(" 75 oparen = 1 76 f++ 77 continue 78 } 79 if (oparen) { 80 line = line $f 81 if (f < NF) 82 line = line " " 83 f++ 84 continue 85 } 86 line = line $f 87 if (f < NF) 88 line = line " " 89 f++ 90 } 91 if (oparen) 92 line = line ")" 93 return line 94} 95BEGIN { 96 nmodels = nouis = 0 97 hfile="miidevs.h" 98} 99NR == 1 { 100 VERSION = $0 101 gsub("\\$", "", VERSION) 102 103 printf("/*\t\$FreeBSD\$\t*/\n\n") > hfile 104 printf("/*\n") > hfile 105 printf(" * THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.\n") \ 106 > hfile 107 printf(" *\n") > hfile 108 printf(" * generated from:\n") > hfile 109 printf(" *\t%s\n", VERSION) > hfile 110 printf(" */\n") > hfile 111 112 next 113} 114$1 == "oui" { 115 nuios++ 116 117 ouiindex[$2] = nouis; # record index for this name, for later. 118 119 ouis[nouis, 1] = $2; # name 120 ouis[nouis, 2] = $3; # id 121 printf("#define\tMII_OUI_%s\t%s\t", ouis[nouis, 1], 122 ouis[nouis, 2]) > hfile 123 ouis[nouis, 3] = collectline(4, line) 124 printf("/* %s */\n", ouis[nouis, 3]) > hfile 125 next 126} 127$1 == "model" { 128 nmodels++ 129 130 models[nmodels, 1] = $2; # oui name 131 models[nmodels, 2] = $3; # model id 132 models[nmodels, 3] = $4; # id 133 134 printf("#define\tMII_MODEL_%s_%s\t%s\n", models[nmodels, 1], 135 models[nmodels, 2], models[nmodels, 3]) > hfile 136 137 models[nmodels, 4] = collectline(5, line) 138 139 printf("#define\tMII_STR_%s_%s\t\"%s\"\n", 140 models[nmodels, 1], models[nmodels, 2], 141 models[nmodels, 4]) > hfile 142 143 next 144} 145{ 146 print $0 > hfile 147} 148