forked from enlightenment/efl
efl: add macro to swap Windows and Unix path separators.
This commit is contained in:
parent
b631878821
commit
9e745d4a2c
|
@ -102,10 +102,10 @@ _ecore_evas_engine_init(void)
|
||||||
for (j = 0; j < ((sizeof (paths) / sizeof (char*)) - 1); ++j)
|
for (j = 0; j < ((sizeof (paths) / sizeof (char*)) - 1); ++j)
|
||||||
for (i = j + 1; i < sizeof (paths) / sizeof (char*); ++i)
|
for (i = j + 1; i < sizeof (paths) / sizeof (char*); ++i)
|
||||||
if (paths[i] && paths[j] && !strcmp(paths[i], paths[j]))
|
if (paths[i] && paths[j] && !strcmp(paths[i], paths[j]))
|
||||||
{
|
{
|
||||||
free(paths[i]);
|
free(paths[i]);
|
||||||
paths[i] = NULL;
|
paths[i] = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < sizeof (paths) / sizeof (char*); ++i)
|
for (i = 0; i < sizeof (paths) / sizeof (char*); ++i)
|
||||||
if (paths[i])
|
if (paths[i])
|
||||||
|
@ -154,20 +154,23 @@ _ecore_evas_available_engines_get(void)
|
||||||
|
|
||||||
EINA_LIST_FOREACH(_engines_paths, l, path)
|
EINA_LIST_FOREACH(_engines_paths, l, path)
|
||||||
{
|
{
|
||||||
it = eina_file_direct_ls(path);
|
it = eina_file_direct_ls(path);
|
||||||
|
|
||||||
if (it)
|
if (it)
|
||||||
{
|
{
|
||||||
EINA_ITERATOR_FOREACH(it, info)
|
EINA_ITERATOR_FOREACH(it, info)
|
||||||
{
|
{
|
||||||
char tmp[PATH_MAX];
|
char tmp[PATH_MAX];
|
||||||
snprintf(tmp, sizeof (tmp), "%s/%s/" ECORE_EVAS_ENGINE_NAME,
|
snprintf(tmp, sizeof (tmp), "%s/%s/" ECORE_EVAS_ENGINE_NAME,
|
||||||
info->path, MODULE_ARCH);
|
info->path, MODULE_ARCH);
|
||||||
|
|
||||||
if (_file_exists(tmp))
|
if (_file_exists(tmp))
|
||||||
{
|
{
|
||||||
const char *name;
|
const char *name;
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
EVIL_PATH_SEP_WIN32_TO_UNIX(info->path);
|
||||||
|
#endif
|
||||||
name = strrchr(info->path, '/');
|
name = strrchr(info->path, '/');
|
||||||
if (name) name++;
|
if (name) name++;
|
||||||
else name = info->path;
|
else name = info->path;
|
||||||
|
@ -246,9 +249,9 @@ _ecore_evas_available_engines_get(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
eina_iterator_free(it);
|
eina_iterator_free(it);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_engines_available = result;
|
_engines_available = result;
|
||||||
|
|
|
@ -497,7 +497,6 @@ char *
|
||||||
eina_file_cleanup(Eina_Tmpstr *path)
|
eina_file_cleanup(Eina_Tmpstr *path)
|
||||||
{
|
{
|
||||||
char *result;
|
char *result;
|
||||||
char *p;
|
|
||||||
|
|
||||||
result = strdup(path ? path : "");
|
result = strdup(path ? path : "");
|
||||||
eina_tmpstr_del(path);
|
eina_tmpstr_del(path);
|
||||||
|
@ -505,12 +504,7 @@ eina_file_cleanup(Eina_Tmpstr *path)
|
||||||
if (!result)
|
if (!result)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
p = result;
|
EVIL_PATH_SEP_WIN32_TO_UNIX(result);
|
||||||
while (*p)
|
|
||||||
{
|
|
||||||
if (*p == '\\') *p = '/';
|
|
||||||
p++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -196,7 +196,6 @@ dladdr (const void *addr EVIL_UNUSED, Dl_info *info)
|
||||||
TCHAR tpath[PATH_MAX];
|
TCHAR tpath[PATH_MAX];
|
||||||
MEMORY_BASIC_INFORMATION mbi;
|
MEMORY_BASIC_INFORMATION mbi;
|
||||||
char *path;
|
char *path;
|
||||||
char *tmp;
|
|
||||||
size_t length;
|
size_t length;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
|
@ -236,13 +235,7 @@ dladdr (const void *addr EVIL_UNUSED, Dl_info *info)
|
||||||
path[PATH_MAX - 1] = '\0';
|
path[PATH_MAX - 1] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
/* replace '/' by '\' */
|
EVIL_PATH_SEP_UNIX_TO_WIN32(path);
|
||||||
tmp = path;
|
|
||||||
while (*tmp)
|
|
||||||
{
|
|
||||||
if (*tmp == '/') *tmp = '\\';
|
|
||||||
tmp++;
|
|
||||||
}
|
|
||||||
|
|
||||||
memcpy (info->dli_fname, path, length + 1);
|
memcpy (info->dli_fname, path, length + 1);
|
||||||
info->dli_fbase = NULL;
|
info->dli_fbase = NULL;
|
||||||
|
|
|
@ -19,8 +19,7 @@ struct DIR
|
||||||
DIR *opendir(char const *name)
|
DIR *opendir(char const *name)
|
||||||
{
|
{
|
||||||
DIR *dir;
|
DIR *dir;
|
||||||
char *tmp1;
|
char *tmp;
|
||||||
char *tmp2;
|
|
||||||
DWORD attr;
|
DWORD attr;
|
||||||
size_t l;
|
size_t l;
|
||||||
#ifdef UNICODE
|
#ifdef UNICODE
|
||||||
|
@ -71,39 +70,34 @@ DIR *opendir(char const *name)
|
||||||
}
|
}
|
||||||
|
|
||||||
l = strlen(name);
|
l = strlen(name);
|
||||||
tmp1 = (char *)malloc(sizeof(char) * l + 5);
|
tmp = (char *)malloc(sizeof(char) * l + 5);
|
||||||
if (!tmp1)
|
if (!tmp)
|
||||||
{
|
{
|
||||||
errno = ENOMEM;
|
errno = ENOMEM;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(tmp1, name, l);
|
memcpy(tmp, name, l);
|
||||||
memcpy(tmp1 + l, "\\*.*", 5);
|
memcpy(tmp + l, "\\*.*", 5);
|
||||||
|
|
||||||
tmp2 = tmp1;
|
EVIL_PATH_SEP_UNIX_TO_WIN32(tmp);
|
||||||
while (*tmp2)
|
|
||||||
{
|
|
||||||
if (*tmp2 == '/') *tmp2 = '\\';
|
|
||||||
tmp2++;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef UNICODE
|
#ifdef UNICODE
|
||||||
wname = evil_char_to_wchar(tmp1);
|
wname = evil_char_to_wchar(tmp);
|
||||||
if (!wname)
|
if (!wname)
|
||||||
{
|
{
|
||||||
errno = ENOMEM;
|
errno = ENOMEM;
|
||||||
free(tmp1);
|
free(tmp);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
dir->handle = FindFirstFile(wname, &dir->data);
|
dir->handle = FindFirstFile(wname, &dir->data);
|
||||||
free(wname);
|
free(wname);
|
||||||
#else
|
#else
|
||||||
dir->handle = FindFirstFile(tmp1, &dir->data);
|
dir->handle = FindFirstFile(tmp, &dir->data);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
free(tmp1);
|
free(tmp);
|
||||||
|
|
||||||
if (dir->handle == INVALID_HANDLE_VALUE)
|
if (dir->handle == INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
|
|
|
@ -31,12 +31,8 @@ evil_basename(char *path)
|
||||||
memcpy(_evil_basename_buf, "C:\\", 4);
|
memcpy(_evil_basename_buf, "C:\\", 4);
|
||||||
return _evil_basename_buf;
|
return _evil_basename_buf;
|
||||||
}
|
}
|
||||||
p2 = p1;
|
|
||||||
while (*p2)
|
EVIL_PATH_SEP_UNIX_TO_WIN32(p1);
|
||||||
{
|
|
||||||
if (*p2 == '/') *p2 = '\\';
|
|
||||||
p2++;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* remove trailing backslashes */
|
/* remove trailing backslashes */
|
||||||
p2 = p1 + (length - 1);
|
p2 = p1 + (length - 1);
|
||||||
|
|
|
@ -29,7 +29,6 @@ FILE *evil_fopen(const char *path, const char *mode)
|
||||||
{
|
{
|
||||||
FILE *f;
|
FILE *f;
|
||||||
char *filename;
|
char *filename;
|
||||||
char *tmp;
|
|
||||||
|
|
||||||
if (!path || !*path)
|
if (!path || !*path)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -56,13 +55,7 @@ FILE *evil_fopen(const char *path, const char *mode)
|
||||||
else
|
else
|
||||||
filename = _strdup(path);
|
filename = _strdup(path);
|
||||||
|
|
||||||
tmp = filename;
|
EVIL_PATH_SEP_UNIX_TO_WIN32(filename);
|
||||||
while (*tmp)
|
|
||||||
{
|
|
||||||
if (*tmp == '/')
|
|
||||||
*tmp = '\\';
|
|
||||||
tmp++;
|
|
||||||
}
|
|
||||||
|
|
||||||
printf ("fopen : %s\n", filename);
|
printf ("fopen : %s\n", filename);
|
||||||
|
|
||||||
|
@ -108,7 +101,6 @@ FILE *evil_fopen_native(const char *path, const char *mode)
|
||||||
{
|
{
|
||||||
HANDLE handle;
|
HANDLE handle;
|
||||||
char *filename;
|
char *filename;
|
||||||
char *tmp;
|
|
||||||
wchar_t *wfilename;
|
wchar_t *wfilename;
|
||||||
DWORD acs = GENERIC_READ;
|
DWORD acs = GENERIC_READ;
|
||||||
DWORD creation;
|
DWORD creation;
|
||||||
|
@ -138,13 +130,7 @@ FILE *evil_fopen_native(const char *path, const char *mode)
|
||||||
else
|
else
|
||||||
filename = _strdup(path);
|
filename = _strdup(path);
|
||||||
|
|
||||||
tmp = filename;
|
EVIL_PATH_SEP_UNIX_TO_WIN32(filename);
|
||||||
while (*tmp)
|
|
||||||
{
|
|
||||||
if (*tmp == '/')
|
|
||||||
*tmp = '\\';
|
|
||||||
tmp++;
|
|
||||||
}
|
|
||||||
printf ("fopen native : %s\n", filename);
|
printf ("fopen native : %s\n", filename);
|
||||||
|
|
||||||
wfilename = evil_char_to_wchar(filename);
|
wfilename = evil_char_to_wchar(filename);
|
||||||
|
|
|
@ -13,6 +13,20 @@
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define EVIL_PATH_SEP_SWAP(p, s1, s2) \
|
||||||
|
do { \
|
||||||
|
char *_evil_path_tmp; \
|
||||||
|
_evil_path_tmp = p; \
|
||||||
|
while (*_evil_path_tmp) \
|
||||||
|
{ \
|
||||||
|
if (*_evil_path_tmp == s1) \
|
||||||
|
*_evil_path_tmp = s2; \
|
||||||
|
_evil_path_tmp++; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define EVIL_PATH_SEP_WIN32_TO_UNIX(p) EVIL_PATH_SEP_SWAP(p, '\\', '/')
|
||||||
|
#define EVIL_PATH_SEP_UNIX_TO_WIN32(p) EVIL_PATH_SEP_SWAP(p, '/', '\\')
|
||||||
|
|
||||||
#ifdef _WIN32_WCE
|
#ifdef _WIN32_WCE
|
||||||
|
|
||||||
|
|
|
@ -169,7 +169,6 @@ evil_stat(const char *file_name, struct stat *st)
|
||||||
WIN32_FIND_DATA data;
|
WIN32_FIND_DATA data;
|
||||||
HANDLE handle;
|
HANDLE handle;
|
||||||
char *f;
|
char *f;
|
||||||
char *tmp;
|
|
||||||
wchar_t *file;
|
wchar_t *file;
|
||||||
int permission = 0;
|
int permission = 0;
|
||||||
|
|
||||||
|
@ -180,12 +179,7 @@ evil_stat(const char *file_name, struct stat *st)
|
||||||
if (!f)
|
if (!f)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
tmp = f;
|
EVIL_PATH_SEP_UNIX_TO_WIN32(f);
|
||||||
while (*tmp)
|
|
||||||
{
|
|
||||||
if (*tmp == '/') *tmp = '\\';
|
|
||||||
tmp++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!strcmp(file_name, "\\"))
|
if (!strcmp(file_name, "\\"))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue