mirror of
https://git.freebsd.org/ports.git
synced 2025-06-29 16:40:31 -04:00
- Remove FreeBSD 4.x code (USE_GCC=3.4+, USE_GETOPT_LONG and BROKEN). - Use ARCH instead of MACHINE_ARCH for possible future cross-compilation support. - Add UBLIO option, which uses devel/libublio for greatly improved speed (when reading an NTFS volume). Also print a warning when disabling UBLIO. - Add pkg-message mentioning UBLIO and this port's limitations. - Change mount.ntfs-fuse -> mount_ntfs-fuse manpage link and symlink to the binary in /usr/sbin to allow using with 'mount -t ntfs-fuse' and in /etc/fstab after mounting /usr. - Add a note in pkg-descr about the fusefs driver and ntfs-3g split project. - Add LOCK option to avoid access to the device while it's mounted. PR: ports/116287 Submitted by: alepulver (myself) Approved by: miwi, farrokhi (implicitly to miwi)
56 lines
1.4 KiB
C
56 lines
1.4 KiB
C
--- ./libntfs/device.c.orig Tue Jan 9 18:22:57 2007
|
|
+++ ./libntfs/device.c Mon Apr 30 13:40:54 2007
|
|
@@ -63,6 +63,9 @@
|
|
#ifdef HAVE_LINUX_HDREG_H
|
|
#include <linux/hdreg.h>
|
|
#endif
|
|
+#ifdef __FreeBSD__
|
|
+#include <sys/disk.h>
|
|
+#endif
|
|
|
|
#include "types.h"
|
|
#include "mst.h"
|
|
@@ -533,6 +536,17 @@
|
|
}
|
|
}
|
|
#endif
|
|
+#ifdef DIOCGMEDIASIZE
|
|
+ { off_t size;
|
|
+
|
|
+ if (dev->d_ops->ioctl(dev, DIOCGMEDIASIZE, &size) >= 0) {
|
|
+ ntfs_log_debug("DIOCGMEDIASIZE nr bytes = %llu (0x%llx)\n",
|
|
+ (unsigned long long)size,
|
|
+ (unsigned long long)size);
|
|
+ return (s64)size / 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.
|
|
@@ -681,7 +695,24 @@
|
|
return sect_size;
|
|
}
|
|
}
|
|
-#else
|
|
+#elif defined(DIOCGSECTORSIZE)
|
|
+ /*
|
|
+ * XXX On FreeBSD (where we have DIOCGSECTORSIZE) the low-level I/O
|
|
+ * system already knows the sector size, and doing an ioctl is needless.
|
|
+ * However, I don't know how to extract that information cleanly,
|
|
+ * without letting a bunch of platform specific #ifdef-s to sneak in.
|
|
+ * So now I rather just re-do the ioctl...
|
|
+ */
|
|
+ {
|
|
+ size_t sect_size = 0;
|
|
+
|
|
+ if (!dev->d_ops->ioctl(dev, DIOCGSECTORSIZE, §_size)) {
|
|
+ ntfs_log_debug("DIOCGSECTORSIZE sector size = %d bytes\n",
|
|
+ (int)sect_size);
|
|
+ return sect_size;
|
|
+ }
|
|
+ }
|
|
+#else
|
|
errno = EOPNOTSUPP;
|
|
#endif
|
|
return -1;
|