~ubuntu-branches/ubuntu/hardy/klibc/hardy-updates

« back to all changes in this revision

Viewing changes to dash/mktokens

  • Committer: Bazaar Package Importer
  • Author(s): Jeff Bailey
  • Date: 2006-01-04 20:24:52 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20060104202452-ec4v3n829rymukuv
Tags: 1.1.15-0ubuntu1
* New upstream version.

* Patch to fix compilation on parisc64 kernels.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/sh -
 
2
# Copyright (c) 1991, 1993
 
3
#       The Regents of the University of California.  All rights reserved.
 
4
# Copyright (c) 1997-2005
 
5
#       Herbert Xu <herbert@gondor.apana.org.au>.  All rights reserved.
 
6
#
 
7
# This code is derived from software contributed to Berkeley by
 
8
# Kenneth Almquist.
 
9
#
 
10
# Redistribution and use in source and binary forms, with or without
 
11
# modification, are permitted provided that the following conditions
 
12
# are met:
 
13
# 1. Redistributions of source code must retain the above copyright
 
14
#    notice, this list of conditions and the following disclaimer.
 
15
# 2. Redistributions in binary form must reproduce the above copyright
 
16
#    notice, this list of conditions and the following disclaimer in the
 
17
#    documentation and/or other materials provided with the distribution.
 
18
# 3. Neither the name of the University nor the names of its contributors
 
19
#    may be used to endorse or promote products derived from this software
 
20
#    without specific prior written permission.
 
21
#
 
22
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 
23
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 
24
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 
25
# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 
26
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 
27
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 
28
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 
29
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 
30
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 
31
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 
32
# SUCH DAMAGE.
 
33
#
 
34
#       @(#)mktokens    8.1 (Berkeley) 5/31/93
 
35
 
 
36
# The following is a list of tokens.  The second column is nonzero if the
 
37
# token marks the end of a list.  The third column is the name to print in
 
38
# error messages.
 
39
 
 
40
cat > /tmp/ka$$ <<\!
 
41
TEOF    1       end of file
 
42
TNL     0       newline
 
43
TSEMI   0       ";"
 
44
TBACKGND 0      "&"
 
45
TAND    0       "&&"
 
46
TOR     0       "||"
 
47
TPIPE   0       "|"
 
48
TLP     0       "("
 
49
TRP     1       ")"
 
50
TENDCASE 1      ";;"
 
51
TENDBQUOTE 1    "`"
 
52
TREDIR  0       redirection
 
53
TWORD   0       word
 
54
TNOT    0       "!"
 
55
TCASE   0       "case"
 
56
TDO     1       "do"
 
57
TDONE   1       "done"
 
58
TELIF   1       "elif"
 
59
TELSE   1       "else"
 
60
TESAC   1       "esac"
 
61
TFI     1       "fi"
 
62
TFOR    0       "for"
 
63
TIF     0       "if"
 
64
TIN     0       "in"
 
65
TTHEN   1       "then"
 
66
TUNTIL  0       "until"
 
67
TWHILE  0       "while"
 
68
TBEGIN  0       "{"
 
69
TEND    1       "}"
 
70
!
 
71
nl=`wc -l /tmp/ka$$`
 
72
exec > token.h
 
73
awk '{print "#define " $1 " " NR-1}' /tmp/ka$$
 
74
echo '
 
75
/* Array indicating which tokens mark the end of a list */
 
76
const char tokendlist[] = {'
 
77
awk '{print "\t" $2 ","}' /tmp/ka$$
 
78
echo '};
 
79
 
 
80
const char *const tokname[] = {'
 
81
sed -e 's/"/\\"/g' \
 
82
    -e 's/[^     ]*[     ][      ]*[^    ]*[     ][      ]*\(.*\)/      "\1",/' \
 
83
    /tmp/ka$$
 
84
echo '};
 
85
'
 
86
sed 's/"//g' /tmp/ka$$ | awk '
 
87
/TNOT/{print "#define KWDOFFSET " NR-1; print ""; 
 
88
      print "STATIC const char *const parsekwd[] = {"}
 
89
/TNOT/,/neverfound/{if (last) print "   \"" last "\","; last = $3}
 
90
END{print "     \"" last "\"\n};"}'
 
91
 
 
92
rm /tmp/ka$$