15d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#!/bin/sh 25d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 35d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# Convert text files to compilable C arrays. 45d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# 55d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# Copyright (C) 2007 Free Software Foundation, Inc. 65d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# 75d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# This file is part of GDB. 85d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# 95d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# This program is free software; you can redistribute it and/or modify 105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# it under the terms of the GNU General Public License as published by 115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# the Free Software Foundation; either version 2 of the License, or 125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# (at your option) any later version. 135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# 145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# This program is distributed in the hope that it will be useful, 155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# but WITHOUT ANY WARRANTY; without even the implied warranty of 165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# GNU General Public License for more details. 185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# 195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# You should have received a copy of the GNU General Public License 202910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner# along with this program; if not, see <http://www.gnu.org/licenses/>. 215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turneroutput=$1 235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnershift 245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerif test -z "$output" || test -z "$1"; then 265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner echo "Usage: $0 OUTPUTFILE INPUTFILE..." 275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner exit 1 285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerfi 295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerif test -e "$output"; then 315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner echo "Output file \"$output\" already exists; refusing to overwrite." 325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner exit 1 335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerfi 345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerfor input; do 365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner arrayname=xml_feature_`echo $input | sed 's,.*/,,; s/[-.]/_/g'` 375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner ${AWK:-awk} 'BEGIN { n = 0 395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner print "static const char '$arrayname'[] = {" 405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner for (i = 0; i < 255; i++) 415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner _ord_[sprintf("%c", i)] = i 425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner } { 435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner split($0, line, ""); 445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner printf " " 455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner for (i = 1; i <= length($0); i++) { 465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner c = line[i] 475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner if (c == "'\''") { 485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner printf "'\''\\'\'''\'', " 495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner } else if (c == "\\") { 505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner printf "'\''\\\\'\'', " 515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner } else if (_ord_[c] >= 32 && _ord_[c] < 127) { 525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner printf "'\''%s'\'', ", c 535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner } else { 545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner printf "'\''\\%03o'\'', ", _ord_[c] 555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner } 565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner if (i % 10 == 0) 575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner printf "\n " 585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner } 595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner printf "'\''\\n'\'', \n" 605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner } END { 615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner print " 0 };" 625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner }' < $input >> $output 635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerdone 645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerecho >> $output 665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerecho "extern const char *const xml_builtin[][2];" >> $output 675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerecho "const char *const xml_builtin[][2] = {" >> $output 685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerfor input; do 705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner basename=`echo $input | sed 's,.*/,,'` 715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner arrayname=xml_feature_`echo $input | sed 's,.*/,,; s/[-.]/_/g'` 725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner echo " { \"$basename\", $arrayname }," >> $output 735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerdone 745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 752910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turnerecho " { (char *)0, (char *)0 }" >> $output 765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerecho "};" >> $output 77