Apparently DKIOCGETBLOCKCOUNT returns a 64-bit number (long long) not a 32-bit number which is probably why you get a floating point exception.
Code:
long long my_n_sector;
ret = ioctl(fd,DKIOCGETBLOCKCOUNT,&my_n_sector);
*n_sector = (long)my_n_sector;
And there you have it! Thanks, gibbed!
Working changelog:
CODEEia:wbfs eia$ diff -u libwbfs/libwbfs_linux.c libwbfs/libwbfs_macosx.c
--- libwbfs/libwbfs_linux.cÂÂÂÂ2009-03-28 14:52:50.000000000 +0100
+++ libwbfs/libwbfs_macosx.cÂÂÂÂ2009-03-31 18:56:09.000000000 +0200
@@ -1,9 +1,9 @@
-#ifdef __linux__
+#ifdef __APPLE__
#include
#include
#include
#include
-#include
+#include
#include
#include
@@ -51,7 +51,7 @@
ÂÂÂÂÂÂÂÂ if(fd