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