diff options
-rw-r--r-- | doc/autoconf.texi | 10 | ||||
-rw-r--r-- | lib/autoconf/functions.m4 | 17 |
2 files changed, 15 insertions, 12 deletions
diff --git a/doc/autoconf.texi b/doc/autoconf.texi index e8abc9ff..9ba182af 100644 --- a/doc/autoconf.texi +++ b/doc/autoconf.texi @@ -5599,13 +5599,17 @@ If @code{setpgrp} takes no argument (the Posix version), define @code{SETPGRP_VOID}. Otherwise, it is the BSD version, which takes two process IDs as arguments. This macro does not check whether @code{setpgrp} exists at all; if you need to work in that situation, -first call @code{AC_CHECK_FUNC} for @code{setpgrp}. +first call @code{AC_CHECK_FUNC} for @code{setpgrp}. This macro also +does not check for the Solaris variant of @code{setpgrp}, which returns +a @code{pid_t} instead of an @code{int}; portable code should only use +the return value by comparing it against @code{-1} to check for errors. The result of this macro is cached in the @code{ac_cv_func_setpgrp_void} variable. -This macro is obsolescent, as current systems have a @code{setpgrp} -whose signature conforms to Posix. New programs need not use this macro. +This macro is obsolescent, as all forms of @code{setpgrp} are also +obsolescent. New programs should use the Posix function @code{setpgid}, +which takes two process IDs as arguments (like the BSD @code{setpgrp}). @end defmac @defmac AC_FUNC_STAT diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4 index a91eeebc..49aa5c58 100644 --- a/lib/autoconf/functions.m4 +++ b/lib/autoconf/functions.m4 @@ -1541,17 +1541,16 @@ rm -rf conftest* # AC_FUNC_SETPGRP # --------------- AC_DEFUN([AC_FUNC_SETPGRP], -[AC_CACHE_CHECK(whether setpgrp takes no argument, ac_cv_func_setpgrp_void, - [AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[#include <unistd.h> - static int (*p) (void) = setpgrp;]], - [[return setpgrp ();]])], - [ac_cv_func_setpgrp_void=yes], - [ac_cv_func_setpgrp_void=no])]) +[AC_CACHE_CHECK(whether setpgrp requires zero arguments, + ac_cv_func_setpgrp_void, +[# Call it with two arguments. +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT], [setpgrp(0, 0);])], + [ac_cv_func_setpgrp_void=no], + [ac_cv_func_setpgrp_void=yes]) +]) if test $ac_cv_func_setpgrp_void = yes; then AC_DEFINE(SETPGRP_VOID, 1, - [Define to 1 if the `setpgrp' function takes no argument.]) + [Define to 1 if the `setpgrp' function requires zero arguments.]) fi ])# AC_FUNC_SETPGRP |