Annotation of qemu/feature_to_c.sh, revision 1.1.1.2

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
1.1.1.2 ! root       20: # along with this program; if not, see <http://www.gnu.org/licenses/>.
1.1       root       21: 
                     22: output=$1
                     23: shift
                     24: 
                     25: if test -z "$output" || test -z "$1"; then
                     26:   echo "Usage: $0 OUTPUTFILE INPUTFILE..."
                     27:   exit 1
                     28: fi
                     29: 
                     30: if test -e "$output"; then
                     31:   echo "Output file \"$output\" already exists; refusing to overwrite."
                     32:   exit 1
                     33: fi
                     34: 
                     35: for input; do
                     36:   arrayname=xml_feature_`echo $input | sed 's,.*/,,; s/[-.]/_/g'`
                     37: 
                     38:   ${AWK:-awk} 'BEGIN { n = 0
                     39:       print "static const char '$arrayname'[] = {"
                     40:       for (i = 0; i < 255; i++)
                     41:         _ord_[sprintf("%c", i)] = i
                     42:     } {
                     43:       split($0, line, "");
                     44:       printf "  "
                     45:       for (i = 1; i <= length($0); i++) {
                     46:         c = line[i]
                     47:         if (c == "'\''") {
                     48:           printf "'\''\\'\'''\'', "
                     49:         } else if (c == "\\") {
                     50:           printf "'\''\\\\'\'', "
                     51:         } else if (_ord_[c] >= 32 && _ord_[c] < 127) {
                     52:          printf "'\''%s'\'', ", c
                     53:         } else {
                     54:           printf "'\''\\%03o'\'', ", _ord_[c]
                     55:         }
                     56:         if (i % 10 == 0)
                     57:           printf "\n   "
                     58:       }
                     59:       printf "'\''\\n'\'', \n"
                     60:     } END {
                     61:       print "  0 };"
                     62:     }' < $input >> $output
                     63: done
                     64: 
                     65: echo >> $output
                     66: echo "extern const char *const xml_builtin[][2];" >> $output
                     67: echo "const char *const xml_builtin[][2] = {" >> $output
                     68: 
                     69: for input; do
                     70:   basename=`echo $input | sed 's,.*/,,'`
                     71:   arrayname=xml_feature_`echo $input | sed 's,.*/,,; s/[-.]/_/g'`
                     72:   echo "  { \"$basename\", $arrayname }," >> $output
                     73: done
                     74: 
1.1.1.2 ! root       75: echo "  { (char *)0, (char *)0 }" >> $output
1.1       root       76: echo "};" >> $output

unix.superglobalmegacorp.com