Alex Riesen schrieb: > Besides, the output of the fast stat and lstat is not compatible > with cygwin's fstat with regard to uid, gid and ctime fields. Why do you need this? I don't think that fstat() is used in a critical path. Do you see problems with the incompatible fields? > This is not strictly related to the other stat patches. The fstat > code is shamelessly stolen from the mingw port, sorry. I wouldn't call it "stolen", but "copied". Because if you copy it, it becomes your responsibility and all copied bugs are yours ;) > BTW, why do we have to #undef fstat, but not stat/lstat? Because stat and lstat are #defined with an argument list, but in those instances where the cygwin version of stat/lstat is meant, they are used *without* argument list (see cygwin_stat/lstat_stub), and no macro expansion happens, and therefore we don't need to #undef the macro. OTOH, do_fstat calls into cygwin's fstat() if the file handle is not a file and uses an argument list that would cause a macro expansion if it were not #undef'd: > +#undef fstat > +static int cygwin_fstat(int fd, struct stat *buf) > +{ > + HANDLE fh = (HANDLE)_get_osfhandle(fd); > + BY_HANDLE_FILE_INFORMATION fdata; > + > + if (fh == INVALID_HANDLE_VALUE) { > + errno = EBADF; > + return -1; > + } > + /* direct non-file handles to cygwin's fstat() */ > + if (GetFileType(fh) != FILE_TYPE_DISK) > + return fstat(fd, buf); We never do that for stat/lstat. -- Hannes -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html