acinclude.m4
上传用户:zm130024
上传日期:2007-01-04
资源大小:432k
文件大小:3k
源码类别:

代理服务器

开发平台:

Unix_Linux

  1. # -- acinclude --
  2. define(testparam,[
  3. _arg=[$2]
  4. _param=[$3]
  5. _func=[$4]
  6. _ucfunc=[$5]
  7. unset _nofunc
  8. for val in [$1]
  9. do
  10. cat ${_param} | egrep "^${val}" > /dev/null
  11. test $? -eq 0 && _nofunc="" && break
  12. _nofunc=t
  13. done
  14. if test "x${_nofunc}" = xt; then
  15. if test "x[$$6]" != x; then
  16. [$6]="$$6|"
  17. fi
  18. [$6]="[$$6] ${_func} (${_arg}): (`cat ${_param}`)"
  19. else
  20. AC_DEFINE_UNQUOTED(HAVE_PROT_${_ucfunc}_${_arg}, ${val})
  21. fi
  22. ])dnl
  23. dnl #XXXugly
  24. dnl #attempt to speed up runtime by avoiding subshells
  25. AC_DEFUN(L_SOCKPROTO,
  26. [
  27. dnl this function is not very generic, and only supports nine arguments
  28. syscmd(if test $# -gt 9; then exit 1;fi) dnl
  29. ifelse(sysval, 0, , [errprint(__file__:__line__: error in acinclude.m4: too many arguments to function [$0]
  30. ) m4exit(1)])dnl
  31. nargs=[$#]
  32. paramcnt=decr(decr([$#]))
  33. func=translit([$1], ` ')
  34. ucfunc=translit(translit([$1], ` '), `a-z', `A-Z')
  35. AC_MSG_CHECKING([prototypes for $func])
  36. unset failure
  37. cat > conftest.$ac_ext <<EOF
  38. #include "confdefs.h"
  39. #include <sys/types.h>
  40. #include <sys/socket.h>
  41. #include <sys/uio.h>
  42. #include <unistd.h>
  43. EOF
  44. changequote(<<, >>)dnl
  45. ${CPP} ${CPPFLAGS} ${CPPFLAG_STDC} conftest.$ac_ext | $AWK "{ if (/[^a-z0-9]${func}[^a-z0-9]/) { s=10 }; if ( s > 0 ) { s -= 1; print; } }" | egrep -v '^#' | tr 'n' ' ' | tr -s '/' |  tr ';' 'n'  | grep -v "__${func}" | egrep "[^a-z0-9]${func}[^a-z0-9]" | tr -s '[:blank:]' | sed -e 's/extern//' > conftest.out_proto
  46. cnt=0
  47. while test $cnt -lt $paramcnt; do
  48. if test $cnt -eq 0; then
  49. cat conftest.out_proto | sed -e "s/${func}.*//" | sed -e 's/^[  ]*//' | sed -e 's/[  ]*$//g' > conftest.out_param
  50. else
  51. cat conftest.out_proto | sed -e "s/.*${func}//" | sed -e "s/[()]//g" | cut -d, -f $cnt | sed -e 's/^[  ]*//' | sed -e 's/[  ]*$//g' > conftest.out_param
  52. fi
  53. dnl XXXstrip whatever's behind any *?
  54. cat conftest.out_param | tr -s '[:blank:]' > conftest.out_nospace
  55. if test -s conftest.out_nospace; then
  56. cp -f conftest.out_param conftest.out_param_${cnt}
  57. else
  58. dnl #XXX
  59. echo "not found" > conftest.out_param_${cnt}
  60. echo "warning: found no argument"
  61. fi
  62. #XXX avoid subshell
  63. case $cnt in
  64. 0) cnt=1;;
  65. 1) cnt=2;;
  66. 2) cnt=3;;
  67. 3) cnt=4;;
  68. 4) cnt=5;;
  69. 5) cnt=6;;
  70. 6) cnt=7;;
  71. 7) cnt=8;;
  72. 8) cnt=9;;
  73. 9) cnt=10;;
  74. 10) cnt=11;;
  75. esac
  76. done
  77. changequote([, ])dnl
  78. ifelse([$3], , ,
  79. [ #return value
  80. testparam([$3], 0, conftest.out_param_0, $func, $ucfunc, failure)dnl
  81. ])dnl
  82. ifelse([$4], , ,
  83. [ #first argument
  84. testparam([$4], 1, conftest.out_param_1, $func, $ucfunc, failure)dnl
  85. ])dnl
  86. ifelse([$5], , ,
  87. [ #second argument
  88. testparam([$5], 2, conftest.out_param_2, $func, $ucfunc, failure)dnl
  89. ])dnl
  90. ifelse([$6], , ,
  91. [ #third argument
  92. testparam([$6], 3, conftest.out_param_3, $func, $ucfunc, failure)dnl
  93. ])dnl
  94. ifelse([$7], , ,
  95. [ #fourth argument
  96. testparam([$7], 4, conftest.out_param_4, $func, $ucfunc, failure)dnl
  97. ])dnl
  98. ifelse([$8], , ,
  99. [ #fifth argument
  100. testparam([$8], 5, conftest.out_param_5, $func, $ucfunc, failure)dnl
  101. ])dnl
  102. ifelse([$9], , ,
  103. [ #sixth argument
  104. testparam([$9], 6, conftest.out_param_6, $func, $ucfunc, failure)dnl
  105. ])dnl
  106. ifelse([$10], , ,
  107. [ #seventh argument
  108. testparam([$10], 7, conftest.out_param_7, $func, $ucfunc, failure)dnl
  109. ])dnl
  110. #failure
  111. if test "x$failure" != x; then
  112. AC_MSG_RESULT(failure)
  113. echo "$failure" | tr '|' 'n'
  114. ifelse([$2], , ,
  115. [ $2
  116. ])dnl
  117. else
  118. AC_MSG_RESULT(ok)
  119. fi
  120. rm -f conftest.*
  121. ])dnl