From b3460f3f549d4368ce2823cdc8111987d4d915f1 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Tue, 23 Feb 2016 20:13:34 +0100
Subject: [PATCH] configure.ac, unix/Daemon: check for initgroups() at
 configure time

The initgroups() manpage says we need to check for _BSD_SOURCE.  The
thing is that glibc deprecated this macro, and doesn't define it
anymore, effectively breaking all MPD supplementary groups.

The real fix is to check for initgroups() availability at configure
time, instead of relying on the deprecated _BSD_SOURCE macro.
---
 NEWS                | 1 +
 configure.ac        | 1 +
 src/unix/Daemon.cxx | 2 +-
 3 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/NEWS b/NEWS
index c1cd6cb25..bca7dc259 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,7 @@ ver 0.19.13 (not yet released)
   - aiff, riff: fix ID3 chunk padding
 * decoder
   - ffmpeg: support the TAK codec
+* initialize supplementary groups with glibc 2.19+
 
 ver 0.19.12 (2015/12/15)
 * fix assertion failure on malformed UTF-8 tag
diff --git a/configure.ac b/configure.ac
index 10e77ca79..39f2aaf0c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -206,6 +206,7 @@ if test x$host_is_linux = xyes; then
 fi
 
 AC_CHECK_FUNCS(getpwnam_r getpwuid_r)
+AC_CHECK_FUNCS(initgroups)
 AC_CHECK_FUNCS(strndup)
 
 if test x$host_is_linux = xyes; then
diff --git a/src/unix/Daemon.cxx b/src/unix/Daemon.cxx
index d283108ed..67704a9a1 100644
--- a/src/unix/Daemon.cxx
+++ b/src/unix/Daemon.cxx
@@ -110,7 +110,7 @@ daemonize_set_user(void)
 				       (int)user_gid);
 	}
 
-#ifdef _BSD_SOURCE
+#ifdef HAVE_INITGROUPS
 	/* init supplementary groups
 	 * (must be done before we change our uid)
 	 */