fix eina_prefix.c on Windows (at least a part of it, as elm is not working with it)
authorcaro <caro@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 16 May 2011 17:39:20 +0000 (17:39 +0000)
committercaro <caro@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 16 May 2011 17:39:20 +0000 (17:39 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/eina@59454 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/eina_prefix.c

index 6174591..a8f7245 100644 (file)
 # include "config.h"
 #endif
 
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_ALLOCA_H
+# include <alloca.h>
+#elif defined __GNUC__
+# define alloca __builtin_alloca
+#elif defined _AIX
+# define alloca __alloca
+#elif defined _MSC_VER
+# include <malloc.h>
+# define alloca _alloca
+#else
+# ifndef HAVE_ALLOCA
+#  ifdef  __cplusplus
+extern "C"
+#  endif
+void *alloca (size_t);
+# endif
+#endif
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -175,7 +201,7 @@ _try_argv(Eina_Prefix *pfx, const char *argv0)
 
    /* 1. is argv0 abs path? */
 #ifdef _WIN32
-   if (argv0[0] && (argv0[1] == PSEP_C))
+   if (argv0[0] && (argv0[1] == ':'))
 #else
    if (argv0[0] == DSEP_C)
 #endif
@@ -456,11 +482,11 @@ eina_prefix_new(const char *argv0, void *symbol, const char *envprefix,
           {
              if (info_dl.dli_fname)
                {
-#ifdef _WIN32
-                  if (info_dl.dli_fname[0] && (info_dl.dli_fname[0] == PSEP_C))
-#else
+# ifdef _WIN32
+                  if (info_dl.dli_fname[0] && (info_dl.dli_fname[1] == ':'))
+# else
                   if (info_dl.dli_fname[0] == DSEP_C)
-#endif
+# endif
                      STRDUP_REP(pfx->exe_path, info_dl.dli_fname);
                }
           }