Home | History | Annotate | Download | only in qemu
      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
     79