generate_symbol.sh 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #! /bin/sh
  2. defsFile_wrappers="$1"
  3. defsFile_pre="$2"
  4. defsFile_post="$3"
  5. # X="typedef int (*Tcl_Eval_t)(Tcl_Interp*, const char*);"
  6. while read symbol existing_typedef typedef; do
  7. echo "#define ${symbol} ORIGINAL_SYMBOL_${symbol}" >> $defsFile_pre
  8. echo "#undef ${symbol}" >> $defsFile_post
  9. test $existing_typedef -eq 0 && echo "$typedef" >> $defsFile_post
  10. returntype=$(echo "$typedef" | sed -e 's/typedef \([^(]*\) (\*\([^ ]*\)_t)(\(.*\));/\1/')
  11. name=$(echo "$typedef" | sed -e 's/typedef \([^(]*\) (\*\([^ ]*\)_t)(\(.*\));/\2/')
  12. params=$(echo "$typedef" | sed -e 's/typedef \([^(]*\) (\*\([^ ]*\)_t)(\(.*\));/\3/')
  13. SAVE_IFS=$IFS
  14. IFS=,
  15. params_full=""
  16. param_names=""
  17. # Set params to $1,$2, etc
  18. set $params
  19. paramCount=$#
  20. lastParam=$(expr $paramCount - 1)
  21. i=0
  22. while [ $i -lt $paramCount ]; do
  23. x="x${i}"
  24. if [ $1 = "void" ]; then
  25. params_full="void"
  26. param_names=""
  27. else
  28. params_full="${params_full}${1} ${x}"
  29. param_names="${param_names}${x}"
  30. if [ $i -ne $lastParam ]; then
  31. params_full="${params_full},"
  32. param_names="${param_names}, "
  33. fi
  34. fi
  35. shift
  36. i=$((i + 1))
  37. done
  38. cat >> $defsFile_wrappers << EOF
  39. $returntype $name ($params_full) {
  40. return DLSYM_VAR($name)($param_names);
  41. }
  42. EOF
  43. echo "$returntype $name ($params_full);" >> $defsFile_post
  44. IFS=$SAVE_IFS
  45. done