1#! /usr/bin/awk -f 2# $OpenBSD: devlist2h.awk,v 1.4 2006/08/10 23:44:16 miod Exp $ 3# 4# Copyright (c) 2003, Miodrag Vallat. 5# All rights reserved. 6# 7# Redistribution and use in source and binary forms, with or without 8# modification, are permitted provided that the following conditions 9# are met: 10# 1. Redistributions of source code must retain the above copyright 11# notice, this list of conditions and the following disclaimer. 12# 2. Redistributions in binary form must reproduce the above copyright 13# notice, this list of conditions and the following disclaimer in the 14# documentation and/or other materials provided with the distribution. 15# 16# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26# 27BEGIN { 28 header = 0 29} 30NR == 1 { 31 VERSION = $0 32 gsub("\\$", "", VERSION) 33 34 printf("/*\t\$OpenBSD\$\t*/\n\n") 35 printf("/*\n") 36 printf(" * THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.\n") 37 printf(" *\n") 38 printf(" * generated from:\n") 39 printf(" *\t%s\n", VERSION) 40 printf(" */\n") 41 42 next 43} 44$1 == "keyboard" || $1 == "mouse" || $1 == "idmodule" || $1 == "buttonbox" { 45 46 if (header == 0) { 47 printf("const struct hildevice hildevs[] = {\n") 48 header = 1 49 } 50 51 printf("\t{ 0x%s, 0x%s, HIL_DEVICE_%s, \"", 52 $2, $3, toupper($1)) 53 54 # description, with optional ``#''-prefixed comments 55 comment = 0 56 i = 4 57 f = i 58 while (f <= NF) { 59 if ($f == "#") { 60 comment = 1 61 printf ("\" },\t/*") 62 } else { 63 if (f > i) 64 printf(" ") 65 printf("%s", $f) 66 } 67 f++ 68 } 69 if (comment) 70 printf(" */\n"); 71 else 72 printf("\" },\n") 73 74 next 75} 76{ 77 if ($0 == "") 78 blanklines++ 79 if (blanklines < 2) 80 print $0 81} 82END { 83 printf("\t{ -1, -1, -1, NULL }\n") 84 printf("};\n") 85} 86