[uClibc-cvs] uClibc/libc/sysdeps/linux/v850/bits kernel_stat.h,1.2,1.3

Erik Andersen andersen at codepoet.org
Fri Jan 24 11:44:18 UTC 2003


Update of /var/cvs/uClibc/libc/sysdeps/linux/v850/bits
In directory winder:/tmp/cvs-serv18234/libc/sysdeps/linux/v850/bits

Modified Files:
	kernel_stat.h 
Log Message:
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


Index: kernel_stat.h
===================================================================
RCS file: /var/cvs/uClibc/libc/sysdeps/linux/v850/bits/kernel_stat.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- kernel_stat.h	30 Aug 2002 09:15:48 -0000	1.2
+++ kernel_stat.h	24 Jan 2003 11:44:14 -0000	1.3
@@ -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 @@
   unsigned long		__unused5;
 };
 
-#else /* __USE_FILE_OFFSET64 */
-
-struct stat
+struct kernel_stat64
 {
   __kernel_dev_t	st_dev;
   unsigned long		__unused0;
@@ -60,39 +56,3 @@
   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 */
-};




More information about the uClibc-cvs mailing list