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