tcgetpgrp \
)
+ # These checks are for Interix, to avoid its getgr* functions, in favor
+ # of these replacements. The replacement functions are much more efficient
+ # because they do not query the domain controller for user information
+ # when it is not needed.
+ AC_CHECK_FUNCS_ONCE([
+ getgrgid_nomembers
+ getgrnam_nomembers
+ getgrent_nomembers
+ ])
+
dnl This can't use AC_REQUIRE; I'm not quite sure why.
cu_PREREQ_STAT_PROG
struct group *getgrgid ();
#endif
+/* Interix has replacements for getgr{gid,nam,ent}, that don't
+ query the domain controller for group members when not required.
+ This speeds up the calls tremendously (<1 ms vs. >3 s). */
+/* To protect any system that could provide _nomembers functions
+ other than interix, check for HAVE_SETGROUPS, as interix is
+ one of the very few (the only?) platform that lacks it */
+#if ! HAVE_SETGROUPS
+# if HAVE_GETGRGID_NOMEMBERS
+# define getgrgid(gid) getgrgid_nomembers(gid)
+# endif
+# if HAVE_GETGRNAM_NOMEMBERS
+# define getgrnam(nam) getgrnam_nomembers(nam)
+# endif
+# if HAVE_GETGRENT_NOMEMBERS
+# define getgrent() getgrent_nomembers()
+# endif
+#endif
+
#if !HAVE_DECL_GETUID
uid_t getuid ();
#endif