diff --git a/legacy/evil/ChangeLog b/legacy/evil/ChangeLog index c696d07355..b586a3f788 100644 --- a/legacy/evil/ChangeLog +++ b/legacy/evil/ChangeLog @@ -1,3 +1,8 @@ +2009-02-16 Vincent Torri + + * src/lib/evil_stdio.c: + replace / by \ in the path passed to fopen + 2009-02-01 Vincent Torri * doc/Makefile.am: diff --git a/legacy/evil/src/lib/evil_stdio.c b/legacy/evil/src/lib/evil_stdio.c index 9f45d48ff0..59c8752465 100644 --- a/legacy/evil/src/lib/evil_stdio.c +++ b/legacy/evil/src/lib/evil_stdio.c @@ -30,11 +30,12 @@ FILE *evil_fopen(const char *path, const char *mode) { FILE *f; char *filename; + char *tmp; if (!path || !*path) return NULL; - if (*path != '\\') + if ((*path != '\\') && (*path != '/')) { char buf[PATH_MAX]; int l1; @@ -54,11 +55,20 @@ FILE *evil_fopen(const char *path, const char *mode) filename[l1 + 1 + l2] = '\0'; } else - filename = (char *)path; + filename = _strdup(path); + + tmp = filename; + while (*tmp) + { + if (*tmp == '/') + *tmp = '\\'; + tmp++; + } + + printf ("fopen : %s\n", filename); f = fopen(filename, mode); - if (*path != '\\') - free(filename); + free(filename); return f; } @@ -78,6 +88,7 @@ FILE *evil_fopen_native(const char *path, const char *mode) { HANDLE handle; char *filename; + char *tmp; wchar_t *wfilename; DWORD access = GENERIC_READ; DWORD creation; @@ -85,7 +96,7 @@ FILE *evil_fopen_native(const char *path, const char *mode) if (!path || !*path || !mode || !*mode) return NULL; - if (*path != '\\') + if ((*path != '\\') && (*path != '/')) { char buf[PATH_MAX]; int l1; @@ -105,11 +116,19 @@ FILE *evil_fopen_native(const char *path, const char *mode) filename[l1 + 1 + l2] = '\0'; } else - filename = (char *)path; + filename = _strdup(path); + + tmp = filename; + while (*tmp) + { + if (*tmp == '/') + *tmp = '\\'; + tmp++; + } + printf ("fopen native : %s\n", filename); wfilename = evil_char_to_wchar(filename); - if (*path != '\\') - free(filename); + free(filename); if (!wfilename) return NULL;