mirror of
https://github.com/Stichting-MINIX-Research-Foundation/pkgsrc-ng.git
synced 2025-08-05 10:48:03 -04:00
40 lines
1.2 KiB
Plaintext
40 lines
1.2 KiB
Plaintext
$NetBSD: patch-ae,v 1.6 2014/03/30 23:58:19 jakllsch Exp $
|
|
|
|
--- libntfs/device.c.orig 2007-09-26 18:28:34.000000000 +0000
|
|
+++ libntfs/device.c
|
|
@@ -85,6 +85,10 @@
|
|
# define BLKBSZSET _IOW(0x12,113,size_t) /* Set device block size in bytes. */
|
|
#endif
|
|
|
|
+#if defined(__NetBSD__)
|
|
+#include <sys/disklabel.h> /* XXX autoconf this ? */
|
|
+#endif
|
|
+
|
|
/**
|
|
* ntfs_device_alloc - allocate an ntfs device structure and pre-initialize it
|
|
* @name: name of the device (must be present)
|
|
@@ -599,6 +603,23 @@ s64 ntfs_device_size_get(struct ntfs_dev
|
|
}
|
|
}
|
|
#endif
|
|
+#ifdef DIOCGDINFO
|
|
+ {
|
|
+ struct stat st;
|
|
+ if (dev->d_ops->stat(dev, &st) >= 0) {
|
|
+ struct disklabel disklabel;
|
|
+ int secsize;
|
|
+ s64 psize;
|
|
+ if (dev->d_ops->ioctl(dev, DIOCGDINFO, &disklabel) >= 0) {
|
|
+ secsize = disklabel.d_secsize;
|
|
+ psize = disklabel.d_partitions[DISKPART(st.st_rdev)].p_size;
|
|
+ ntfs_log_debug("DIOCGDINFO part %d nr %d byte blocks = %lld (0x%llx)\n",
|
|
+ DISKPART(st.st_rdev), secsize, psize, psize);
|
|
+ return psize * secsize / block_size;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+#endif
|
|
/*
|
|
* We couldn't figure it out by using a specialized ioctl,
|
|
* so do binary search to find the size of the device.
|