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