msvcrt: set mode bits in _fstati64
Dmitry Timoshkov
dmitry at baikal.ru
Sun Dec 5 03:59:57 CST 2004
"Juan Lang" <juan_lang at yahoo.com> wrote:
> Got it. How's this?
> + dw = GetFileType(hand);
> + buf->st_mode = S_IREAD;
> + if (!(hfi.dwFileAttributes & FILE_ATTRIBUTE_READONLY))
> + buf->st_mode |= S_IWRITE;
> + if (hfi.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
> + buf->st_mode |= S_IFDIR;
> + else if (dw == FILE_TYPE_CHAR)
> + buf->st_mode |= S_IFCHR;
> + else
> + buf->st_mode |= S_IFREG;
> + TRACE(":dwFileAttributes = 0x%lx, mode set to 0x%x\n",hfi.dwFileAttributes,
> + buf->st_mode);
Looks better, except that according to MSDN "_S_IFREG bit is set if path specifies
an ordinary file or a device", so you need to add a check for FILE_TYPE_DISK. And
FILE_TYPE_PIPE perhaps should have _S_IFIFO set. Not sure if it's worth to write
a test case for it.
--
Dmitry.
More information about the wine-devel
mailing list