This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Behavior of stat() changed from NT to Win2000/XP


On Tue, May 27, 2003 at 11:19:30AM -0400, Igor Pechtchanski wrote:
> On Tue, 27 May 2003, Peter Davis wrote:
> 
> > Corinna Vinschen <corinna-cygwin@cygwin.com> wrote in 20030526141311.GK875@cygbert.vinschen.de:">news:20030526141311.GK875@cygbert.vinschen.de:
> >
> > > On Mon, May 26, 2003 at 09:58:11AM -0400, Peter Davis wrote:
> > >> On Windows NT, the Cygwin stat function returns a non-zero value in
> > >> the st_size field when called on a directory.  However, in Windows
> > >> 2000 and Windows XP, this same function returns 0 for st_size for a
> > >> directory.  This change in behavior has broken some features of mutt,
> > >> and possible other programs as well.
> > >> [...]
> > >> Is there some Cygwin setting or configuration option that controls
> > >> this?
> > >
> > > That's Windows, actually.  This value is returned for directories
> > > by the FindFile routines.  Nothing we can do about it.  However, if
> > > mutt depends on the st_size of a directory, that's a problem in mutt.
> >
> > So this is a case where Cygwin fails to emulate *nix behavior.  I assume
> > it works correctly on various *nix implementations.  You may consider
> > that a Windows issue, but if the purpose of Cygwin is to provide a
> > porting environment, then that's a shortcoming of Cygwin.
> >
> > The mutt developers aren't particularly concerned with Cygwin or
> > Windows, so they don't regard this as an issue.  I don't see why this is
> > a mutt problem.  They assume that stat() works correctly.  I'm not sure
> > who's responsible for the Cygwin build of mutt, or for including it in
> > Cygwin at all, but that's something to be considered in the future.
> >
> > I'm guessing there's no problem with mbox mail folders, since they're
> > just ordinary files.  The problem comes in because maildir and MH
> > formats us directories as mail folders.
> >
> > BTW, if anyone knows how to build mutt under Cygwin, I'm *dying* to find
> > out.  I can work around the stat() problem, but I have not succeeded in
> > building a mutt for Cygwin that doesn't crash on opening certain
> > messages.
> >
> > Thanks,
> > -pd
> 
> The Single Unix Specification has this to say about the st_size field of
> the stat structure:
> 
>   off_t     st_size    file size in bytes (if file is a regular file)
>                                            ^^^^^^^^^^^^^^^^^^^^^^^^^
> This means, IMO, that the value for directories is unspecified, and a
> portable application cannot rely on it at all.

Ok, I stand corrected.  Thanks, Igor.  In fact, the mutt code seems to
do most of the size checking in code which can be conditionally
compiled or not.  For some reason, this particular test was not
conditionalized.

Thanks,

-pd


-- 
--------
                             Peter Davis
               Funny stuff at http://www.pfdstudio.com
                 The artwork formerly shown as prints
    List of resources for children's writers and illustrators at:
                  http://www.pfdstudio.com/cwrl.html

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]