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