Annotation of qemu/feature_to_c.sh, revision 1.1.1.1

1.1       root        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