Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1122 - (hide 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 niro 532 #!/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 niro 815 }}' $temp | LC_COLLATE=C sort -k 1,1 | tee $temp2 | awk '{
69 niro 532 opt = ""
70     if (NF > 2) {
71     opt = substr($2, 2)
72     $2 = $3
73     }
74 niro 1122 printf "\t{ \"%s\", %s, %d },\n", $1,
75     (opt ~ /n/) ? "NULL" : $2,
76 niro 532 (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 niro 1122 sed 's/ -[a-z]*//' $temp2 | nl -v 0 | LC_COLLATE=C sort -u -k 3,3 |
88 niro 532 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[];'