#!/bin/sh # cygmagic - Generate "magic numbers" from a structure. # # This file is part of Cygwin. # # This software is a copyrighted work licensed under the terms of the # Cygwin license. Please consult the file "CYGWIN_LICENSE" for # details. 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 sumit() { cksum $* } while [ -n "$1" ]; do define=$1; shift struct=$1; shift sum=`$gcc -D__CYGMAGIC__ -E -P $file | sed -n "/^$struct/,/^};/p" | sed -e 's/[ ]//g' -e '/^$/d' | sumit | awk '{printf "0x%xU", $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