Yes, it's allowed. All names beginning with st_* are reserved if you include
the relevant header files. rdfind has no business using such names.

Thomas


On Sun, Jan 9, 2011 at 4:11 PM, Pino Toscano <[email protected]>wrote:

> Hi,
>
> just looking at a recent build failure in Debian, "rdfind".
> There's some code like:
>
> FileInfo.hh:
>  ...
>  struct Fileinfostat {
>    filesizetype st_size;//size
>    unsigned long st_ino;//inode
>    unsigned long st_dev;//device
>    ...
>  };
>
> FileInfo.cc:
>  #include "FileInfo.hh"
>  ...
>  #include <sys/stat.h>
>  ...
>  struct stat info;
>  ...
>  instance_of_struct_Fileinfostat.st_dev = info.st_dev;
>
> Such code (a simplified version of which is attached) fails to compile
> on Hurd, because in bits/stat.h there is:
>
> struct stat
>  {
>    ...
>    __fsid_t st_fsid;           /* File system ID.  */
> #define st_dev  st_fsid
>
> Is this allowed by POSIX (most probly I'm missing the right part(s) of
> it)?
> If not, would a "fix" for the above be swapping member and define, like:
>
>    __fsid_t st_dev;           /* File system ID.  */
> #define st_fsid  st_dev
>
> ?
> Thanks,
> --
> Pino Toscano
>

Reply via email to