32 #if defined(_WIN32) && !defined(__MINGW32CE__)
41 static int win32_open(
const char *filename_utf8,
int oflag,
int pmode)
48 num_chars = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, filename_utf8, -1, NULL, 0);
51 filename_w =
av_mallocz(
sizeof(
wchar_t) * num_chars);
56 MultiByteToWideChar(CP_UTF8, 0, filename_utf8, -1, filename_w, num_chars);
58 fd = _wsopen(filename_w, oflag, SH_DENYNO, pmode);
61 if (fd != -1 || (oflag & O_CREAT))
66 return _sopen(filename_utf8, oflag, SH_DENYNO, pmode);
68 #define open win32_open
74 unsigned int mode = 0;
79 mode = va_arg(ap,
unsigned int);
86 fd = open(filename, flags, mode);
89 if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1)
101 const char *
m =
mode;
104 case 'r': access = O_RDONLY;
break;
105 case 'w': access = O_CREAT|O_WRONLY|O_TRUNC;
break;
106 case 'a': access = O_CREAT|O_WRONLY|O_APPEND;
break;
113 access &= ~(O_RDONLY | O_WRONLY);
115 }
else if (*m ==
'b') {
128 return fdopen(fd, mode);