File:  [Qemu by Fabrice Bellard] / qemu / feature_to_c.sh
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 16:50:15 2018 UTC (3 years, 1 month ago) by root
Branches: qemu, MAIN
CVS tags: qemu0105, qemu0104, qemu0103, qemu0102, qemu0101, qemu0100, HEAD
qemu 0.10.0

    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

unix.superglobalmegacorp.com