xref: /netbsd-src/sys/sys/gennameih.awk (revision 26bd716185fdc90049ed40edd786f5b5e74732e7)
1#!/usr/bin/awk -F
2#
3#	$NetBSD: gennameih.awk,v 1.5 2009/12/23 14:17:19 pooka Exp $
4#
5# Copyright (c) 2007 The NetBSD Foundation, Inc.
6# All rights reserved.
7#
8# Redistribution and use in source and binary forms, with or without
9# modification, are permitted provided that the following conditions
10# are met:
11# 1. Redistributions of source code must retain the above copyright
12#    notice, this list of conditions and the following disclaimer.
13# 2. Redistributions in binary form must reproduce the above copyright
14#    notice, this list of conditions and the following disclaimer in the
15#    documentation and/or other materials provided with the distribution.
16#
17# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
18# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
21# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27# POSSIBILITY OF SUCH DAMAGE.
28#
29
30function getrcsid(idstr) {
31	sub("^[^$]*\\$", "", idstr);
32	sub("\\$.*", "", idstr);
33
34	return idstr;
35}
36
37function printheader(outfile) {
38	print "Generating", outfile
39
40	print "/*\t$NetBSD: gennameih.awk,v 1.5 2009/12/23 14:17:19 pooka Exp $\t*/\n\n" > outfile
41
42	print  "/*" > outfile
43	print  " * WARNING: GENERATED FILE.  DO NOT EDIT" > outfile
44	print  " * (edit namei.src and run make namei in src/sys/sys)" > outfile
45	printf " *   by:   %s\n", getrcsid(myvers) > outfile
46	printf " *   from: %s\n", getrcsid(fileheader) > outfile
47	print  " */" > outfile
48}
49
50BEGIN {
51	myvers="$NetBSD: gennameih.awk,v 1.5 2009/12/23 14:17:19 pooka Exp $"
52	namei="namei.h"
53	rumpnamei = "../rump/include/rump/rump_namei.h"
54}
55
56NR == 1 {
57	fileheader=$0
58	printheader(namei)
59	next
60}
61
62/^NAMEIFL/ {
63	sub("NAMEIFL", "#define", $0);
64	print $0 > namei
65
66	sub("^", "NAMEI_", $2)
67	nameifl[i++] = $2 "\t" $3;
68	next
69}
70
71{
72	print $0 > namei
73}
74
75END {
76	printf "\n/* Definitions match above, but with NAMEI_ prefix */\n">namei
77
78	# print flags in the same order
79	for (j = 0; j < i; j++) {
80		print "#define " nameifl[j] > namei
81	}
82
83	printf "\n#endif /* !_SYS_NAMEI_H_ */\n" > namei
84
85	# Now, create rump_namei.h
86	printheader(rumpnamei)
87	printf("\n#ifndef _RUMP_RUMP_NAMEI_H_\n") > rumpnamei
88	printf("#define _RUMP_RUMP_NAMEI_H_\n\n") > rumpnamei
89
90	# print flags in the same order
91	for (j = 0; j < i; j++) {
92		print "#define RUMP_" nameifl[j] > rumpnamei
93	}
94
95	printf("\n#endif /* _RUMP_RUMP_NAMEI_H_ */\n") > rumpnamei
96}
97