diff options
| author | Lexi Winter <ivy@FreeBSD.org> | 2025-12-01 03:19:41 +0000 |
|---|---|---|
| committer | Lexi Winter <ivy@FreeBSD.org> | 2025-12-01 03:19:41 +0000 |
| commit | 2e80774d0b20d167bc0a9e2b63dafbfb171c0d22 (patch) | |
| tree | 25f0138e1af8902b92dacc8cce09b267447c17db /devel/efivar/files/patch-src_gpt.c | |
| parent | f85f2b2d6e5b7ed869376eb4b180c3a74a5c5da9 (diff) | |
| parent | 1a30da80670973368b399f2b01fe9c04b91a1273 (diff) | |
Merge remote-tracking branch 'freebsd/main' into lf/mainlf/main
Diffstat (limited to 'devel/efivar/files/patch-src_gpt.c')
| -rw-r--r-- | devel/efivar/files/patch-src_gpt.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/devel/efivar/files/patch-src_gpt.c b/devel/efivar/files/patch-src_gpt.c new file mode 100644 index 000000000000..87d6d523d72a --- /dev/null +++ b/devel/efivar/files/patch-src_gpt.c @@ -0,0 +1,59 @@ +--- src/gpt.c.orig 2024-01-31 20:08:46 UTC ++++ src/gpt.c +@@ -16,6 +16,11 @@ + #include <stdio.h> + #include <stdlib.h> + #include <string.h> ++#if defined(__FreeBSD__) ++# include <sys/disk.h> ++# undef LIST_HEAD ++#endif ++#include <sys/ioctl.h> + #include <sys/mount.h> + #include <sys/param.h> + #include <sys/stat.h> +@@ -60,6 +65,7 @@ is_pmbr_valid(legacy_mbr *mbr) + return (magic && found); + } + ++#if defined(__linux__) + /** + * kernel_has_blkgetsize64() + * +@@ -92,6 +98,7 @@ kernel_has_blkgetsize64(void) + return 0; + return 1; + } ++#endif + + /************************************************************ + * _get_num_sectors +@@ -114,6 +121,8 @@ _get_num_sectors(int filedes) + unsigned long sectors=0; + uint64_t bytes=0; + int rc; ++ ++#if defined(__linux__) + if (kernel_has_blkgetsize64()) { + rc = ioctl(filedes, BLKGETSIZE64, &bytes); + if (!rc) +@@ -125,6 +134,19 @@ _get_num_sectors(int filedes) + return 0; + + return sectors; ++#elif defined(__FreeBSD__) ++ rc = ioctl(filedes, DIOCGMEDIASIZE, &bytes); ++ if (rc == -1) ++ return 0; ++ ++ rc = ioctl(filedes, DIOCGSECTORSIZE, §ors); ++ if (rc == -1) ++ return 0; ++ ++ return bytes / sectors; ++#else ++ return 0; ++#endif + } + + /************************************************************ |
