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