]> git.saurik.com Git - apple/shell_cmds.git/blobdiff - sh/mkbuiltins
shell_cmds-198.tar.gz
[apple/shell_cmds.git] / sh / mkbuiltins
diff --git a/sh/mkbuiltins b/sh/mkbuiltins
new file mode 100755 (executable)
index 0000000..1be7ff1
--- /dev/null
@@ -0,0 +1,98 @@
+#!/bin/sh -
+
+#-
+# 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.
+# 4. 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
+# $FreeBSD$
+
+temp=`/usr/bin/mktemp -t ka`
+havehist=1
+if [ "X$1" = "X-h" ]; then
+       havehist=0
+       shift
+fi
+srcdir=$1
+havejobs=0
+if grep '^#define[      ]*JOBS[         ]*1' $srcdir/shell.h > /dev/null
+then   havejobs=1
+fi
+exec > builtins.c
+cat <<\!
+/*
+ * This file was generated by the mkbuiltins program.
+ */
+
+#include <stdlib.h>
+#include "shell.h"
+#include "builtins.h"
+
+!
+awk '/^[^#]/ {if(('$havejobs' || $2 != "-j") && ('$havehist' || $2 != "-h")) \
+    print $0}' $srcdir/builtins.def | sed 's/-[hj]//' > $temp
+echo 'int (*const builtinfunc[])(int, char **) = {'
+awk '/^[^#]/ { printf "\t%s,\n", $1}' $temp
+echo '};
+
+const struct builtincmd builtincmd[] = {'
+awk '{ for (i = 2 ; i <= NF ; i++) {
+               if ($i == "-s") {
+                       spc = 1;
+               } else {
+                       printf "\t{ \"%s\", %d, %d },\n",  $i, NR-1, spc
+                       spc = 0;
+               }
+       }}' $temp
+echo ' { NULL, 0, 0 }
+};'
+
+exec > builtins.h
+cat <<\!
+/*
+ * This file was generated by the mkbuiltins program.
+ */
+
+#include <sys/cdefs.h>
+!
+tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ < $temp |
+       awk '{  printf "#define %s %d\n", $1, NR-1}'
+echo '
+struct builtincmd {
+      const char *name;
+      int code;
+      int special;
+};
+
+extern int (*const builtinfunc[])(int, char **);
+extern const struct builtincmd builtincmd[];
+'
+awk '{ printf "int %s(int, char **);\n", $1}' $temp
+rm -f $temp