reportedly this is a semi-common practice among some BSDs and a few
other systems, and will improve application compatibility.
#ifndef _FEATURES_H
#define _FEATURES_H
#ifndef _FEATURES_H
#define _FEATURES_H
+#ifdef _ALL_SOURCE
+#define _GNU_SOURCE 1
+#endif
+
#if !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE) \
&& !defined(_XOPEN_SOURCE) && !defined(_GNU_SOURCE) \
&& !defined(_BSD_SOURCE) && !defined(__STRICT_ANSI__)
#if !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE) \
&& !defined(_XOPEN_SOURCE) && !defined(_GNU_SOURCE) \
&& !defined(_BSD_SOURCE) && !defined(__STRICT_ANSI__)