mkbuiltins revision 157413
1214501Srpaulo#!/bin/sh - 2214501Srpaulo 3214501Srpaulo#- 4214501Srpaulo# Copyright (c) 1991, 1993 5252726Srpaulo# The Regents of the University of California. All rights reserved. 6252726Srpaulo# 7214501Srpaulo# This code is derived from software contributed to Berkeley by 8214501Srpaulo# Kenneth Almquist. 9214501Srpaulo# 10214501Srpaulo# Redistribution and use in source and binary forms, with or without 11214501Srpaulo# modification, are permitted provided that the following conditions 12214501Srpaulo# are met: 13214501Srpaulo# 1. Redistributions of source code must retain the above copyright 14214501Srpaulo# notice, this list of conditions and the following disclaimer. 15214501Srpaulo# 2. Redistributions in binary form must reproduce the above copyright 16214501Srpaulo# notice, this list of conditions and the following disclaimer in the 17214501Srpaulo# documentation and/or other materials provided with the distribution. 18214501Srpaulo# 4. Neither the name of the University nor the names of its contributors 19214501Srpaulo# may be used to endorse or promote products derived from this software 20214501Srpaulo# without specific prior written permission. 21214501Srpaulo# 22214501Srpaulo# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 23214501Srpaulo# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24214501Srpaulo# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25214501Srpaulo# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 26214501Srpaulo# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27214501Srpaulo# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28214501Srpaulo# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29214501Srpaulo# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30214501Srpaulo# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31214501Srpaulo# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32214501Srpaulo# SUCH DAMAGE. 33214501Srpaulo# 34214501Srpaulo# @(#)mkbuiltins 8.2 (Berkeley) 5/4/95 35214501Srpaulo# $FreeBSD: head/bin/sh/mkbuiltins 157413 2006-04-02 18:43:33Z stefanf $ 36214501Srpaulo 37214501Srpaulotemp=`/usr/bin/mktemp -t ka` 38214501Srpaulohavejobs=0 39214501Srpauloif grep '^#define[ ]*JOBS[ ]*1' shell.h > /dev/null 40214501Srpaulothen havejobs=1 41214501Srpaulofi 42214501Srpaulohavehist=1 43214501Srpauloif [ "X$1" = "X-h" ]; then 44214501Srpaulo havehist=0 45214501Srpaulo shift 46214501Srpaulofi 47214501Srpauloobjdir=$1 48214501Srpauloexec > ${objdir}/builtins.c 49214501Srpaulocat <<\! 50214501Srpaulo/* 51214501Srpaulo * This file was generated by the mkbuiltins program. 52214501Srpaulo */ 53214501Srpaulo 54214501Srpaulo#include <stdlib.h> 55214501Srpaulo#include "shell.h" 56214501Srpaulo#include "builtins.h" 57214501Srpaulo 58214501Srpaulo! 59214501Srpauloawk '/^[^#]/ {if(('$havejobs' || $2 != "-j") && ('$havehist' || $2 != "-h")) \ 60214501Srpaulo print $0}' builtins.def | sed 's/-[hj]//' > $temp 61214501Srpauloawk '{ printf "int %s(int, char **);\n", $1}' $temp 62214501Srpauloecho ' 63214501Srpauloint (*const builtinfunc[])(int, char **) = {' 64214501Srpauloawk '/^[^#]/ { printf "\t%s,\n", $1}' $temp 65214501Srpauloecho '}; 66214501Srpaulo 67214501Srpauloconst struct builtincmd builtincmd[] = {' 68214501Srpauloawk '{ for (i = 2 ; i <= NF ; i++) { 69214501Srpaulo if ($i == "-s") { 70214501Srpaulo spc = 1; 71214501Srpaulo } else { 72214501Srpaulo printf "\t{ \"%s\", %d, %d },\n", $i, NR-1, spc 73214501Srpaulo spc = 0; 74214501Srpaulo } 75214501Srpaulo }}' $temp 76214501Srpauloecho ' { NULL, 0, 0 } 77214501Srpaulo};' 78214501Srpaulo 79214501Srpauloexec > ${objdir}/builtins.h 80214501Srpaulocat <<\! 81214501Srpaulo/* 82214501Srpaulo * This file was generated by the mkbuiltins program. 83214501Srpaulo */ 84214501Srpaulo 85214501Srpaulo#include <sys/cdefs.h> 86214501Srpaulo! 87214501Srpaulotr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ < $temp | 88214501Srpaulo awk '{ printf "#define %s %d\n", $1, NR-1}' 89214501Srpauloecho ' 90214501Srpaulostruct builtincmd { 91214501Srpaulo char *name; 92214501Srpaulo int code; 93214501Srpaulo int special; 94214501Srpaulo}; 95214501Srpaulo 96214501Srpauloextern int (*const builtinfunc[])(int, char **); 97214501Srpauloextern const struct builtincmd builtincmd[];' 98214501Srpaulorm -f $temp 99214501Srpaulo