18d15fdeeSweingart#! /usr/bin/awk -f 2*3ba2e648Smickey# $OpenBSD: devlist2h.awk,v 1.6 2001/01/29 06:16:14 mickey Exp $ 38d15fdeeSweingart# $NetBSD: devlist2h.awk,v 1.2 1996/01/22 21:08:09 cgd Exp $ 48d15fdeeSweingart# 58d15fdeeSweingart# Copyright (c) 1995, 1996 Christopher G. Demetriou 68d15fdeeSweingart# All rights reserved. 78d15fdeeSweingart# 88d15fdeeSweingart# Redistribution and use in source and binary forms, with or without 98d15fdeeSweingart# modification, are permitted provided that the following conditions 108d15fdeeSweingart# are met: 118d15fdeeSweingart# 1. Redistributions of source code must retain the above copyright 128d15fdeeSweingart# notice, this list of conditions and the following disclaimer. 138d15fdeeSweingart# 2. Redistributions in binary form must reproduce the above copyright 148d15fdeeSweingart# notice, this list of conditions and the following disclaimer in the 158d15fdeeSweingart# documentation and/or other materials provided with the distribution. 168d15fdeeSweingart# 3. All advertising materials mentioning features or use of this software 178d15fdeeSweingart# must display the following acknowledgement: 188d15fdeeSweingart# This product includes software developed by Christopher G. Demetriou. 198d15fdeeSweingart# 4. The name of the author may not be used to endorse or promote products 208d15fdeeSweingart# derived from this software without specific prior written permission 218d15fdeeSweingart# 228d15fdeeSweingart# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 238d15fdeeSweingart# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 248d15fdeeSweingart# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 258d15fdeeSweingart# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 268d15fdeeSweingart# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 278d15fdeeSweingart# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 288d15fdeeSweingart# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 298d15fdeeSweingart# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 308d15fdeeSweingart# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 318d15fdeeSweingart# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 328d15fdeeSweingart# 338d15fdeeSweingartBEGIN { 348d15fdeeSweingart nproducts = 0 358d15fdeeSweingart dfile="pnpdevs.h" 368d15fdeeSweingart} 378d15fdeeSweingartNR == 1 { 388d15fdeeSweingart VERSION = $0 398d15fdeeSweingart gsub("\\$", "", VERSION) 408d15fdeeSweingart 418d15fdeeSweingart printf("/*\n") > dfile 428d15fdeeSweingart printf(" * THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.\n") \ 438d15fdeeSweingart > dfile 448d15fdeeSweingart printf(" *\n") > dfile 458d15fdeeSweingart printf(" * generated from:\n") > dfile 468d15fdeeSweingart printf(" *\t%s\n", VERSION) > dfile 478d15fdeeSweingart printf(" */\n") > dfile 488d15fdeeSweingart 498d15fdeeSweingart next 508d15fdeeSweingart} 518d15fdeeSweingart{ 528d15fdeeSweingart if ($1 == "") 538d15fdeeSweingart next 548d15fdeeSweingart if (substr($1,0,1) == "#") 558d15fdeeSweingart next 568d15fdeeSweingart if (substr($2,0,1) == "#") 578d15fdeeSweingart next 585a30f9a7Shugh do { 598d15fdeeSweingart nproducts++ 605a30f9a7Shugh if ((x = index($1, "/"))) 615a30f9a7Shugh products[nproducts, 1] = substr($1, 1, x - 1); 625a30f9a7Shugh else 638d15fdeeSweingart products[nproducts, 1] = $1; # driver name 648d15fdeeSweingart products[nproducts, 2] = $2; # pnp id 658d15fdeeSweingart# if ($3 && substr($3,0,1) == "#") 668d15fdeeSweingart# products[nproducts, 3] = substr($3, 1); 678d15fdeeSweingart# printf("%s %s %s\n", $1, $2, products[nproducts, 3]); 685a30f9a7Shugh } while (x && ($1 = substr($1, x + 1, length($1) - x))); 698d15fdeeSweingart 708d15fdeeSweingart next 718d15fdeeSweingart} 728d15fdeeSweingartEND { 738d15fdeeSweingart # print out the match tables 748d15fdeeSweingart 758d15fdeeSweingart printf("\n") > dfile 768d15fdeeSweingart 77fbde7899Smickey printf("const struct isapnp_knowndev isapnp_knowndevs[] = {\n") > dfile 788d15fdeeSweingart for (i = 1; i <= nproducts; i++) { 79fbde7899Smickey printf("\t{ {\"%s\"}, {\"%s\"} },", 808d15fdeeSweingart products[i, 2], products[i, 1]) \ 818d15fdeeSweingart > dfile 828d15fdeeSweingart if (products[i, 3]) 838d15fdeeSweingart printf("\t/* %s */", products[i, 3]) > dfile 848d15fdeeSweingart printf("\n") > dfile 858d15fdeeSweingart } 868d15fdeeSweingart printf("};\n") > dfile 878d15fdeeSweingart} 88