Magellan Linux

Contents of /trunk/mkinitrd-magellan/klibc/usr/dash/mkbuiltins

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1122 - (show annotations) (download)
Wed Aug 18 21:11:40 2010 UTC (13 years, 8 months ago) by niro
File size: 3264 byte(s)
-updated to klibc-1.5.19
1 #!/bin/sh -
2 # $NetBSD: mkbuiltins,v 1.17 2002/11/24 22:35:41 christos Exp $
3 #
4 # Copyright (c) 1991, 1993
5 # The Regents of the University of California. All rights reserved.
6 # Copyright (c) 1997-2005
7 # Herbert Xu <herbert@gondor.apana.org.au>. All rights reserved.
8 #
9 # This code is derived from software contributed to Berkeley by
10 # Kenneth Almquist.
11 #
12 # Redistribution and use in source and binary forms, with or without
13 # modification, are permitted provided that the following conditions
14 # are met:
15 # 1. Redistributions of source code must retain the above copyright
16 # notice, this list of conditions and the following disclaimer.
17 # 2. Redistributions in binary form must reproduce the above copyright
18 # notice, this list of conditions and the following disclaimer in the
19 # documentation and/or other materials provided with the distribution.
20 # 3. Neither the name of the University nor the names of its contributors
21 # may be used to endorse or promote products derived from this software
22 # without specific prior written permission.
23 #
24 # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 # SUCH DAMAGE.
35 #
36 # @(#)mkbuiltins 8.2 (Berkeley) 5/4/95
37
38 tempfile=tempfile
39 if ! type tempfile > /dev/null 2>&1; then
40 tempfile="mktemp ${TMPDIR:-/tmp}/builtin.XXXXXX"
41 fi
42
43 trap 'rm -f $temp $temp2' EXIT
44 temp=$($tempfile)
45 temp2=$($tempfile)
46
47 builtins=$1
48
49 exec > builtins.c
50 cat <<\!
51 /*
52 * This file was generated by the mkbuiltins program.
53 */
54
55 #include "shell.h"
56 #include "builtins.h"
57
58 !
59 < $builtins sed '/^#/d; /^$/d' > $temp
60 awk '{ printf "int %s(int, char **);\n", $1}' $temp
61 echo '
62 const struct builtincmd builtincmd[] = {'
63 awk '{ for (i = 2 ; i <= NF ; i++) {
64 line = $i "\t" $1
65 if ($i ~ /^-/)
66 line = $(++i) "\t" line
67 print line
68 }}' $temp | LC_COLLATE=C sort -k 1,1 | tee $temp2 | awk '{
69 opt = ""
70 if (NF > 2) {
71 opt = substr($2, 2)
72 $2 = $3
73 }
74 printf "\t{ \"%s\", %s, %d },\n", $1,
75 (opt ~ /n/) ? "NULL" : $2,
76 (opt ~ /s/) + (opt ~ /[su]/) * 2 + (opt ~ /a/) * 4
77 }'
78 echo '};'
79
80 exec > builtins.h
81 cat <<\!
82 /*
83 * This file was generated by the mkbuiltins program.
84 */
85
86 !
87 sed 's/ -[a-z]*//' $temp2 | nl -v 0 | LC_COLLATE=C sort -u -k 3,3 |
88 tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ |
89 awk '{ printf "#define %s (builtincmd + %d)\n", $3, $1}'
90 printf '\n#define NUMBUILTINS %d\n' $(wc -l < $temp2)
91 echo '
92 #define BUILTIN_SPECIAL 0x1
93 #define BUILTIN_REGULAR 0x2
94 #define BUILTIN_ASSIGN 0x4
95
96 struct builtincmd {
97 const char *name;
98 int (*builtin)(int, char **);
99 unsigned flags;
100 };
101
102 extern const struct builtincmd builtincmd[];'