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$ 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 VERSION = $0 102 gsub("\\$", "", VERSION) 103 104 printf("/* \$FreeBSD\$ */\n\n") > hfile 105 printf("/*\n") > hfile 106 printf(" * THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.\n") \ 107 > hfile 108 printf(" *\n") > hfile 109 printf(" * generated from:\n") > hfile 110 printf(" *\t%s\n", VERSION) > hfile 111 printf(" */\n") > hfile 112 113 next 114} 115$1 == "oui" { 116 nuios++ 117 118 ouiindex[$2] = nouis; # record index for this name, for later. 119 120 ouis[nouis, 1] = $2; # name 121 ouis[nouis, 2] = $3; # id 122 printf("#define\tMII_OUI_%s\t%s\t", ouis[nouis, 1], 123 ouis[nouis, 2]) > hfile 124 ouis[nouis, 3] = collectline(4, line) 125 printf("/* %s */\n", ouis[nouis, 3]) > hfile 126 next 127} 128$1 == "model" { 129 nmodels++ 130 131 models[nmodels, 1] = $2; # oui name 132 models[nmodels, 2] = $3; # model id 133 models[nmodels, 3] = $4; # id 134 135 printf("#define\tMII_MODEL_%s_%s\t%s\n", models[nmodels, 1], 136 models[nmodels, 2], models[nmodels, 3]) > hfile 137 138 models[nmodels, 4] = collectline(5, line) 139 140 printf("#define\tMII_STR_%s_%s\t\"%s\"\n", 141 models[nmodels, 1], models[nmodels, 2], 142 models[nmodels, 4]) > hfile 143 144 next 145} 146{ 147 print $0 > hfile 148} 149