$NetBSD: patch-aa,v 1.3 2011/01/01 12:42:28 obache Exp $ --- freebsd.c.orig 2006-11-13 18:57:34.000000000 +0000 +++ freebsd.c @@ -14,7 +14,12 @@ #include #include +#ifdef __NetBSD__ +#include +#include +#else #include +#endif #include #include #include @@ -26,7 +31,13 @@ #include #include #include +#ifdef __DragonFly__ +#include +#endif #include +#ifdef __NetBSD__ +#include +#endif #include #include @@ -302,10 +313,18 @@ getsize(int fd) vlong size; struct stat s; int n; +#ifdef __DragonFly__ + struct disklabel32 lab; +#else struct disklabel lab; +#endif // Try getting disklabel from block dev +#ifdef __DragonFly__ + if ((n = ioctl(fd, DIOCGDINFO32, lab)) != -1) { +#else if ((n = ioctl(fd, DIOCGDINFO, lab)) != -1) { +#endif size = lab.d_secsize * lab.d_secperunit; } else { // must not be a block special dev