AC_FUNC_FORK
AC_FUNC_GETGROUPS
AC_FUNC_SELECT_ARGTYPES
-AC_CHECK_FUNCS([chmod chown clock_gettime getaddrinfo getgrgid_r \
- getpwuid_r gettimeofday getuid inet_ntop inet_pton mlock nanosleep \
+AC_CHECK_FUNCS([chmod chown clock_gettime getaddrinfo getgrgid_r getgrnam_r \
+ getpwnam_r getpwuid_r gettimeofday getuid inet_ntop inet_pton mlock nanosleep \
pipe posix_fadvise posix_madvise posix_memalign setpgid setsid shm_open \
sigaction sleep sysconf])
AC_CHECK_FUNCS([mkfifo], [HAVE_MKFIFO=1], [HAVE_MKFIFO=0])
#else
n = -1;
#endif
- if (n < 0)
+ if (n <= 0)
n = 512;
data = pa_xmalloc((size_t) n);
* support getgrgid_r. */
errno = 0;
- if ((result = getgrgid(gid)) == NULL) {
+ if (!(result = getgrgid(gid))) {
pa_log("getgrgid(%u): %s", gid, pa_cstrerror(errno));
if (!errno)
char **i;
int r = -1;
+#ifdef _SC_GETGR_R_SIZE_MAX
g_n = sysconf(_SC_GETGR_R_SIZE_MAX);
+#else
+ g_n = -1;
+#endif
+ if (g_n <= 0)
+ g_n = 512;
+
g_buf = pa_xmalloc((size_t) g_n);
+#ifdef _SC_GETPW_R_SIZE_MAX
p_n = sysconf(_SC_GETPW_R_SIZE_MAX);
+#else
+ p_n = -1;
+#endif
+ if (p_n <= 0)
+ p_n = 512;
+
p_buf = pa_xmalloc((size_t) p_n);
errno = 0;
- if (getgrnam_r(name, &grbuf, g_buf, (size_t) g_n, &gr) != 0 || !gr) {
-
+#ifdef HAVE_GETGRNAM_R
+ if (getgrnam_r(name, &grbuf, g_buf, (size_t) g_n, &gr) != 0 || !gr)
+#else
+ if (!(gr = getgrnam(name)))
+#endif
+ {
if (!errno)
errno = ENOENT;
-
goto finish;
}
for (i = gr->gr_mem; *i; i++) {
struct passwd pwbuf, *pw;
- errno = 0;
+#ifdef HAVE_GETPWNAM_R
if (getpwnam_r(*i, &pwbuf, p_buf, (size_t) p_n, &pw) != 0 || !pw)
+#else
+ if (!(pw = getpwnam(*i)))
+#endif
continue;
if (pw->pw_uid == uid) {
long g_n;
struct group grbuf, *gr;
+#ifdef _SC_GETGR_R_SIZE_MAX
g_n = sysconf(_SC_GETGR_R_SIZE_MAX);
+#else
+ g_n = -1;
+#endif
+ if (g_n <= 0)
+ g_n = 512;
+
g_buf = pa_xmalloc((size_t) g_n);
errno = 0;
- if (getgrnam_r(name, &grbuf, g_buf, (size_t) g_n, &gr) != 0 || !gr) {
-
+#ifdef HAVE_GETGRNAM_R
+ if (getgrnam_r(name, &grbuf, g_buf, (size_t) g_n, &gr) != 0 || !gr)
+#else
+ if (!(gr = getgrnam(name)))
+#endif
+ {
if (!errno)
errno = ENOENT;
-
goto finish;
}