| #!/bin/sh |
| |
| usage() |
| { |
| cat << EOF >&2 |
| |
| Usage: |
| -h show this HELP message |
| -p PERK set pe parser utility |
| -o OUTPUT set output file name |
| -l SYSLIB set system library from which to extract symbols |
| |
| EOF |
| exit 1 |
| } |
| |
| |
| |
| perk= |
| caps= |
| |
| workdir=$(pwd) |
| output= |
| syslib= |
| |
| |
| while getopts "hp:o:l:c" opt; do |
| case $opt in |
| h) |
| usage |
| ;; |
| p) |
| perk="$OPTARG" |
| ;; |
| o) |
| output="$OPTARG" |
| ;; |
| l) |
| syslib="$OPTARG" |
| ;; |
| c) |
| caps='yes' |
| ;; |
| \?) |
| printf "$0: Invalid option: -%s" "$OPTARG" >&2 |
| usage |
| ;; |
| esac |
| done |
| |
| |
| |
| if [ -z "$perk" ] || [ -z "$output" ] || [ -z "$syslib" ]; then |
| usage |
| fi |
| |
| tmpdef=`mktemp` |
| |
| if [ -z "$tmpdef" ]; then |
| printf "$0: Failed to create a temporary file!" >&2 |
| exit 1 |
| fi |
| |
| |
| if [ -z "$caps" ]; then |
| "$perk" -e "$syslib" > "$tmpdef" || exit 1 |
| else |
| "$perk" -e "$syslib" | grep -e '[A-Z]' > "$tmpdef" || exit 1 |
| fi |
| |
| |
| grep -v \ |
| -e 'DllMain' \ |
| -e 'DllCanUnloadNow' \ |
| -e 'DllDebugObjectRPCHook' \ |
| -e 'DllGetClassObject' \ |
| -e 'DllRegisterServer' \ |
| -e 'DllUnregisterServer' \ |
| -e '?' \ |
| "$tmpdef" > "$output" || exit 1 |
| |
| |
| exit 0 |