[uClibc-cvs] uClibc/libc/sysdeps/linux/cris/bits kernel_stat.h,1.1,1.2

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


Update of /var/cvs/uClibc/libc/sysdeps/linux/cris/bits
In directory winder:/tmp/cvs-serv18234/libc/sysdeps/linux/cris/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/cris/bits/kernel_stat.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- kernel_stat.h	16 Sep 2002 08:08:35 -0000	1.1
+++ kernel_stat.h	24 Jan 2003 11:44:06 -0000	1.2
@@ -17,7 +17,7 @@
 	unsigned long  st_ctime;
 };
 
-struct stat {
+struct kernel_stat {
 	unsigned short st_dev;
 	unsigned short __pad1;
 	unsigned long st_ino;
@@ -40,10 +40,10 @@
 	unsigned long  __unused5;
 };
 
-/* This matches struct stat64 in glibc2.1, hence the absolutely
+/* This matches struct kernel_stat64 in glibc2.1, hence the absolutely
  * insane amounts of padding around dev_t's.
  */
-struct stat64 {
+struct kernel_stat64 {
 	unsigned short	st_dev;
 	unsigned char	__pad0[10];
 




More information about the uClibc-cvs mailing list