On Wed, 19 Jan 2005, Florian Fainelli <[EMAIL PROTECTED]> wrote: > > And when using the cross compiler, I get the following message : > > In file included from rsync.c:23: > rsync.h:360: warning: no semicolon at end of struct or union > rsync.h:360: error: parse error before "inode" > rsync.h:361: error: parse error before "dev" > rsync.h:361: warning: type defaults to `int' in declaration of `dev' > rsync.h:361: warning: data definition has no type or storage class
The problem code is: struct idev { uint64 inode; uint64 dev; }; uint64 is defined by this code earlier in rsync.h: #if (SIZEOF_LONG == 8) #define uint64 unsigned long #elif (SIZEOF_INT == 8) #define uint64 unsigned int #elif HAVE_LONGLONG #define uint64 unsigned long long #else /* As long as it gets... */ #define uint64 unsigned off_t #endif (Note to Wayne - isn't it dangerous to assume that off_t is 64 bits? I don't see any diagnostic test for uint64 less than 64 bits, like there is for int64 in io.c.) What values are used by rsync for these tests? Find out via: egrep "SIZEOF|LONGLONG" config.h Please copy the output into your reply. If the sizes are not 8 and HAVE_LONGLONG is 0 then it is using "unsigned off_t" for uint64, and if off_t is a typedef, a modifier such as unsigned is not allowed. That could be the source of your compilation errors. If HAVE_LONGLONG is 0, look in config.log for long long to see why the test for it failed. Does your cross compiler really not have it? -- John Van Essen Univ of MN Alumnus <[EMAIL PROTECTED]> -- To unsubscribe or change options: https://lists.samba.org/mailman/listinfo/rsync Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html