GNU/KFreeBSD portability fixes. (Addresses Debian Bug #239934)
diff --git a/lib/ext2fs/getsize.c b/lib/ext2fs/getsize.c
index 4cc4a71..0567a03 100644
--- a/lib/ext2fs/getsize.c
+++ b/lib/ext2fs/getsize.c
@@ -28,7 +28,6 @@
#include <linux/fd.h>
#endif
#ifdef HAVE_SYS_DISKLABEL_H
-#include <sys/param.h> /* for __FreeBSD_version */
#include <sys/ioctl.h>
#include <sys/disklabel.h>
#endif /* HAVE_SYS_DISKLABEL_H */
@@ -191,8 +190,18 @@
return 0;
}
#endif
+
#ifdef HAVE_SYS_DISKLABEL_H
-#if (defined(__FreeBSD__) && __FreeBSD_version < 500040) || defined(APPLE_DARWIN)
+#if defined(DIOCGMEDIASIZE)
+ {
+ off_t ms;
+ u_int bs;
+ if (ioctl(fd, DIOCGMEDIASIZE, &ms) >= 0) {
+ *retblocks = ms / blocksize;
+ return 0;
+ }
+ }
+#elif defined(DIOCGDINFO)
/* old disklabel interface */
part = strlen(file) - 1;
if (part >= 0) {
@@ -212,16 +221,7 @@
return 0;
}
}
-#else /* __FreeBSD_version < 500040 */
- {
- off_t ms;
- u_int bs;
- if (ioctl(fd, DIOCGMEDIASIZE, &ms) >= 0) {
- *retblocks = ms / blocksize;
- return 0;
- }
- }
-#endif /* __FreeBSD_version < 500040 */
+#endif /* defined(DIOCG*) */
#endif /* HAVE_SYS_DISKLABEL_H */
/*
diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c
index accd71f..b09e3e3 100644
--- a/lib/ext2fs/unix_io.c
+++ b/lib/ext2fs/unix_io.c
@@ -85,7 +85,9 @@
static void reuse_cache(io_channel channel, struct unix_private_data *data,
struct unix_cache *cache, unsigned long block);
-#if defined(__CYGWIN__) || defined(__FreeBSD__)
+/* __FreeBSD_kernel__ is defined by GNU/kFreeBSD - the FreeBSD kernel
+ * does not know buffered block devices - everything is raw. */
+#if defined(__CYGWIN__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
#define NEED_BOUNCE_BUFFER
#else
#undef NEED_BOUNCE_BUFFER