#!/bin/sh file_magic=$1; shift gcc=$1; shift file=$1; shift trap "rm -f /tmp/$$.magic" 0 1 2 15 cat < $file_magic /* autogenerated - do not edit */ #include "$file" EOF while [ -n "$1" ]; do define=$1; shift struct=$1; shift sum=`$gcc -E $file | sed -n "/^$struct/,/^};/p" | sed -e 's/[ ]//g' -e '/^$/d' | sum | awk '{printf "0x%x", $1}'` echo "#define $define $sum" curr=`sed -n "s/^#[ ]*define CURR_$define[ ][ ]*\([^ ][^ ]*\)/\1/p" $file` [ "$curr" == "$sum" ] || echo "*** WARNING WARNING WARNING WARNING WARNING *** *** $file: magic number for $define changed old $curr != new $sum *** WARNING WARNING WARNING WARNING WARNING ***" 1>&2 done >> $file_magic exit 0