From: Alex Riesen Date: Thu, 19 Mar 2009 15:14:31 GMT Subject: Re: [PATCH] Add a fast version of fstat to cygwin port Message-ID: <81b0412b0903190814i254ee2d1yc39035e78d7ad3d8@mail.gmail.com> In-Reply-To: <49C25CAE.6000003@viscovery.net> 2009/3/19 Johannes Sixt : > Alex Riesen schrieb: >> 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: > ... >> +     /* 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. I see. Not immediately obvious :) Thanks!