Mainly for historical reasons, vifm contained the following pieces of code:
#define _GNU_SOURCE /* I don't know how portable this is but it is
* needed in Linux for wide char function wcwidth().
*/
/* Curses includes follow. */
Today I finally decided to remove such pieces and put the define
into correct
place -- config.h
. config.h
is automatically included in all translation
units, thus all existing defines can be removed.
My first attempt was adding the following line to the configure.in
script:
AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions.])
It turned to do what I want, but looking at results from DDG I accidentally saw this macro:
AC_GNU_SOURCE
The documentation on it is available here and here.
Using AC_GNU_SOURCE
seems to be a better choice because it's more universal
solution. AC_DEFINE
produces:
diff --git a/config.h.in b/config.h.in
index 018bc95..61a2a67 100644
--- a/config.h.in
+++ b/config.h.in
@@ -117,3 +117,6 @@
/* Number of bits in a file offset, on hosts where this is settable. */
#undef _FILE_OFFSET_BITS
+/* Enable GNU extensions. */
+#undef _GNU_SOURCE
+
While AC_GNU_SOURCE
gives:
diff --git a/config.h.in b/config.h.in
index 018bc95..d7bed74 100644
--- a/config.h.in
+++ b/config.h.in
@@ -106,6 +106,23 @@
/* -n option is available for cp and mv */
#undef SUPPORT_NO_CLOBBER
+/* Enable extensions on AIX 3, Interix. */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them. */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris. */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop. */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+
/* Version number of package */
#undef VERSION
@@ -123,5 +145,18 @@
/* Define for large files, on AIX-style hosts. */
#undef _LARGE_FILES
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+ this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#undef _POSIX_SOURCE
+
// load comments