summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/v850
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2003-01-24 11:44:14 +0000
committerEric Andersen <andersen@codepoet.org>2003-01-24 11:44:14 +0000
commit85800279bcad0b3495ccc22374f42cd04675f9e4 (patch)
tree30f6754fb734191d6cd7d3fad292a94c02430418 /libc/sysdeps/linux/v850
parent8c29bb071a5d7f6cf8edb26b93bd9e48d4ad3df1 (diff)
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
Diffstat (limited to 'libc/sysdeps/linux/v850')
-rw-r--r--libc/sysdeps/linux/v850/bits/kernel_stat.h44
1 files changed, 2 insertions, 42 deletions
diff --git a/libc/sysdeps/linux/v850/bits/kernel_stat.h b/libc/sysdeps/linux/v850/bits/kernel_stat.h
index 435c2ce86..a4093aec0 100644
--- a/libc/sysdeps/linux/v850/bits/kernel_stat.h
+++ b/libc/sysdeps/linux/v850/bits/kernel_stat.h
@@ -1,8 +1,6 @@
/* Stat structure for linux/v850 */
-#ifndef __USE_FILE_OFFSET64
-
-struct stat
+struct kernel_stat
{
__kernel_dev_t st_dev;
__kernel_ino_t st_ino;
@@ -24,9 +22,7 @@ struct stat
unsigned long __unused5;
};
-#else /* __USE_FILE_OFFSET64 */
-
-struct stat
+struct kernel_stat64
{
__kernel_dev_t st_dev;
unsigned long __unused0;
@@ -60,39 +56,3 @@ struct stat
unsigned long __unused7; /* high 32 bits of ctime someday */
};
-#endif /* __USE_FILE_OFFSET64 */
-
-
-struct stat64
-{
- __kernel_dev_t st_dev;
- unsigned long __unused0;
- unsigned long __unused1;
-
- __kernel_ino64_t st_ino;
-
- __kernel_mode_t st_mode;
- __kernel_nlink_t st_nlink;
-
- __kernel_uid_t st_uid;
- __kernel_gid_t st_gid;
-
- __kernel_dev_t st_rdev;
- unsigned long __unused2;
- unsigned long __unused3;
-
- __kernel_loff_t st_size;
- unsigned long st_blksize;
-
- unsigned long __unused4; /* future possible st_blocks high bits */
- unsigned long st_blocks; /* Number 512-byte blocks allocated. */
-
- unsigned long st_atime;
- unsigned long __unused5;
-
- unsigned long st_mtime;
- unsigned long __unused6;
-
- unsigned long st_ctime;
- unsigned long __unused7; /* high 32 bits of ctime someday */
-};