mirror of
https://git.freebsd.org/ports.git
synced 2025-06-11 07:40:40 -04:00
- Integrate most changes from -devel slaves (e.g. r392432, r397252) - Get revision based on GH_TAGNAME (from JSON for releases) - Take maintainership Changes: https://android.googlesource.com/platform/system/core/+log/android-5.1.1_r4..android-6.0.0_r1/adb Changes: https://android.googlesource.com/platform/system/core/+log/android-5.1.1_r4..android-6.0.0_r1/fastboot Approved by: kevlo (adb maintainer) Differential Revision: https://reviews.freebsd.org/D3842
56 lines
1.6 KiB
C
56 lines
1.6 KiB
C
--- ext4_utils/ext4_utils.c.orig 2012-12-18 23:27:26 UTC
|
|
+++ ext4_utils/ext4_utils.c
|
|
@@ -36,8 +36,16 @@
|
|
|
|
#if defined(__linux__)
|
|
#include <linux/fs.h>
|
|
-#elif defined(__APPLE__) && defined(__MACH__)
|
|
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
|
|
+ || (defined(__APPLE__) && defined(__MACH__))
|
|
#include <sys/disk.h>
|
|
+#elif defined(__sun)
|
|
+#include <sys/dkio.h>
|
|
+#elif defined(__Bitrig__) || defined(__NetBSD__) || defined(__OpenBSD__)
|
|
+#include <sys/disklabel.h>
|
|
+#include <sys/dkio.h>
|
|
+#elif defined(__DragonFly__)
|
|
+#include <sys/diskslice.h>
|
|
#endif
|
|
|
|
#include "ext4.h"
|
|
@@ -53,6 +61,8 @@ struct sparse_file *ext4_sparse_file;
|
|
jmp_buf setjmp_env;
|
|
|
|
/* Definition from RFC-4122 */
|
|
+/* XXX <sys/uuid.h> defines slightly different |struct uuid| */
|
|
+#define uuid ext4_uuid
|
|
struct uuid {
|
|
u32 time_low;
|
|
u16 time_mid;
|
|
@@ -383,10 +391,24 @@ static u64 get_block_device_size(int fd)
|
|
u64 size = 0;
|
|
int ret;
|
|
|
|
-#if defined(__linux__)
|
|
+#if defined(BLKGETSIZE64)
|
|
ret = ioctl(fd, BLKGETSIZE64, &size);
|
|
-#elif defined(__APPLE__) && defined(__MACH__)
|
|
+#elif defined(DKIOCGETBLOCKCOUNT)
|
|
ret = ioctl(fd, DKIOCGETBLOCKCOUNT, &size);
|
|
+#elif defined(DIOCGMEDIASIZE)
|
|
+ ret = ioctl(fd, DIOCGMEDIASIZE, &size);
|
|
+#elif defined(DKIOCGMEDIAINFO)
|
|
+ struct dk_minfo minfo;
|
|
+ ret = ioctl(fd, DKIOCGMEDIAINFO, &minfo);
|
|
+ size = minfo.dki_lbsize * minfo.dki_capacity;
|
|
+#elif defined(DIOCGDINFO)
|
|
+ struct disklabel dl;
|
|
+ ret = ioctl(fd, DIOCGDINFO, &dl);
|
|
+ size = dl.d_secsize * dl.d_nsectors * dl.d_ntracks * dl.d_ncylinders;
|
|
+#elif defined(DIOCGPART)
|
|
+ struct partinfo pi;
|
|
+ ret = ioctl(fd, DIOCGPART, &pi);
|
|
+ size = pi.media_size;
|
|
#else
|
|
close(fd);
|
|
return 0;
|