1dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#!/bin/sh -
2dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#	$NetBSD: mkbuiltins,v 1.21 2004/06/06 07:03:11 christos Exp $
3dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#
4dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# Copyright (c) 1991, 1993
5dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#	The Regents of the University of California.  All rights reserved.
6dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#
7dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# This code is derived from software contributed to Berkeley by
8dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# Kenneth Almquist.
9dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#
10dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# Redistribution and use in source and binary forms, with or without
11dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# modification, are permitted provided that the following conditions
12dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# are met:
13dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# 1. Redistributions of source code must retain the above copyright
14dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#    notice, this list of conditions and the following disclaimer.
15dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# 2. Redistributions in binary form must reproduce the above copyright
16dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#    notice, this list of conditions and the following disclaimer in the
17dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#    documentation and/or other materials provided with the distribution.
18dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# 3. Neither the name of the University nor the names of its contributors
19dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#    may be used to endorse or promote products derived from this software
20dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#    without specific prior written permission.
21dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#
22dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# SUCH DAMAGE.
33dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#
34dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#	@(#)mkbuiltins	8.2 (Berkeley) 5/4/95
35dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
36dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecthavehist=1
37dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectif [ "X$1" = "X-h" ]; then
38dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	havehist=0
39dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	shift
40dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectfi
41dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
42dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectshell=$1
43dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectbuiltins=$2
44dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectobjdir=$3
45dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
46dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecthavejobs=0
47dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectif grep '^#define JOBS[	 ]*1' ${shell} > /dev/null
48dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectthen
49dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	havejobs=1
50dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectfi
51dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
52dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectexec <$builtins 3> ${objdir}/builtins.c 4> ${objdir}/builtins.h
53dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
54dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho '/*
55dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * This file was generated by the mkbuiltins program.
56dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project */
57dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
58dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include "shell.h"
59dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include "builtins.h"
60dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
61dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectconst struct builtincmd builtincmd[] = {
62dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project' >&3
63dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
64dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho '/*
65dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * This file was generated by the mkbuiltins program.
66dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project */
67dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
68dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <sys/cdefs.h>
69dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
70dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectstruct builtincmd {
71dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project      const char *name;
72dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project      int (*builtin)(int, char **);
73dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project};
74dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
75dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectextern const struct builtincmd builtincmd[];
76dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectextern const struct builtincmd splbltincmd[];
77dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
78dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project' >&4
79dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
80dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectspecials=
81dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
82dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectwhile read line
83dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectdo
84dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	set -- $line
85dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	[ -z "$1" ] && continue
86dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	case "$1" in
87dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	\#if*|\#def*|\#end*)
88dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project		echo $line >&3
89dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project		echo $line >&4
90dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project		continue
91dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project		;;
92dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	esac
93dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	l1="${line###}"
94dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	[ "$l1" != "$line" ] && continue
95dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
96dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
97dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	func=$1
98dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	shift
99dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	[ x"$1" = x'-j' ] && {
100dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project		[ $havejobs = 0 ] && continue
101dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project		shift
102dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	}
103dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	[ x"$1" = x'-h' ] && {
104dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project		[ $havehist = 0 ] && continue
105dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project		shift
106dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	}
107dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	echo 'int '"$func"'(int, char **);' >&4
108dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	while
109dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project		[ $# != 0 -a "$1" != '#' ]
110dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	do
111dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project		[ "$1" = '-s' ] && {
112dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project			specials="$specials $2 $func"
113dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project			shift 2
114dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project			continue;
115dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project		}
116dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project		[ "$1" = '-u' ] && shift
117dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project		echo '	{ "'$1'",	'"$func"' },' >&3
118dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project		shift
119dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	done
120dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectdone
121dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
122dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho '	{ 0, 0 },' >&3
123dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho '};' >&3
124dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho >&3
125dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho 'const struct builtincmd splbltincmd[] = {' >&3
126dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
127dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectset -- $specials
128dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectwhile
129dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	[ $# != 0 ]
130dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectdo
131dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	echo '	{ "'$1'",	'"$2"' },' >&3
132dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	shift 2
133dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectdone
134dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
135dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho '	{ 0, 0 },' >&3
136dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectecho "};" >&3
137