Hi Olly,

>>>>> "Olly" == Olly Betts <o...@survex.com> writes:

    Olly> On 2010-01-15, Dirk-Jan C  Binnema wrote:
    >>>>>>> "Olly" == Olly Betts <o...@survex.com> writes:
    Olly> Not a full patch, but I already posted what this code should look like
    Olly> to handle both systems without d_type, and those which return 
    Olly> http://article.gmane.org/gmane.mail.notmuch.general/1044

    >> static gboolean
    >> _set_dtype (const char* path, struct dirent *entry)

    Olly> Underscore prefixed identifiers are reserved by ISO C at file-scope;
    Olly> using them yourself is undefined behaviour...

Ah, thanks for reminding, I thought it was __ and _C (capital), but you are

,---- (7.1.3 Reserved identifiers)
|  All identifiers that begin with an underscore and either an uppercase letter
|  or another underscore are always reserved for any use.
| — All identifiers that begin with an underscore are always reserved for use as
| identifiers with file scope in both the ordinary and tag name spaces.

    >> /* we only care about dirs, regular files and links */
    >> if (S_ISREG (statbuf.st_mode))
    entry-> d_type = DT_REG;
    >> else if (S_ISDIR (statbuf.st_mode))
    entry-> d_type = DT_DIR;
    >> else if (S_ISLNK (statbuf.st_mode))
    entry-> d_type = DT_LNK;

    Olly> This addresses the case where the FS returns DT_UNKNOWN for d_type,
    Olly> but doesn't deal with the case of platforms where struct dirent has
    Olly> no d_type member - from the Linux readdir man page:

    Olly>   The only fields in the dirent structure that are mandated by
    Olly>   POSIX.1 are: d_name[], of unspecified size, with at most NAME_MAX
    Olly>   characters preceding the terminating null byte; and (as an XSI
    Olly>   extension) d_ino.  The other fields are unstandardized, and not
    Olly>   present on all systems; see NOTES below for some further details.

    Olly> And in NOTES:

    Olly>   Other than Linux, the d_type field is available mainly only on BSD
    Olly>   systems.

Yes, my patch could me generalized a bit more, just like your patch could not
hardcode the '/'-separator :)

In practice though, what Unices in use today do not support d_type?

Best wishes,

Dirk-Jan C. Binnema                  Helsinki, Finland
e:d...@djcbsoftware.nl           w:www.djcbsoftware.nl
pgp: D09C E664 897D 7D39 5047 A178 E96A C7A1 017D DA3C
notmuch mailing list

Reply via email to