Hi,

today I installed the GNU fileutils 4.1 on my Mac (Mac OS X 10.0.4, i. 
e. Darwin 1.3.7) to get color file lists. I found that for all kinds of 
long output of ls the first file in the output list was shown with the 
current date and time and not with the correct date and time from the 
files inode. The reason for this bug is that with Mac OS X 
gettimeofday() overwrites the global buffer thats address is returned by 
localtime(). But the ls output routine print_long_format() assumes that 
this global buffer remains intact. I´ve fixed the bug with the following 
patch for the source file ls.c.

Regards,
Bernhard Baehr


[cube:src/fileutils-4.1/src] bb% diff ls.c.orig ls.c
2455c2455
<   struct tm *when_local;
---
 >   struct tm *when_local_ptr, when_local;
2539c2539
<   if ((when_local = localtime (&when)))
---
 >   if ((when_local_ptr = localtime (&when)))
2544a2545,2548
 >        /* Save the global tm buffer returned by localtime(). With Mac 
OS X,
 >           get_current_time() (actually gettimeofday()) overwrites 
it. */
 >        when_local = *when_local_ptr;
 >
2566c2570
<         s = strftime (p, buf + bufsize - p - 1, fmt, when_local);
---
 >         s = strftime (p, buf + bufsize - p - 1, fmt, &when_local);


_______________________________________________
Bug-fileutils mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-fileutils

Reply via email to