$NetBSD: patch-ac,v 1.3 2008/09/21 16:16:06 joerg Exp $ --- lib/blkid/getsize.c.orig 2008-06-30 00:05:45 +0300 +++ lib/blkid/getsize.c @@ -32,6 +32,9 @@ #ifdef HAVE_SYS_DISKLABEL_H #include #endif +#ifdef __DragonFly__ +#include +#endif #ifdef HAVE_SYS_DISK_H #ifdef HAVE_SYS_QUEUE_H #include /* for LIST_HEAD */ @@ -86,8 +89,13 @@ blkid_loff_t blkid_get_dev_size(int fd) #endif #ifdef HAVE_SYS_DISKLABEL_H int part = -1; +#ifdef __DragonFly__ + struct disklabel32 lab; + struct partition32 *pp; +#else struct disklabel lab; struct partition *pp; +#endif char ch; struct stat st; #endif /* HAVE_SYS_DISKLABEL_H */ @@ -144,7 +152,11 @@ blkid_loff_t blkid_get_dev_size(int fd) */ if ((fstat(fd, &st) >= 0) && (S_ISBLK(st.st_mode) || S_ISCHR(st.st_mode))) part = st.st_rdev & 7; +#ifdef __DragonFly__ + if (part >= 0 && (ioctl(fd, DIOCGDINFO32, (char *)&lab) >= 0)) { +#else if (part >= 0 && (ioctl(fd, DIOCGDINFO, (char *)&lab) >= 0)) { +#endif pp = &lab.d_partitions[part]; if (pp->p_size) return pp->p_size << 9;