#! /bin/sh if [ $# -eq 0 ]; then # With no args, read stdin to scrape compiler output. set -- $(while read LINE; do case "$LINE" in *undefined\ reference\ to*) LINE=${LINE#*undefined reference to \`} echo ${LINE%\'*} ;; *) continue ;; esac; done | sort -u) fi for SYMBOL; do WHERE=$(grep -nH "^[a-z0-9_ ]* [*]*$SYMBOL(" daemon/*.h) if [ x"$WHERE" != x ]; then STUB='\n{ fprintf(stderr, "'$SYMBOL' called!\\n"); abort(); }' else WHERE=$(grep -nH "^extern \(const \)\?struct [a-zA-Z0-9_]* $SYMBOL;$" daemon/*.h) if [ x"$WHERE" != x ]; then STUB=';' else echo "/* Could not find declaration for $SYMBOL */" continue fi fi echo "/* Generated stub for $SYMBOL */" FILE=${WHERE%%:*} FILE_AND_LINE=${WHERE%:*} LINE=${FILE_AND_LINE#*:} END=$(tail -n +$LINE < $FILE | grep -n ';$'); NUM=${END%%:*} tail -n +$LINE < $FILE | head -n $NUM | sed 's/^extern *//' | sed 's/PRINTF_FMT([^)]*)//' | sed 's/,/ UNNEEDED,/g' | sed 's/\([a-z0-9A-Z*_]* [a-z0-9A-Z*_]*\));/\1 UNNEEDED);/' | sed "s/;\$/$STUB/" | sed 's/\s*$//' done