From 002e75e5f1438b14fa4e8e2125737f1d476379e1 Mon Sep 17 00:00:00 2001 From: Jakob Kaivo Date: Wed, 30 Jan 2019 21:15:45 -0500 Subject: change STRUCT and UNION to RECORD --- mk.sh | 4 ++-- mkh.sh | 31 +++++++++++++++++-------------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/mk.sh b/mk.sh index 80b5ae1d..eaa4c743 100644 --- a/mk.sh +++ b/mk.sh @@ -14,9 +14,9 @@ classify_source () { elif grep -q "^typedef.*{$" $1; then echo TYPE_LONG elif grep -q "^struct.*{" $1; then - echo STRUCT + echo RECORD elif grep -q "^union.*{" $1; then - echo UNION + echo RECORD elif grep -q "^[A-Za-z_].* ${NAME};" $1; then echo EXTERN elif grep -q 'TGFN' $1; then diff --git a/mkh.sh b/mkh.sh index a7c69e9c..7f6b71f7 100755 --- a/mkh.sh +++ b/mkh.sh @@ -6,6 +6,10 @@ version_guard () { m4in=/tmp/$(basename $HEADER).m4 grep -F -e 'STDC(' -e 'POSIX(' -e 'XOPEN(' $1 | sort > $m4in lines=$(wc -l $m4in | cut -f1 -d' ') + if [ $lines -eq 0 ]; then + return + fi + printf '#if' loop=1 while [ $loop -lt $lines ]; do @@ -50,10 +54,10 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. EOF rm -rf $HEADER.* -for i in $@; do +for i in $(echo $@ | sort -u); do # TODO: refs type=$(classify_source $i) - version=$(grep -F -e 'STDC(' -e 'POSIX(' -e 'XOPEN(' $1 | sort | tr -d '() ,') + version=v$(grep -F -e 'STDC(' -e 'POSIX(' -e 'XOPEN(' $1 | sort | tr -d '() ,') mkdir -p $HEADER.$type echo $i >> $HEADER.$type/$version done @@ -87,7 +91,7 @@ if [ -d $HEADER.MACRO ]; then printf '%s\n' "$version" fi - for i in $(sort $v); do + for i in $(sort -u $v); do grep -E '^#(if|def|undef|el|end)' $i done @@ -110,7 +114,7 @@ if [ -d $HEADER.TYPE ]; then printf '%s\n' "$version" fi - for i in $(sort $v); do + for i in $(sort -u $v); do if grep -q '^#ifdef' $i; then sed -ne '/#ifdef/,/#endif/p' $i elif grep -q '^typedef.*;$' $i; then @@ -136,7 +140,7 @@ if [ -d $HEADER.TYPE_LONG ]; then printf '%s\n' "$version" fi - for i in $(sort $v); do + for i in $(sort -u $v); do if grep -q '^#ifdef' $i; then sed -ne '/#ifdef/,/#endif/p' $i elif grep -q '^typedef.*;$' $i; then @@ -155,15 +159,14 @@ if [ -d $HEADER.TYPE_LONG ]; then rm -rf $HEADER.TYPE_LONG fi -if [ -d $HEADER.STRUCT -o -d $HEADER.UNION ]; then - mkdir -p $HEADER.STRUCT $HEADER.UNION - for v in $HEADER.STRUCT/* $HEADER.UNION/*; do +if [ -d $HEADER.RECORD ]; then + for v in $HEADER.RECORD/*; do version=$(version_guard $(head -n1 $v)) if [ -n "$version" ]; then printf '%s\n' "$version" fi - for i in $(sort $v 2>/dev/null); do + for i in $(sort -u $v 2>/dev/null); do if grep -q '^struct' $i; then sed -ne '/^struct/,/\};/p' $i else @@ -177,7 +180,7 @@ if [ -d $HEADER.STRUCT -o -d $HEADER.UNION ]; then printf '\n' done - rm -rf $HEADER.STRUCT $HEADER.UNION + rm -rf $HEADER.RECORD fi if [ -d $HEADER.EXTERN ]; then @@ -187,7 +190,7 @@ if [ -d $HEADER.EXTERN ]; then printf '%s\n' "$version" fi - for i in $(sort $v); do + for i in $(sort -u $v); do printf 'extern %s' "$(grep '^[a-zA-Z_].*;$' $i)" done @@ -207,7 +210,7 @@ if [ -d $HEADER.TGFN ]; then printf '%s\n' "$version" fi - for i in $(sort $v); do + for i in $(sort -u $v); do printf '%s;\n' "$(sed -e "/{/q" $i | tail -n2 | head -n1 | m4 '-DTGFN=$1' -DTYPE=double)" done @@ -241,7 +244,7 @@ if [ -d $HEADER.FUNCTION ]; then printf '%s\n' "$version" fi - for i in $(sort $v); do + for i in $(sort -u $v); do printf '%s;\n' "$(sed -e "/{/q" $i | tail -n2 | head -n1 | sed -e 's/\([a-zA-Z_][a-zA-Z_0-9]*\)\([,)]\)/__\1\2/g;s/(__\([a-zA-Z_][a-zA-Z_0-9]*\))/(\1)/g')" done @@ -261,7 +264,7 @@ if [ -d $HEADER.MACRO ]; then printf '%s\n' "$version" fi - for i in $(sort $v); do + for i in $(sort -u $v); do grep ' *extern.*;$' $i done -- cgit v1.2.1