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
struct MyTest
{
  int st_dev;
};

#include <sys/stat.h>

int main()
{
  struct MyTest t;
  t.st_dev = 0;

  return 0;
}

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to