| #!/bin/sh - | |
| # $NetBSD: mkbuiltins,v 1.21 2004/06/06 07:03:11 christos Exp $ | |
| # | |
| # Copyright (c) 1991, 1993 | |
| # The Regents of the University of California. All rights reserved. | |
| # | |
| # This code is derived from software contributed to Berkeley by | |
| # Kenneth Almquist. | |
| # | |
| # Redistribution and use in source and binary forms, with or without | |
| # modification, are permitted provided that the following conditions | |
| # are met: | |
| # 1. Redistributions of source code must retain the above copyright | |
| # notice, this list of conditions and the following disclaimer. | |
| # 2. Redistributions in binary form must reproduce the above copyright | |
| # notice, this list of conditions and the following disclaimer in the | |
| # documentation and/or other materials provided with the distribution. | |
| # 3. Neither the name of the University nor the names of its contributors | |
| # may be used to endorse or promote products derived from this software | |
| # without specific prior written permission. | |
| # | |
| # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND | |
| # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
| # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
| # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | |
| # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
| # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
| # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
| # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
| # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
| # SUCH DAMAGE. | |
| # | |
| # @(#)mkbuiltins 8.2 (Berkeley) 5/4/95 | |
| havehist=1 | |
| if [ "X$1" = "X-h" ]; then | |
| havehist=0 | |
| shift | |
| fi | |
| shell=$1 | |
| builtins=$2 | |
| objdir=$3 | |
| havejobs=0 | |
| if grep '^#define JOBS[ ]*1' ${shell} > /dev/null | |
| then | |
| havejobs=1 | |
| fi | |
| exec <$builtins 3> ${objdir}/builtins.c 4> ${objdir}/builtins.h | |
| echo '/* | |
| * This file was generated by the mkbuiltins program. | |
| */ | |
| #include "shell.h" | |
| #include "builtins.h" | |
| const struct builtincmd builtincmd[] = { | |
| ' >&3 | |
| echo '/* | |
| * This file was generated by the mkbuiltins program. | |
| */ | |
| #include <sys/cdefs.h> | |
| struct builtincmd { | |
| const char *name; | |
| int (*builtin)(int, char **); | |
| }; | |
| extern const struct builtincmd builtincmd[]; | |
| extern const struct builtincmd splbltincmd[]; | |
| ' >&4 | |
| specials= | |
| while read line | |
| do | |
| set -- $line | |
| [ -z "$1" ] && continue | |
| case "$1" in | |
| \#if*|\#def*|\#end*) | |
| echo $line >&3 | |
| echo $line >&4 | |
| continue | |
| ;; | |
| esac | |
| l1="${line###}" | |
| [ "$l1" != "$line" ] && continue | |
| func=$1 | |
| shift | |
| [ x"$1" = x'-j' ] && { | |
| [ $havejobs = 0 ] && continue | |
| shift | |
| } | |
| [ x"$1" = x'-h' ] && { | |
| [ $havehist = 0 ] && continue | |
| shift | |
| } | |
| echo 'int '"$func"'(int, char **);' >&4 | |
| while | |
| [ $# != 0 -a "$1" != '#' ] | |
| do | |
| [ "$1" = '-s' ] && { | |
| specials="$specials $2 $func" | |
| shift 2 | |
| continue; | |
| } | |
| [ "$1" = '-u' ] && shift | |
| echo ' { "'$1'", '"$func"' },' >&3 | |
| shift | |
| done | |
| done | |
| echo ' { 0, 0 },' >&3 | |
| echo '};' >&3 | |
| echo >&3 | |
| echo 'const struct builtincmd splbltincmd[] = {' >&3 | |
| set -- $specials | |
| while | |
| [ $# != 0 ] | |
| do | |
| echo ' { "'$1'", '"$2"' },' >&3 | |
| shift 2 | |
| done | |
| echo ' { 0, 0 },' >&3 | |
| echo "};" >&3 |