Xabier Oneca -- xOneca wrote:
Great job, Christian!
Thanks!
I was curios by how many changes were nedded to port Busybox and was
reading the patch file you linked.
Only one note...
- date.c: Use clock_gettime() if syscall.h is not available.
>From the patch linked, this the one for date:
--- origsrc/busybox-1.23.2/coreutils/date.c 2015-03-23 04:07:18.000000000
+0100
+++ src/busybox-1.23.2/coreutils/date.c 2015-06-25 21:16:30.764288700 +0200
@@ -138,7 +138,7 @@
//usage: "Wed Apr 12 18:52:41 MDT 2000\n"
#include "libbb.h"
-#if ENABLE_FEATURE_DATE_NANO
+#if ENABLE_FEATURE_DATE_NANO && defined(HAVE_SYS_SYSCALL_H)
# include <sys/syscall.h>
#endif
@@ -260,10 +260,13 @@ int date_main(int argc UNUSED_PARAM, cha
#endif
} else {
#if ENABLE_FEATURE_DATE_NANO
+# ifdef HAVE_SYS_SYSCALL_H
/* libc has incredibly messy way of doing this,
* typically requiring -lrt. We just skip all this mess */
syscall(__NR_clock_gettime, CLOCK_REALTIME, &ts);
-#else
+# else
+ clock_gettime(CLOCK_REALTIME, &ts);
+# endif
time(&ts.tv_sec);
#endif
}
There, before the change, time() was called when *not*
ENABLE_FEATURE_DATE_NANO. Now, with your patch it is called if it
*is*. Is this change intentional?
No! I accidentally dropped the #else. Thanks for catching.
This breaks builds with !ENABLE_FEATURE_DATE_NANO.
In the ENABLE_FEATURE_DATE_NANO case, the bug is not visible except when
tv_sec increments between clock_gettime() and time() call and the "%N"
format is actually used.
Correct one:
#if ENABLE_FEATURE_DATE_NANO
+# ifdef HAVE_SYS_SYSCALL_H
/* libc has incredibly messy way of doing this,
* typically requiring -lrt. We just skip all this mess */
syscall(__NR_clock_gettime, CLOCK_REALTIME, &ts);
+# else
+ clock_gettime(CLOCK_REALTIME, &ts);
+# endif
#else
time(&ts.tv_sec);
#endif
Cheers,
Christian
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox