diff options
Diffstat (limited to 'sysutils/gpart/files/patch-ac')
-rw-r--r-- | sysutils/gpart/files/patch-ac | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/sysutils/gpart/files/patch-ac b/sysutils/gpart/files/patch-ac new file mode 100644 index 000000000000..a9e542ecfdd7 --- /dev/null +++ b/sysutils/gpart/files/patch-ac @@ -0,0 +1,51 @@ +--- src/disku.c.orig Sat Oct 4 04:33:32 2003 ++++ src/disku.c Sat Oct 4 04:33:38 2003 +@@ -28,7 +28,11 @@ + + #if defined(__FreeBSD__) + #include <errno.h> ++#include <sys/param.h> + #include <sys/disklabel.h> ++#if __FreeBSD_version >= 500040 ++#include <sys/disk.h> ++#endif + #endif + + +@@ -61,12 +65,36 @@ + #endif + + #if defined(__FreeBSD__) ++#if __FreeBSD_version < 500040 + struct disklabel dl; + if (ioctl(d->d_fd,DIOCGDINFO,&dl) == -1) + pr(FATAL,EM_IOCTLFAILED,"DIOCGDINFO",strerror(errno)); + g.d_c = dl.d_ncylinders; + g.d_h = dl.d_ntracks; + g.d_s = dl.d_nsectors; ++#else ++ struct disklabel loclab; ++ u_int u; ++ ++ if (ioctl(d->d_fd, DIOCGFWSECTORS, &u) == 0) ++ loclab.d_nsectors = u; ++ else ++ loclab.d_nsectors = 63; ++ if (ioctl(d->d_fd, DIOCGFWHEADS, &u) == 0) ++ loclab.d_ntracks = u; ++ else if (loclab.d_secperunit <= 63*1*1024) ++ loclab.d_ntracks = 1; ++ else if (loclab.d_secperunit <= 63*16*1024) ++ loclab.d_ntracks = 16; ++ else ++ loclab.d_ntracks = 255; ++ loclab.d_secpercyl = loclab.d_ntracks * loclab.d_nsectors; ++ loclab.d_ncylinders = loclab.d_secperunit / loclab.d_secpercyl; ++ ++ g.d_c = loclab.d_ncylinders; ++ g.d_h = loclab.d_ntracks; ++ g.d_s = loclab.d_nsectors; ++#endif + #endif + + return (&g); |