Completes the fix for the file name in Windows.

This commit is contained in:
Andrea Mazzoleni 2011-05-11 21:12:16 +02:00
parent 4d99094462
commit d2a38b85db
2 changed files with 22 additions and 1 deletions

17
mingw.c
View file

@ -231,6 +231,11 @@ int windows_stat(const char* file, struct windows_stat* st)
return 0;
}
int windows_access(const char* file, int mode)
{
return _waccess(u8tou16(file), mode);
}
int stat_inode(const char* file, struct windows_stat* st)
{
BY_HANDLE_FILE_INFORMATION info;
@ -313,7 +318,17 @@ FILE* windows_fopen(const char* file, const char* mode)
int windows_open(const char* file, int flags, ...)
{
return _wopen(u8tou16(file), flags);
va_list args;
int ret;
va_start(args, flags);
if ((flags & O_CREAT) != 0)
ret = _wopen(u8tou16(file), flags, va_arg(args, int));
else
ret = _wopen(u8tou16(file), flags);
va_end(args);
return ret;
}
windows_dir* windows_opendir(const char* dir)

View file

@ -32,6 +32,7 @@
#define fopen windows_fopen
#define open windows_open
#define stat windows_stat
#define access windows_access
#define off_t off64_t
#define lseek lseek64
#define fstat windows_fstat
@ -68,6 +69,11 @@ int windows_fstat(int fd, struct windows_stat* st);
*/
int windows_stat(const char* file, struct windows_stat* st);
/**
* Like the C access().
*/
int windows_access(const char* file, int mode);
/**
* Like the C stat() with inode information.
* It doesn't work for all kind of files and directories. For example "\System Volume Information" cannot be opened.