xref: /netbsd-src/sys/sys/gennameih.awk (revision 09afef20633f5fe63d92dfe43ee3a9380dc06883)
1#!/usr/bin/awk -F
2#
3#	$NetBSD: gennameih.awk,v 1.4 2008/12/03 10:54:27 ad 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 "/*\t$NetBSD: gennameih.awk,v 1.4 2008/12/03 10:54:27 ad Exp $\t*/\n\n" > outfile
39
40	print  "/*" > outfile
41	print  " * WARNING: GENERATED FILE.  DO NOT EDIT" > outfile
42	print  " * (edit namei.src and run make namei in src/sys/sys)" > outfile
43	printf " *   by:   %s\n", getrcsid(myvers) > outfile
44	printf " *   from: %s\n", getrcsid(fileheader) > outfile
45	print  " */" > outfile
46}
47
48BEGIN {
49	myvers="$NetBSD: gennameih.awk,v 1.4 2008/12/03 10:54:27 ad Exp $"
50	namei="namei.h"
51	rumpnamei = "../rump/include/rump/rump_namei.h"
52}
53
54NR == 1 {
55	fileheader=$0
56	printheader(namei)
57	next
58}
59
60/^NAMEIFL/ {
61	sub("NAMEIFL", "#define", $0);
62	print $0 > namei
63
64	sub("^", "NAMEI_", $2)
65	nameifl[i++] = $2 "\t" $3;
66	next
67}
68
69{
70	print $0 > namei
71}
72
73END {
74	printf "\n/* Definitions match above, but with NAMEI_ prefix */\n">namei
75
76	# print flags in the same order
77	for (j = 0; j < i; j++) {
78		print "#define " nameifl[j] > namei
79	}
80
81	printf "\n#endif /* !_SYS_NAMEI_H_ */\n" > namei
82
83	# Now, create rump_namei.h
84	printheader(rumpnamei)
85	printf("\n#ifndef _RUMP_RUMP_NAMEI_H_\n") > rumpnamei
86	printf("#define _RUMP_RUMP_NAMEI_H_\n\n") > rumpnamei
87
88	# print flags in the same order
89	for (j = 0; j < i; j++) {
90		print "#define RUMP_" nameifl[j] > rumpnamei
91	}
92
93	printf("\n#endif /* _RUMP_RUMP_NAMEI_H_ */\n") > rumpnamei
94}
95