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