#!/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 } # one 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 # two 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 # three if [ -z "$caps" ]; then "$perk" -e "$syslib" > "$tmpdef" || exit 1 else "$perk" -e "$syslib" | grep -e '[A-Z]' > "$tmpdef" || exit 1 fi # four grep -v \ -e 'DllMain' \ -e 'DllCanUnloadNow' \ -e 'DllDebugObjectRPCHook' \ -e 'DllGetClassObject' \ -e 'DllRegisterServer' \ -e 'DllUnregisterServer' \ -e '?' \ "$tmpdef" > "$output" || exit 1 # all done exit 0