1#! /usr/bin/awk -f 2# $NetBSD: devlist2h.awk,v 1.3 1998/09/05 14:42:06 christos Exp $ 3# $FreeBSD$ 4 5#- 6# SPDX-License-Identifier: BSD-2-Clause-NetBSD AND BSD-4-Clause 7# 8# Copyright (c) 1998 The NetBSD Foundation, Inc. 9# All rights reserved. 10# 11# This code is derived from software contributed to The NetBSD Foundation 12# by Christos Zoulas. 13# 14# Redistribution and use in source and binary forms, with or without 15# modification, are permitted provided that the following conditions 16# are met: 17# 1. Redistributions of source code must retain the above copyright 18# notice, this list of conditions and the following disclaimer. 19# 2. Redistributions in binary form must reproduce the above copyright 20# notice, this list of conditions and the following disclaimer in the 21# documentation and/or other materials provided with the distribution. 22# 23# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 24# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 25# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 26# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 27# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 28# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 29# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 30# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 31# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 32# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 33# POSSIBILITY OF SUCH DAMAGE. 34# 35# Copyright (c) 1995, 1996 Christopher G. Demetriou 36# All rights reserved. 37# 38# Redistribution and use in source and binary forms, with or without 39# modification, are permitted provided that the following conditions 40# are met: 41# 1. Redistributions of source code must retain the above copyright 42# notice, this list of conditions and the following disclaimer. 43# 2. Redistributions in binary form must reproduce the above copyright 44# notice, this list of conditions and the following disclaimer in the 45# documentation and/or other materials provided with the distribution. 46# 3. All advertising materials mentioning features or use of this software 47# must display the following acknowledgement: 48# This product includes software developed by Christopher G. Demetriou. 49# This product includes software developed by Christos Zoulas 50# 4. The name of the author(s) may not be used to endorse or promote products 51# derived from this software without specific prior written permission 52# 53# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 54# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 55# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 56# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 57# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 58# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 59# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 60# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 61# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 62# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 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 nproducts = nvendors = 0 92 hfile="pccarddevs.h" 93} 94NR == 1 { 95 VERSION = $0 96 gsub("\\$", "", VERSION) 97 98 printf("/*\t\$FreeBSD\$\t*/\n\n") > hfile 99 printf("/*\n") > hfile 100 printf(" * THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.\n") \ 101 > hfile 102 printf(" *\n") > hfile 103 printf(" * generated from:\n") > hfile 104 printf(" *\t%s\n", VERSION) > hfile 105 printf(" */\n") > hfile 106 107 next 108} 109$1 == "vendor" { 110 nvendors++ 111 112 vendorindex[$2] = nvendors; # record index for this name, for later. 113 vendors[nvendors, 1] = $2; # name 114 if ($3 == "-1") 115 $3 = "0xffffffff"; 116 vendors[nvendors, 2] = $3; # id 117 printf("#define\tPCMCIA_VENDOR_%s\t%s\t", vendors[nvendors, 1], 118 vendors[nvendors, 2]) > hfile 119 vendors[nvendors, 3] = collectline(4, line) 120 printf("/* %s */\n", vendors[nvendors, 3]) > hfile 121 next 122} 123$1 == "product" { 124 nproducts++ 125 126 products[nproducts, 1] = $2; # vendor name 127 if ($3 == "-1") 128 $3 = "0xffffffff"; 129 products[nproducts, 2] = $3; # product id 130 products[nproducts, 3] = $4; # id 131 132 f = 5; 133 134 if ($4 == "{") { 135 products[nproducts, 3] = "0xffffffff"; 136 z = "{ " 137 for (i = 0; i < 4; i++) { 138 if (f <= NF) { 139 gsub("&sp", " ", $f) 140 gsub("&tab", "\t", $f) 141 gsub("&nl", "\n", $f) 142 z = z $f " " 143 f++ 144 } 145 else { 146 if (i == 3) 147 z = z "NULL " 148 else 149 z = z "NULL, " 150 } 151 } 152 products[nproducts, 4] = z $f 153 f++ 154 } 155 else { 156 products[nproducts, 4] = "{ NULL, NULL, NULL, NULL }" 157 } 158 printf("#define\tPCMCIA_CIS_%s_%s\t%s\n", 159 products[nproducts, 1], products[nproducts, 2], 160 products[nproducts, 4]) > hfile 161 printf("#define\tPCMCIA_PRODUCT_%s_%s\t%s\n", products[nproducts, 1], 162 products[nproducts, 2], products[nproducts, 3]) > hfile 163 164 products[nproducts, 5] = collectline(f, line) 165 166 printf("#define\tPCMCIA_STR_%s_%s\t\"%s\"\n", 167 products[nproducts, 1], products[nproducts, 2], 168 products[nproducts, 5]) > hfile 169 170 next 171} 172{ 173 print $0 > hfile 174} 175