diff options
Diffstat (limited to 'gdb/features/feature_to_c.sh')
-rw-r--r-- | gdb/features/feature_to_c.sh | 78 |
1 files changed, 48 insertions, 30 deletions
diff --git a/gdb/features/feature_to_c.sh b/gdb/features/feature_to_c.sh index 0617b05dd50..764297725ee 100644 --- a/gdb/features/feature_to_c.sh +++ b/gdb/features/feature_to_c.sh @@ -1,37 +1,55 @@ #!/bin/sh -input=$1 -output=$2 +output=$1 +shift -if test -z "$input" || test -z "$output"; then - echo "Usage: $0 INPUTFILE OUTPUTFILE" +if test -z "$output" || test -z "$1"; then + echo "Usage: $0 OUTPUTFILE INPUTFILE..." exit 1 fi -arrayname=xml_feature_`echo $input | sed 's,.*/,,; s/[-.]/_/g'` +for input in dummy "$@"; do + if test $input != dummy; then + arrayname=xml_feature_`echo $input | sed 's,.*/,,; s/[-.]/_/g'` -gawk 'BEGIN { n = 0 - print "static const char '$arrayname'[] = {" - for (i = 0; i < 255; i++) - _ord_[sprintf("%c", i)] = i -} { - split($0, line, ""); - printf " " - for (i = 1; i <= length(line); i++) { - c = line[i] - if (c == "'\''") { - printf "'\''\\'\'''\'', " - } else if (c == "\\") { - printf "'\''\\\\'\'', " - } else if (match (c, "[[:print:]]") != 0) { - printf "'\''" c "'\'', " - } else { - printf "'\''\\%03o'\'', ", _ord_[c] - } - if (i % 10 == 0) - printf "\n " - } - printf "'\''\\n'\'', \n" -} END { - print " 0 };" -}' < $input > $output + gawk 'BEGIN { n = 0 + print "static const char '$arrayname'[] = {" + for (i = 0; i < 255; i++) + _ord_[sprintf("%c", i)] = i + } { + split($0, line, ""); + printf " " + for (i = 1; i <= length(line); i++) { + c = line[i] + if (c == "'\''") { + printf "'\''\\'\'''\'', " + } else if (c == "\\") { + printf "'\''\\\\'\'', " + } else if (match (c, "[[:print:]]") != 0) { + printf "'\''" c "'\'', " + } else { + printf "'\''\\%03o'\'', ", _ord_[c] + } + if (i % 10 == 0) + printf "\n " + } + printf "'\''\\n'\'', \n" + } END { + print " 0 };" + }' < $input >> $output + fi +done + +echo >> $output +echo "const char *const xml_builtin[][2] = {" >> $output + +for input in dummy "$@"; do + if test $input != dummy; then + basename=`echo $input | sed 's,.*/,,'` + arrayname=xml_feature_`echo $input | sed 's,.*/,,; s/[-.]/_/g'` + echo " { \"$basename\", $arrayname }," >> $output + fi +done + +echo " { 0, 0 }" >> $output +echo "};" >> $output |