| #!/bin/sh | 
 | # check-exports | 
 | # | 
 | # quick'n'dirty script that retrieves the list of exported symbols of a given | 
 | # library using 'nm', and compares that against the list of symbols-to-export | 
 | # of our win32/common/libfoo.def files. | 
 |  | 
 | if [ $# -ne 2 ]; then | 
 | 	echo "Usage: $0 library.def library.so" | 
 | 	exit 1 | 
 | fi | 
 |  | 
 | def_path="$1" | 
 | def_name="$(basename $def_path)" | 
 | lib_path="$2" | 
 |  | 
 | lib_result="`mktemp /tmp/defname.XXXXXX`" | 
 |  | 
 | LC_ALL=C | 
 | export LC_ALL | 
 |  | 
 | # On Solaris, add -p to get the correct output format | 
 | NMARGS= | 
 | if nm -V 2>&1 |grep Solaris > /dev/null; then | 
 |   NMARGS=-p | 
 | fi | 
 |  | 
 | # _end is special cased because for some reason it is reported as an exported | 
 | # BSS symbol, unlike on linux where it's a local absolute symbol. | 
 | nm $NMARGS $lib_path | awk \ | 
 | 	'{ | 
 | 		if ($3 ~ /^[_]?(gst_|Gst|GST_).*/) | 
 | 		{ | 
 | 			if ($2 ~ /^[BSDG]$/) | 
 | 				print "\t" $3 " DATA" | 
 | 			else if ($2 == "T") | 
 | 				print "\t" $3 | 
 | 		} | 
 | 	 }' | sort | awk '{ if (NR == 1) print "EXPORTS"; print $0; }' \ | 
 | 	> $lib_result | 
 |  | 
 | diffoutput=`diff -u $def_path $lib_result` | 
 | diffresult=$? | 
 |  | 
 | rm $lib_result | 
 |  | 
 | if test "$diffresult" -eq 0; then | 
 |   exit 0; | 
 | else | 
 |   echo -n "$diffoutput" >&2 | 
 |   echo >&2 | 
 |   exit 1; | 
 | fi | 
 |  |