feature_to_c.sh (1960B)
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, see <http://www.gnu.org/licenses/>. 21 22 if test -z "$1"; then 23 echo "Usage: $0 INPUTFILE..." 24 exit 1 25 fi 26 27 for input; do 28 arrayname=xml_feature_$(echo $input | sed 's,.*/,,; s/[-.]/_/g') 29 30 ${AWK:-awk} 'BEGIN { n = 0 31 printf "#include \"qemu/osdep.h\"\n" 32 print "static const char '$arrayname'[] = {" 33 for (i = 0; i < 255; i++) 34 _ord_[sprintf("%c", i)] = i 35 } { 36 split($0, line, ""); 37 printf " " 38 for (i = 1; i <= length($0); i++) { 39 c = line[i] 40 if (c == "'\''") { 41 printf "'\''\\'\'''\'', " 42 } else if (c == "\\") { 43 printf "'\''\\\\'\'', " 44 } else if (_ord_[c] >= 32 && _ord_[c] < 127) { 45 printf "'\''%s'\'', ", c 46 } else { 47 printf "'\''\\%03o'\'', ", _ord_[c] 48 } 49 if (i % 10 == 0) 50 printf "\n " 51 } 52 printf "'\''\\n'\'', \n" 53 } END { 54 print " 0 };" 55 }' < $input 56 done 57 58 echo 59 echo '#include "exec/gdbstub.h"' 60 echo "const char *const xml_builtin[][2] = {" 61 62 for input; do 63 basename=$(echo $input | sed 's,.*/,,') 64 arrayname=xml_feature_$(echo $input | sed 's,.*/,,; s/[-.]/_/g') 65 echo " { \"$basename\", $arrayname }," 66 done 67 68 echo " { (char *)0, (char *)0 }" 69 echo "};"