Annotation of qemu/feature_to_c.sh, revision 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