diff --git a/legacy/eio/configure.ac b/legacy/eio/configure.ac
index 4f14a6aee5..ab74bd9b76 100644
--- a/legacy/eio/configure.ac
+++ b/legacy/eio/configure.ac
@@ -180,6 +180,7 @@ AC_SUBST(lt_enable_auto_import)
### Checks for library functions
AC_CHECK_FUNCS([fchmod chown getpwnam getgrnam])
+AC_FUNC_ALLOCA
### Check for splice system call
diff --git a/legacy/eio/src/lib/eio_dir.c b/legacy/eio/src/lib/eio_dir.c
index 7bed4fb858..8a466eaa9c 100644
--- a/legacy/eio/src/lib/eio_dir.c
+++ b/legacy/eio/src/lib/eio_dir.c
@@ -17,6 +17,10 @@
* if not, see .
*/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include "eio_private.h"
#include "Eio.h"
diff --git a/legacy/eio/src/lib/eio_eet.c b/legacy/eio/src/lib/eio_eet.c
index 049c1e39a9..a710952997 100644
--- a/legacy/eio/src/lib/eio_eet.c
+++ b/legacy/eio/src/lib/eio_eet.c
@@ -19,6 +19,10 @@
* if not, see .
*/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include "eio_private.h"
#include "Eio.h"
diff --git a/legacy/eio/src/lib/eio_file.c b/legacy/eio/src/lib/eio_file.c
index 31122d0c1f..16cff5c799 100644
--- a/legacy/eio/src/lib/eio_file.c
+++ b/legacy/eio/src/lib/eio_file.c
@@ -19,6 +19,28 @@
* if not, see .
*/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#undef alloca
+#ifdef HAVE_ALLOCA_H
+# include
+#elif defined __GNUC__
+# define alloca __builtin_alloca
+#elif defined _AIX
+# define alloca __alloca
+#elif defined _MSC_VER
+# include
+# define alloca _alloca
+#else
+# include
+# ifdef __cplusplus
+extern "C"
+# endif
+void *alloca (size_t);
+#endif
+
#include "eio_private.h"
#include "Eio.h"
diff --git a/legacy/eio/src/lib/eio_main.c b/legacy/eio/src/lib/eio_main.c
index e65f75b0da..8ea373b3b3 100644
--- a/legacy/eio/src/lib/eio_main.c
+++ b/legacy/eio/src/lib/eio_main.c
@@ -16,6 +16,11 @@
* License along with this library;
* if not, see .
*/
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include "eio_private.h"
#include "Eio.h"
diff --git a/legacy/eio/src/lib/eio_map.c b/legacy/eio/src/lib/eio_map.c
index 9edc0adebf..fca18d6096 100644
--- a/legacy/eio/src/lib/eio_map.c
+++ b/legacy/eio/src/lib/eio_map.c
@@ -19,6 +19,10 @@
* if not, see .
*/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include "eio_private.h"
#include "Eio.h"
diff --git a/legacy/eio/src/lib/eio_monitor.c b/legacy/eio/src/lib/eio_monitor.c
index 9f735d63c6..bbf430b248 100644
--- a/legacy/eio/src/lib/eio_monitor.c
+++ b/legacy/eio/src/lib/eio_monitor.c
@@ -17,6 +17,10 @@
* if not, see .
*/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include "eio_private.h"
#include "Eio.h"
diff --git a/legacy/eio/src/lib/eio_monitor_inotify.c b/legacy/eio/src/lib/eio_monitor_inotify.c
index b5ffabd81c..449a6cfd01 100644
--- a/legacy/eio/src/lib/eio_monitor_inotify.c
+++ b/legacy/eio/src/lib/eio_monitor_inotify.c
@@ -17,6 +17,28 @@
* if not, see .
*/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#undef alloca
+#ifdef HAVE_ALLOCA_H
+# include
+#elif defined __GNUC__
+# define alloca __builtin_alloca
+#elif defined _AIX
+# define alloca __alloca
+#elif defined _MSC_VER
+# include
+# define alloca _alloca
+#else
+# include
+# ifdef __cplusplus
+extern "C"
+# endif
+void *alloca (size_t);
+#endif
+
#include "eio_private.h"
#include "Eio.h"
diff --git a/legacy/eio/src/lib/eio_monitor_poll.c b/legacy/eio/src/lib/eio_monitor_poll.c
index 1f09a427d5..6ead0492ca 100644
--- a/legacy/eio/src/lib/eio_monitor_poll.c
+++ b/legacy/eio/src/lib/eio_monitor_poll.c
@@ -17,6 +17,28 @@
* if not, see .
*/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#undef alloca
+#ifdef HAVE_ALLOCA_H
+# include
+#elif defined __GNUC__
+# define alloca __builtin_alloca
+#elif defined _AIX
+# define alloca __alloca
+#elif defined _MSC_VER
+# include
+# define alloca _alloca
+#else
+# include
+# ifdef __cplusplus
+extern "C"
+# endif
+void *alloca (size_t);
+#endif
+
#include "eio_private.h"
#include "Eio.h"
diff --git a/legacy/eio/src/lib/eio_monitor_win32.c b/legacy/eio/src/lib/eio_monitor_win32.c
index 16dbaa7fdd..01e9b6cd68 100644
--- a/legacy/eio/src/lib/eio_monitor_win32.c
+++ b/legacy/eio/src/lib/eio_monitor_win32.c
@@ -17,6 +17,28 @@
* if not, see .
*/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#undef alloca
+#ifdef HAVE_ALLOCA_H
+# include
+#elif defined __GNUC__
+# define alloca __builtin_alloca
+#elif defined _AIX
+# define alloca __alloca
+#elif defined _MSC_VER
+# include
+# define alloca _alloca
+#else
+# include
+# ifdef __cplusplus
+extern "C"
+# endif
+void *alloca (size_t);
+#endif
+
#include "eio_private.h"
#include "Eio.h"
diff --git a/legacy/eio/src/lib/eio_private.h b/legacy/eio/src/lib/eio_private.h
index ef983f98a0..6e327a49de 100644
--- a/legacy/eio/src/lib/eio_private.h
+++ b/legacy/eio/src/lib/eio_private.h
@@ -1,10 +1,6 @@
#ifndef EIO_PRIVATE_H_
#define EIO_PRIVATE_H_
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
#include
#ifdef HAVE_DIRENT_H
# include
diff --git a/legacy/eio/src/lib/eio_single.c b/legacy/eio/src/lib/eio_single.c
index 8bc99fa41e..2a567d312a 100644
--- a/legacy/eio/src/lib/eio_single.c
+++ b/legacy/eio/src/lib/eio_single.c
@@ -18,6 +18,11 @@
* License along with this library;
* if not, see .
*/
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include "eio_private.h"
#include "Eio.h"
diff --git a/legacy/eio/src/lib/eio_xattr.c b/legacy/eio/src/lib/eio_xattr.c
index cff21b92e7..8ed768bb38 100644
--- a/legacy/eio/src/lib/eio_xattr.c
+++ b/legacy/eio/src/lib/eio_xattr.c
@@ -17,6 +17,10 @@
* if not, see .
*/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include "eio_private.h"
#include "Eio.h"