|
1 #!/bin/sh |
|
2 |
|
3 # Convert text files to compilable C arrays. |
|
4 # |
|
5 # Copyright (C) 2007 Free Software Foundation, Inc. |
|
6 # |
|
7 # This file is part of GDB. |
|
8 # |
|
9 # This program is free software; you can redistribute it and/or modify |
|
10 # it under the terms of the GNU General Public License as published by |
|
11 # the Free Software Foundation; either version 2 of the License, or |
|
12 # (at your option) any later version. |
|
13 # |
|
14 # This program is distributed in the hope that it will be useful, |
|
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
17 # GNU General Public License for more details. |
|
18 # |
|
19 # You should have received a copy of the GNU General Public License |
|
20 # along with this program; if not, write to the Free Software |
|
21 # Foundation, Inc., 51 Franklin Street, Fifth Floor, |
|
22 # Boston, MA 02110-1301, USA. |
|
23 |
|
24 output=$1 |
|
25 shift |
|
26 |
|
27 if test -z "$output" || test -z "$1"; then |
|
28 echo "Usage: $0 OUTPUTFILE INPUTFILE..." |
|
29 exit 1 |
|
30 fi |
|
31 |
|
32 if test -e "$output"; then |
|
33 echo "Output file \"$output\" already exists; refusing to overwrite." |
|
34 exit 1 |
|
35 fi |
|
36 |
|
37 for input; do |
|
38 arrayname=xml_feature_`echo $input | sed 's,.*/,,; s/[-.]/_/g'` |
|
39 |
|
40 ${AWK:-awk} 'BEGIN { n = 0 |
|
41 print "static const char '$arrayname'[] = {" |
|
42 for (i = 0; i < 255; i++) |
|
43 _ord_[sprintf("%c", i)] = i |
|
44 } { |
|
45 split($0, line, ""); |
|
46 printf " " |
|
47 for (i = 1; i <= length($0); i++) { |
|
48 c = line[i] |
|
49 if (c == "'\''") { |
|
50 printf "'\''\\'\'''\'', " |
|
51 } else if (c == "\\") { |
|
52 printf "'\''\\\\'\'', " |
|
53 } else if (_ord_[c] >= 32 && _ord_[c] < 127) { |
|
54 printf "'\''%s'\'', ", c |
|
55 } else { |
|
56 printf "'\''\\%03o'\'', ", _ord_[c] |
|
57 } |
|
58 if (i % 10 == 0) |
|
59 printf "\n " |
|
60 } |
|
61 printf "'\''\\n'\'', \n" |
|
62 } END { |
|
63 print " 0 };" |
|
64 }' < $input >> $output |
|
65 done |
|
66 |
|
67 echo >> $output |
|
68 echo "extern const char *const xml_builtin[][2];" >> $output |
|
69 echo "const char *const xml_builtin[][2] = {" >> $output |
|
70 |
|
71 for input; do |
|
72 basename=`echo $input | sed 's,.*/,,'` |
|
73 arrayname=xml_feature_`echo $input | sed 's,.*/,,; s/[-.]/_/g'` |
|
74 echo " { \"$basename\", $arrayname }," >> $output |
|
75 done |
|
76 |
|
77 echo " { 0, 0 }" >> $output |
|
78 echo "};" >> $output |