Evil: fix infinite recursive loop in previous addition of setlocale() in Evil
authorVincent Torri <vincent dot torri at gmail dot com>
Tue, 8 Dec 2015 04:53:23 +0000 (13:53 +0900)
committerJean-Philippe Andre <jp.andre@samsung.com>
Tue, 8 Dec 2015 04:56:49 +0000 (13:56 +0900)
Summary:
setlocale() called itself because it was defined as a #define
so remove this #define from evil_locale.h and move it in another header file
To avoid future problem, move similar defines to this header file
Also clean all the header file mess in Evil

Reviewers: cedric

Subscribers: jpeg

Differential Revision: https://phab.enlightenment.org/D3409

28 files changed:
src/Makefile_Evil.am
src/bin/evil/evil_test_link.c
src/bin/evil/evil_test_mkstemp.c
src/bin/evil/evil_test_realpath.c
src/lib/evil/Evil.h
src/lib/evil/dlfcn.c
src/lib/evil/evil_dirent.c
src/lib/evil/evil_fcntl.c
src/lib/evil/evil_inet.c
src/lib/evil/evil_inet.h
src/lib/evil/evil_langinfo.c
src/lib/evil/evil_libgen.c
src/lib/evil/evil_locale.c
src/lib/evil/evil_locale.h
src/lib/evil/evil_macro_pop.h
src/lib/evil/evil_macro_wrapper.h [new file with mode: 0644]
src/lib/evil/evil_main.c
src/lib/evil/evil_private.h
src/lib/evil/evil_pwd.c
src/lib/evil/evil_stdio.c
src/lib/evil/evil_stdio.h
src/lib/evil/evil_stdlib.c
src/lib/evil/evil_string.c
src/lib/evil/evil_time.c
src/lib/evil/evil_time.h
src/lib/evil/evil_unistd.c
src/lib/evil/evil_unistd.h
src/lib/evil/evil_util.c

index 5c27eca..60fc567 100644 (file)
@@ -13,6 +13,7 @@ lib/evil/evil_langinfo.h \
 lib/evil/evil_locale.h \
 lib/evil/evil_macro.h \
 lib/evil/evil_macro_pop.h \
+lib/evil/evil_macro_wrapper.h \
 lib/evil/evil_main.h \
 lib/evil/evil_stdio.h \
 lib/evil/evil_stdlib.h \
index 868e9f2..0aa4966 100644 (file)
@@ -2,6 +2,7 @@
 # include "config.h"
 #endif /* HAVE_CONFIG_H */
 
+#include <stdio.h>
 #include <string.h>
 
 #include <Evil.h>
index 427dc01..54d9df5 100644 (file)
@@ -2,6 +2,7 @@
 # include "config.h"
 #endif /* HAVE_CONFIG_H */
 
+#include <stdio.h>
 #include <string.h>
 
 #include <Evil.h>
index afd92f1..fbc4d1d 100644 (file)
@@ -2,6 +2,7 @@
 # include "config.h"
 #endif /* HAVE_CONFIG_H */
 
+#include <stdio.h>
 #include <string.h>
 
 #include <Evil.h>
index 6a69f7b..c4ee0a1 100644 (file)
@@ -100,13 +100,7 @@ extern "C" {
 #include <windows.h>
 #undef WIN32_LEAN_AND_MEAN
 
-#include <stdlib.h>
-#include <stdio.h>
-#include <time.h>
-#include <limits.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <math.h>
+#include <sys/stat.h> /* for mkdir in evil_macro_wrapper */
 
 
 typedef unsigned long  uid_t;
@@ -125,7 +119,6 @@ typedef unsigned long  gid_t;
 #include "evil_time.h"
 #include "evil_unistd.h"
 #include "evil_util.h"
-#include "evil_macro_pop.h"
 
 #ifndef S_ISDIR
 # define S_ISDIR(m) (((m) & _S_IFMT) == _S_IFDIR)
@@ -173,18 +166,10 @@ typedef unsigned long  gid_t;
 #define _S_IWUSR _S_IWRITE
 #define _S_IRUSR _S_IREAD
 
-  /*
-#  define close(fd) _close(fd)
-#  define read(fd,buffer,count) _read((fd),(buffer),(count))
-#  define write(fd,buffer,count) _write((fd),(buffer),(count))
-#  define unlink(filename) _unlink((filename))
-#  define lstat(f,s) _stat((f),(s))
-  */
-
 #define sigsetjmp(Env, Save) setjmp(Env)
 
-#undef EAPI
-#define EAPI
+#include "evil_macro_wrapper.h"
+#include "evil_macro_pop.h"
 
 #ifdef __cplusplus
 }
index 4f3760b..76fbf85 100644 (file)
@@ -12,7 +12,8 @@
 
 #include <psapi.h> /*  EnumProcessModules(Ex) */
 
-#include "Evil.h"
+#include "evil_macro.h"
+#include "evil_util.h"
 #include "evil_private.h"
 
 #include "dlfcn.h"
index 6dcfca2..6f6b86a 100644 (file)
@@ -2,10 +2,19 @@
 # include "config.h"
 #endif /* HAVE_CONFIG_H */
 
+#include <stdlib.h>
 #include <dirent.h>
 #include <errno.h>
+#include <sys/types.h>
 
-#include "Evil.h"
+#ifndef WIN32_LEAN_AND_MEAN
+# define WIN32_LEAN_AND_MEAN
+#endif
+#include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
+
+#include "evil_macro.h"
+#include "evil_stdio.h"
 
 
 struct DIR
index 118ed17..188e476 100644 (file)
@@ -6,8 +6,10 @@
 #include <sys/locking.h>
 
 #include <winsock2.h> /* for ioctlsocket */
+#include <io.h>
 
-#include "Evil.h"
+#include "evil_macro.h"
+#include "evil_fcntl.h"
 
 
 /*
index 05d130c..54cee3d 100644 (file)
@@ -40,7 +40,6 @@
 
 #include "evil_macro.h"
 #include "evil_inet.h"
-#include "evil_private.h"
 
 #ifndef EMSGSIZE
 # define EMSGSIZE WSAEMSGSIZE
index 6858a83..fb4e072 100644 (file)
 EAPI int evil_inet_pton(int af, const char *src, void *dst);
 
 /**
- * @def inet_pton(x,y,z)
- *
- * Wrapper around evil_inet_pton().
- */
-#define inet_pton(x,y,z) evil_inet_pton(x,y,z)
-
-/**
  * @brief Convert IPv4 and IPv6 addresses from binary to text form.
  *
  * @param af The address family.
@@ -136,13 +129,6 @@ EAPI int evil_inet_pton(int af, const char *src, void *dst);
  */
 EAPI const char *evil_inet_ntop(int af, const char *src, void *dst, size_t size);
 
-/**
- * @def inet_ntop(x,y,z,s)
- *
- * Wrapper around evil_inet_ntop().
- */
-#define inet_ntop(x,y,z,s) evil_inet_ntop(x,y,z,s)
-
 
 #endif /* _WIN32_WINNT >= _WIN32_WINNT_VISTA */
 
index 2cec67a..25a863a 100644 (file)
@@ -2,7 +2,11 @@
 # include "config.h"
 #endif /* HAVE_CONFIG_H */
 
-#include "Evil.h"
+#include <stdlib.h>
+#include <string.h>
+
+#include "evil_macro.h"
+#include "evil_langinfo.h"
 
 
 static char *
index 779193f..d96ba5b 100644 (file)
@@ -4,7 +4,8 @@
 
 #include <string.h>
 
-#include "Evil.h"
+#include "evil_macro.h"
+#include "evil_libgen.h"
 
 char _evil_basename_buf[PATH_MAX];
 char _evil_dirname_buf[PATH_MAX];
index d243ad8..0a28a5e 100644 (file)
@@ -14,7 +14,6 @@
 
 #include "evil_macro.h"
 #include "evil_locale.h"
-#include "evil_private.h"
 
 /*
  * LOCALE_SISO639LANGNAME and LOCALE_SISO3166CTRYNAME need at least a buffer
index 6196800..4bf14ec 100644 (file)
@@ -18,6 +18,8 @@
  * @def LC_MESSAGES
  *
  * New locale value, based on the one in libintl.h
+ *
+ * @since 1.16
  */
 #ifdef LC_MESSAGES
 # undef LC_MESSAGES
  * Conformity: Non applicable.
  *
  * Supported OS: Windows XP.
- */
-EAPI char *evil_setlocale(int category, const char *locale);
-
-/**
- * @def setlocale(cat, loc)
  *
- * Wrapper around evil_setlocale().
+ * @since 1.16
  */
-#ifdef setlocale /* libintl.h defines setlocale() but always returns "C" */
-# undef setlocale
-#endif
-#define setlocale(cat, loc) evil_setlocale(cat, loc)
+EAPI char *evil_setlocale(int category, const char *locale);
 
 
 /**
index bad78db..8b998c3 100644 (file)
@@ -64,5 +64,8 @@
 #define SCNuPTR "llu"
 #endif /* _WIN64 */
 
+#undef EAPI
+#define EAPI
+
 
 #endif /* __EVIL_MACRO_POP_H__ */
diff --git a/src/lib/evil/evil_macro_wrapper.h b/src/lib/evil/evil_macro_wrapper.h
new file mode 100644 (file)
index 0000000..4eea1fa
--- /dev/null
@@ -0,0 +1,110 @@
+#ifndef __EVIL_MACRO_WRAPPER_H__
+#define __EVIL_MACRO_WRAPPER_H__
+
+
+/*
+ * evil_inet.h
+ */
+
+#if ! (_WIN32_WINNT >= 0x600 /* _WIN32_WINNT_VISTA */)
+
+/**
+ * @def inet_pton(x,y,z)
+ *
+ * Wrapper around evil_inet_pton().
+ */
+#define inet_pton(x,y,z) evil_inet_pton(x,y,z)
+
+/**
+ * @def inet_ntop(x,y,z,s)
+ *
+ * Wrapper around evil_inet_ntop().
+ */
+#define inet_ntop(x,y,z,s) evil_inet_ntop(x,y,z,s)
+
+
+#endif /* _WIN32_WINNT >= _WIN32_WINNT_VISTA */
+
+/*
+ * evil_locale.h
+ */
+
+/**
+ * @def setlocale(cat, loc)
+ *
+ * Wrapper around evil_setlocale().
+ * @since 1.16
+ */
+#ifdef setlocale /* libintl.h defines setlocale() but always returns "C" */
+# undef setlocale
+#endif
+#define setlocale(cat, loc) evil_setlocale(cat, loc)
+
+/*
+ * evil_stdio.h
+ */
+
+/**
+ * @def rename(src, dest)
+ *
+ * Wrapper around evil_rename().
+ *
+ * @since 1.8
+ */
+#ifdef rename
+# undef rename
+#endif
+#define rename(src, dst) evil_rename(src, dst)
+
+/**
+ * @def mkdir(dirname, mode)
+ *
+ * Wrapper around evil_mkdir().
+ *
+ * @since 1.15
+ */
+#ifdef mkdir
+# undef mkdir
+#endif
+#define mkdir(dirname, mode) evil_mkdir(dirname, mode)
+
+/*
+ * evil_time.h
+ */
+
+/**
+ * @def localtime_r(t, r)
+ *
+ * Wrapper around evil_localtime_r().
+ */
+#ifdef localtime_r
+# undef localtime_r
+#endif
+#define localtime_r(t, r) evil_localtime_r(t, r)
+
+/*
+ * evil_unistd.h
+ */
+
+/**
+ * @def getcwd(b,s)
+ *
+ * Wrapper around evil_getcwd().
+ */
+#ifdef getcwd
+# undef getcwd
+#endif
+#define getcwd(b,s) evil_getcwd((b),(s))
+
+/**
+ * @def pipe(fds)
+ *
+ * Wrapper around evil_pipe().
+ */
+#ifdef pipe
+# undef pipe
+#endif
+#define pipe(fds) evil_pipe(fds)
+
+
+#endif
index 79d4e34..2b7ae51 100644 (file)
@@ -2,13 +2,17 @@
 # include <config.h>
 #endif
 
+#include <stdio.h>
+
 #ifndef WIN32_LEAN_AND_MEAN
 # define WIN32_LEAN_AND_MEAN
 #endif
 #include <winsock2.h>
 #undef WIN32_LEAN_AND_MEAN
 
-#include "Evil.h"
+#include "evil_macro.h"
+#include "evil_unistd.h"
+#include "evil_main.h"
 #include "evil_private.h"
 
 
@@ -18,6 +22,8 @@ extern LONGLONG _evil_time_freq;
 extern LONGLONG _evil_time_count;
 extern long     _evil_time_second;
 
+long _evil_systemtime_to_time(SYSTEMTIME st);
+
 int
 evil_init(void)
 {
index 0f8b6d1..560b4e2 100644 (file)
@@ -14,12 +14,6 @@ extern "C" {
 # endif
 #endif
 
-long _evil_systemtime_to_time(SYSTEMTIME st);
-
-void _evil_error_display(const char *fct, LONG res);
-
-void _evil_last_error_display(const char *fct);
-
 #ifdef __cplusplus
 }
 #endif
index f53b1d8..bcf9eb3 100644 (file)
@@ -2,11 +2,13 @@
 # include "config.h"
 #endif /* HAVE_CONFIG_H */
 
+#include <stdio.h>
+
 #define _POSIX
 #include <io.h>
 #include <lmcons.h>
 
-#include "Evil.h"
+#include "evil_macro.h"
 #include "pwd.h"
 
 
index c30f0dc..5919d0c 100644 (file)
@@ -3,8 +3,11 @@
 #endif /* HAVE_CONFIG_H */
 
 #include <direct.h>
+#include <sys/stat.h>
+#include <sys/types.h>
 
-#include "Evil.h"
+#include "evil_macro.h"
+#include "evil_stdio.h"
 #include "evil_private.h"
 
 #undef rename
index f1de75a..1f65609 100644 (file)
 EAPI int evil_rename(const char *src, const char *dst);
 
 /**
- * @def rename(src, dest)
- *
- * Wrapper around evil_rename().
- */
-#define rename(src, dst) evil_rename(src, dst)
-
-/**
  * @brief Wrap the _mkdir() function on Windows.
  *
  * @param[in] dirname The new dir name.
@@ -64,12 +57,5 @@ EAPI int evil_rename(const char *src, const char *dst);
  */
 EAPI int evil_mkdir(const char *dirname, mode_t mode);
 
-/**
- * @def mkdir(dirname, mode)
- *
- * Wrapper around evil_mkdir().
- */
-#define mkdir(dirname, mode) evil_mkdir(dirname, mode)
-
 
 #endif /* __EVIL_STDIO_H__ */
index c10eafb..bcafb3a 100644 (file)
@@ -19,7 +19,6 @@
 
 #include "evil_macro.h"
 #include "evil_stdlib.h"
-#include "evil_private.h"
 
 /*
  * Environment variable related functions
index 12411be..634565b 100644 (file)
@@ -2,8 +2,12 @@
 # include "config.h"
 #endif /* HAVE_CONFIG_H */
 
-#include "Evil.h"
-#include "evil_private.h"
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
+#include "evil_macro.h"
+#include "evil_string.h"
 
 
 /*
index 1bd716a..76c5a58 100644 (file)
@@ -7,7 +7,9 @@
 #include <ctype.h>
 #include <time.h>
 
-#include "Evil.h"
+#include "evil_macro.h"
+#include "evil_time.h"
+#include "evil_macro_wrapper.h"
 #include "evil_private.h"
 
 struct tm *
index c65115a..34607de 100644 (file)
 EAPI struct tm *evil_localtime_r(const time_t *timep, struct tm *result);
 
 /**
- * @def localtime_r(t, r)
- *
- * Wrapper around evil_localtime_r().
- */
-#ifdef localtime_r
-# undef localtime_r
-#endif
-#define localtime_r(t, r) evil_localtime_r(t, r)
-
-/**
  * @brief Convert a string representation of time to a time tm structure .
  *
  * @param buf The string to convert.
index c75f63f..27f6825 100644 (file)
@@ -3,6 +3,7 @@
 #endif /* HAVE_CONFIG_H */
 
 #include <errno.h>
+#include <direct.h>
 # include <sys/time.h>
 
 #ifndef WIN32_LEAN_AND_MEAN
@@ -11,8 +12,8 @@
 #include <winsock2.h>
 #undef WIN32_LEAN_AND_MEAN
 
-#include "Evil.h"
-#include "evil_private.h"
+#include "evil_macro.h"
+#include "evil_unistd.h"
 
 
 LONGLONG _evil_time_freq;
@@ -20,6 +21,8 @@ LONGLONG _evil_time_count;
 long     _evil_time_second;
 
 
+long _evil_systemtime_to_time(SYSTEMTIME st);
+
 long
 _evil_systemtime_to_time(SYSTEMTIME st)
 {
index 013fbf8..dbc6cfe 100644 (file)
@@ -113,13 +113,6 @@ EAPI ssize_t readlink(const char *path, char *buf, size_t bufsiz);
  */
 EAPI char *evil_getcwd(char *buffer, size_t size);
 
-/**
- * @def getcwd(b,s)
- *
- * Wrapper around evil_getcwd().
- */
-#define getcwd(b,s) evil_getcwd((b),(s))
-
 /*
  * Sockets and pipe related functions
  *
@@ -166,13 +159,6 @@ EAPI void evil_sockets_shutdown(void);
  */
 EAPI int evil_pipe(int *fds);
 
-/**
- * @def pipe(fds)
- *
- * Wrapper around evil_pipe().
- */
-#define pipe(fds) evil_pipe(fds)
-
 
 /**
  * @}
index 0fff26d..00ce36e 100644 (file)
 
 #include "evil_macro.h"
 #include "evil_util.h"
-#include "evil_private.h"
 
 
+/* static void _evil_error_display(const char *fct, LONG res); */
+static void _evil_last_error_display(const char *fct);
+
 wchar_t *
 evil_char_to_wchar(const char *text)
 {
@@ -159,15 +161,15 @@ evil_format_message(long err)
    return disp;
 }
 
-void
-_evil_error_display(const char *fct, LONG res)
-{
-   char *error;
+/* static void */
+/* _evil_error_display(const char *fct, LONG res) */
+/* { */
+/*    char *error; */
 
-   error = evil_format_message(res);
-   fprintf(stderr, "[Evil] [%s] ERROR (%ld): %s\n", fct, res, error);
-   free(error);
-}
+/*    error = evil_format_message(res); */
+/*    fprintf(stderr, "[Evil] [%s] ERROR (%ld): %s\n", fct, res, error); */
+/*    free(error); */
+/* } */
 
 char *
 evil_last_error_get(void)
@@ -178,7 +180,7 @@ evil_last_error_get(void)
    return evil_format_message(err);
 }
 
-void
+static void
 _evil_last_error_display(const char *fct)
 {
    char *error;