OSDN Git Service

Ok, people are probably going to hate me for this... This commit changes the
authorEric Andersen <andersen@codepoet.org>
Fri, 24 Jan 2003 11:44:14 +0000 (11:44 -0000)
committerEric Andersen <andersen@codepoet.org>
Fri, 24 Jan 2003 11:44:14 +0000 (11:44 -0000)
commit85800279bcad0b3495ccc22374f42cd04675f9e4
tree30f6754fb734191d6cd7d3fad292a94c02430418
parent8c29bb071a5d7f6cf8edb26b93bd9e48d4ad3df1
Ok, people are probably going to hate me for this...  This commit changes the
type of 'struct stat' and 'struct stat64' so they use consistant types.

This change is the result of a bug I found while trying to use GNU tar.  The
problem was caused by our using kernel types within struct stat and trying to
directly compare these values with standard types.  Trying an 'if (a < b)' when
'a' is an 'unsigned long' and 'b' is an 'int' leads to very different results
then when comparing entities of the same type (i.e. time_t values)....
Grumble.  Nasty stuff, but I'm glad I got this out of the way now.

As a result of this fix, uClibc 0.9.17 will not be binary compatible with
earlier releases.  I have always warned people this can and will happen.
 -Erik
16 files changed:
ldso/ldso/ld_syscall.h
libc/sysdeps/linux/alpha/bits/kernel_stat.h
libc/sysdeps/linux/arm/bits/kernel_stat.h
libc/sysdeps/linux/common/bits/kernel_stat.h
libc/sysdeps/linux/common/bits/stat.h
libc/sysdeps/linux/common/syscalls.c
libc/sysdeps/linux/common/xstatconv.c [new file with mode: 0644]
libc/sysdeps/linux/cris/bits/kernel_stat.h
libc/sysdeps/linux/h8300/bits/kernel_stat.h
libc/sysdeps/linux/i386/bits/kernel_stat.h
libc/sysdeps/linux/m68k/bits/kernel_stat.h
libc/sysdeps/linux/mips/bits/kernel_stat.h
libc/sysdeps/linux/powerpc/bits/kernel_stat.h
libc/sysdeps/linux/sh/bits/kernel_stat.h
libc/sysdeps/linux/sparc/bits/kernel_stat.h
libc/sysdeps/linux/v850/bits/kernel_stat.h