From 585a3394df2bbfa863af619a5ea8a1d5a7b88266 Mon Sep 17 00:00:00 2001 From: Marcus von Appen Date: Sat, 7 Jun 2014 09:50:18 +0200 Subject: [PATCH] - Cast the struct stat sb.st_ino field to machine_int_t explicitly to avoid a cast error in MP_OBJ_NEW_SMALL_INT(). This is necessary for FreeBSD, where st_ino is of different size - If MP_CLOCKS_PER_SEC is defined on the target host, simply define CLOCK_DIV as a fraction, regardless of the value of MP_CLOCKS_PER_SEC. FreeBSD uses a non-POSIX compliant value of 128 for CLOCKS_PER_SEC --- unix/modos.c | 2 +- unix/modtime.c | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/unix/modos.c b/unix/modos.c index a6be4bfff0..657958d04c 100644 --- a/unix/modos.c +++ b/unix/modos.c @@ -52,7 +52,7 @@ STATIC mp_obj_t mod_os_stat(mp_obj_t path_in) { mp_obj_tuple_t *t = mp_obj_new_tuple(10, NULL); t->items[0] = MP_OBJ_NEW_SMALL_INT((machine_int_t)sb.st_mode); - t->items[1] = MP_OBJ_NEW_SMALL_INT(sb.st_ino); + t->items[1] = MP_OBJ_NEW_SMALL_INT((machine_int_t)sb.st_ino); t->items[2] = MP_OBJ_NEW_SMALL_INT((machine_int_t)sb.st_dev); t->items[3] = MP_OBJ_NEW_SMALL_INT((machine_int_t)sb.st_nlink); t->items[4] = MP_OBJ_NEW_SMALL_INT((machine_int_t)sb.st_uid); diff --git a/unix/modtime.c b/unix/modtime.c index f957b96784..3cc09e3cd8 100644 --- a/unix/modtime.c +++ b/unix/modtime.c @@ -55,10 +55,8 @@ void msec_sleep_tv(struct timeval *tv) { #define MP_CLOCKS_PER_SEC CLOCKS_PER_SEC #endif -#if defined(MP_CLOCKS_PER_SEC) && (MP_CLOCKS_PER_SEC == 1000000) // POSIX -#define CLOCK_DIV 1000.0 -#elif defined(MP_CLOCKS_PER_SEC) && (MP_CLOCKS_PER_SEC == 1000) // WIN32 -#define CLOCK_DIV 1.0 +#if defined(MP_CLOCKS_PER_SEC) +#define CLOCK_DIV (MP_CLOCKS_PER_SEC / 1000.0) #else #error Unsupported clock() implementation #endif