Authors: Chris Morgan <cmorgan@wpi.edu>, James Abbatiello <abbeyj@wpi.edu>
[wine.git] / tools / winapi-check
blob346d3e223610b151b873a43a2b0929375bebb709
1 #!/bin/sh
2 # This quick and dirty script prints the names of functions that don't have a
3 # WINAPI in its header declaration or don't appear in any .c file at all.
4 # I don't think it's very intelligent to use it when having < 64 MB ;)
5 # FIXME: This script skips .spec function entries that occupy two or more
6 # .spec lines !
8 if [ ! -e ./ChangeLog ] ; then
9 echo You are not in Wine main directory !
10 exit
12 echo crtdll.spec, ntdll.spec and wsock32.spec will be mentioned many times,
13 echo as they use original UNIX functions that don\'t exist in Wine .c code.
14 echo
15 FIND_LIST="`find . -name "*.c"`"
16 for i in if1632/*.spec relay32/*.spec
18 # skip wprocs.spec, as it contains many funcs that don't need a WINAPI
19 if [ $i = "if1632/wprocs.spec" ] ; then
20 continue
22 LINE="`egrep "stdcall|cdecl|pascal|register" $i|grep -v "^#"|tr -d " "|tr "\n" " "`"
23 for j in $LINE
25 if [ -n "`echo "$j"|grep \)`" ] ; then
26 FUNC="`echo $j|cut -f2 -d\)|cut -f1 -d'#'`"
27 if [ -n "$FUNC" ] ; then
28 if [ -z "`grep -B 1 $FUNC $FIND_LIST|egrep "WINAPI|__cdecl|VFWAPI|DC_GET_VAL|DC_SET_MODE|REGS_ENTRYPOINT"`" ] ; then
29 case $FUNC in # "black list"
30 "GetBrushOrgEx16" ) ;;
31 "GetCurrentPositionEx16" ) ;;
32 "GetViewportExtEx16" ) ;;
33 "GetViewportOrgEx16" ) ;;
34 "GetWindowExtEx16" ) ;;
35 "GetWindowOrgEx16" ) ;;
37 "GetBrushOrgEx32" ) ;;
38 "GetCurrentPositionEx32" ) ;;
39 "GetViewportExtEx32" ) ;;
40 "GetViewportOrgEx32" ) ;;
41 "GetWindowExtEx32" ) ;;
42 "GetWindowOrgEx32" ) ;;
43 * ) echo "$i: $FUNC" ;;
44 esac
47 fi
48 done
49 done