git: a7ccbef49ecd - main - sysutils/linuxfdisk: Remove expired port

From: Matthias Andree <mandree_at_FreeBSD.org>
Date: Wed, 01 Oct 2025 09:32:30 UTC
The branch main has been updated by mandree:

URL: https://cgit.FreeBSD.org/ports/commit/?id=a7ccbef49ecd9b7dcdb22524c878e4ffbac2ea2f

commit a7ccbef49ecd9b7dcdb22524c878e4ffbac2ea2f
Author:     Matthias Andree <mandree@FreeBSD.org>
AuthorDate: 2025-10-01 09:31:22 +0000
Commit:     Matthias Andree <mandree@FreeBSD.org>
CommitDate: 2025-10-01 09:31:32 +0000

    sysutils/linuxfdisk: Remove expired port
    
    2025-09-30 sysutils/linuxfdisk: Upstream distfile unavailable, way out of date, upstream distfile gone, use gpart instead.
    
    Linuxfdisk had been part of util-linux v2.11z as of 22 years ago.
---
 MOVED                                          |    1 +
 sysutils/Makefile                              |    1 -
 sysutils/linuxfdisk/Makefile                   |   28 -
 sysutils/linuxfdisk/distinfo                   |    2 -
 sysutils/linuxfdisk/files/linuxfdisk-Makefile  |   35 -
 sysutils/linuxfdisk/files/linuxfdisk-sys_bsd.c |  118 ---
 sysutils/linuxfdisk/files/patch-FreeBSD        | 1204 ------------------------
 sysutils/linuxfdisk/pkg-descr                  |    3 -
 sysutils/linuxfdisk/pkg-plist                  |    6 -
 9 files changed, 1 insertion(+), 1397 deletions(-)

diff --git a/MOVED b/MOVED
index 5b16f36bcd74..ab4b0a904023 100644
--- a/MOVED
+++ b/MOVED
@@ -4781,3 +4781,4 @@ net/benthos|net/redpanda-connect|2025-09-12|Has expired: Superseded by net/redpa
 cad/cvc||2025-09-24|Has expired: Upstream stalled, needs EOL GCC 11 to build
 lang/gcc11||2025-09-24|Has expired: End-of-life upstream since mid 2024, newer versions available
 devel/util-linux|sysutils/util-linux|2025-09-29|Move to the proper category
+sysutils/linuxfdisk||2025-10-01|Has expired: Upstream distfile unavailable, way out of date, upstream distfile gone, use gpart instead
diff --git a/sysutils/Makefile b/sysutils/Makefile
index 9e008a53f40f..9c7683c1cc59 100644
--- a/sysutils/Makefile
+++ b/sysutils/Makefile
@@ -649,7 +649,6 @@
     SUBDIR += linux-c7-userspace-rcu
     SUBDIR += linux-miniconda-installer
     SUBDIR += linux-rkbin
-    SUBDIR += linuxfdisk
     SUBDIR += littlejet
     SUBDIR += lmmon
     SUBDIR += lmon
diff --git a/sysutils/linuxfdisk/Makefile b/sysutils/linuxfdisk/Makefile
deleted file mode 100644
index 32a8ceaae6be..000000000000
--- a/sysutils/linuxfdisk/Makefile
+++ /dev/null
@@ -1,28 +0,0 @@
-PORTNAME=	linuxfdisk
-PORTVERSION=	2.11z
-PORTREVISION=	2
-CATEGORIES=	sysutils
-MASTER_SITES=	KERNEL_ORG/linux/utils/util-linux/v2.11/ \
-		http://ftp.be.debian.org/pub/linux/utils/util-linux/v2.11/ \
-		ftp://segfault.kiev.ua/pub/
-DISTNAME=	util-linux-${PORTVERSION}
-
-MAINTAINER=	netch@netch.kiev.ua
-COMMENT=	Fdisk, a partition tables manipulator, from util-linux
-
-DEPRECATED=	Upstream distfile unavailable, way out of date, upstream distfile gone, use gpart instead.
-EXPIRATION_DATE=2025-09-30
-
-LICENSE=	GPLv2+
-
-BROKEN_aarch64=	fails to build: error unknown architecture
-BROKEN=		dangerous, unaware of GPT and alignments, causes write amplification and HW wear
-
-WRKSRC=		${WRKDIR}/util-linux-${PORTVERSION}/fdisk
-USES=		tar:bzip2
-
-pre-patch:
-	@${CP} ${FILESDIR}/linuxfdisk-Makefile ${WRKSRC}/Makefile
-	@${CP} ${FILESDIR}/linuxfdisk-sys_bsd.c ${WRKSRC}/sys_bsd.c
-
-.include <bsd.port.mk>
diff --git a/sysutils/linuxfdisk/distinfo b/sysutils/linuxfdisk/distinfo
deleted file mode 100644
index f0db3601ce92..000000000000
--- a/sysutils/linuxfdisk/distinfo
+++ /dev/null
@@ -1,2 +0,0 @@
-SHA256 (util-linux-2.11z.tar.bz2) = 8054e245b93df7061f8cb3ebe971e038ffd39a630b9c6ead654925a27961ee02
-SIZE (util-linux-2.11z.tar.bz2) = 1266784
diff --git a/sysutils/linuxfdisk/files/linuxfdisk-Makefile b/sysutils/linuxfdisk/files/linuxfdisk-Makefile
deleted file mode 100644
index 05a3cc461d78..000000000000
--- a/sysutils/linuxfdisk/files/linuxfdisk-Makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-all: fdisk cfdisk sfdisk
-
-FDISK_OBJS = fdisk.o i386_sys_types.o partname.o \
-	fdiskbsdlabel.o fdisksunlabel.o fdiskaixlabel.o fdisksgilabel.o \
-	sys_bsd.o
-
-SFDISK_OBJS = sfdisk.o sys_bsd.o i386_sys_types.o partname.o getopt.o getopt1.o
-
-CFDISK_OBJS = cfdisk.o sys_bsd.o i386_sys_types.o
-
-CFLAGS += -DUTIL_LINUX_VERSION=\"2.11z\" -I../getopt/gnu
-
-INSTALL?=	install -c
-## Debug
-#CFLAGS+=	-O0 -g -Wall
-
-fdisk: $(FDISK_OBJS)
-	$(CC) -o fdisk $(FDISK_OBJS)
-
-sfdisk: $(SFDISK_OBJS)
-	$(CC) -o sfdisk $(SFDISK_OBJS)
-
-cfdisk: $(CFDISK_OBJS)
-	$(CC) -o cfdisk $(CFDISK_OBJS) -lncurses
-
-getopt.o: ../getopt/gnu/getopt.c
-getopt1.o: ../getopt/gnu/getopt1.c
-
-install:
-	$(INSTALL) -c -m 0555 -s fdisk ${DESTDIR}${PREFIX}/sbin/fdisk-linux
-	$(INSTALL) -c -m 0555 -s cfdisk ${DESTDIR}${PREFIX}/sbin/cfdisk-linux
-	$(INSTALL) -c -m 0555 -s sfdisk ${DESTDIR}${PREFIX}/sbin/sfdisk-linux
-	$(INSTALL) -c -m 0644 fdisk.8 ${DESTDIR}${PREFIX}/share/man/man8/fdisk-linux.8
-	$(INSTALL) -c -m 0644 cfdisk.8 ${DESTDIR}${PREFIX}/share/man/man8/cfdisk-linux.8
-	$(INSTALL) -c -m 0644 sfdisk.8 ${DESTDIR}${PREFIX}/share/man/man8/sfdisk-linux.8
diff --git a/sysutils/linuxfdisk/files/linuxfdisk-sys_bsd.c b/sysutils/linuxfdisk/files/linuxfdisk-sys_bsd.c
deleted file mode 100644
index eb3a97ea9226..000000000000
--- a/sysutils/linuxfdisk/files/linuxfdisk-sys_bsd.c
+++ /dev/null
@@ -1,118 +0,0 @@
-#include <sys/param.h>
-#include <sys/disklabel.h>
-#if __FreeBSD_version < 500000
-#include <sys/diskslice.h>
-#include <sys/stat.h>
-#else
-#include <sys/disk.h>
-#include <errno.h>
-#endif
-#include <stddef.h>
-#include "common.h"
-
-unsigned int
-sys_bsd_sectorsize(int fd)
-{
-#ifdef DIOCGSECTORSIZE
-	;{
-		unsigned int d;
-		if (ioctl(fd, DIOCGSECTORSIZE, &d) == 0)
-			return d;
-	}
-#endif
-#ifdef DIOCGDINFO
-	;{
-		struct disklabel dl;
-		if (ioctl(fd, DIOCGDINFO, &dl) == 0)
-			return dl.d_secsize;
-	}
-#endif
-#ifdef DIOCGSLICEINFO
-	;{
-		struct diskslices dss;
-		if (ioctl(fd, DIOCGSLICEINFO, &dss) == 0)
-			return dss.dss_secsize;
-	}
-#endif
-	return 0;
-}
-
-int
-sys_bsd_getsectors(int fd, unsigned long *s)
-{
-	/* XXX */
-	struct disklabel dl;
-#if defined(DIOCGMEDIASIZE) && defined(DIOCGSECTORSIZE)
-	;{
-		off_t fullsize;
-		unsigned sectsize;
-		if (ioctl(fd, DIOCGMEDIASIZE, &fullsize) == 0 &&
-		    ioctl(fd, DIOCGSECTORSIZE, &sectsize) == 0)
-		{
-			*s = fullsize / sectsize;
-			return 0;
-		}
-	}
-#endif
-#ifdef DIOCGSLICEINFO
-	/* XXX it is somehow ugly, but seems to work on 4.x. */
-	;{
-		struct diskslices dss;
-		struct stat st;
-		if (ioctl(fd, DIOCGSLICEINFO, &dss) == 0 &&
-		    fstat(fd, &st) == 0)
-		{
-			int slice = 31 & (st.st_rdev >> 16);
-			/* If it have disklabel, fall to disklabel case,
-			 * because it shows more exact info.
-			 */
-			if (slice != WHOLE_DISK_SLICE &&
-			    dss.dss_slices[slice].ds_label != NULL &&
-			    ioctl(fd, DIOCGDINFO, &dl) == 0) {
-				*s = (unsigned long) dl.d_secperunit;
-				return 0;
-			}
-			*s = dss.dss_slices[slice].ds_size;
-			return 0;
-		}
-	}
-#endif
-#ifdef DIOCGDINFO
-	/* Fallback method. */
-	if (ioctl(fd, DIOCGDINFO, &dl) == 0) {
-		*s = (unsigned long) dl.d_secperunit;
-		return 0;
-	}
-#endif
-	return -1;
-}
-
-int
-sys_bsd_ptsync(int fd)
-{
-#ifdef DIOCSYNCSLICEINFO
-	return ioctl(fd, DIOCSYNCSLICEINFO, NULL);
-#else
-	/* XXX I suppose here GEOM systems which:
-	 * 1) Don't allow writing to raw disk if it is mounted anywhere,
-	 * 2) Automatically update GEOM structures after writing to disk.
-	 * Hence, no explicit syncing is required.
-	 */
-	return 0;
-#endif
-}
-
-int
-sys_bsd_getgeometry(int fd, struct hd_geometry *g)
-{
-	/* XXX */
-	struct disklabel dl;
-#ifdef DIOCGDINFO
-	if (ioctl(fd, DIOCGDINFO, &dl) < 0)
-#endif
-		return -1;
-	g->cylinders = dl.d_ncylinders;
-	g->heads = dl.d_ntracks;
-	g->sectors = dl.d_nsectors;
-	return 0;
-}
diff --git a/sysutils/linuxfdisk/files/patch-FreeBSD b/sysutils/linuxfdisk/files/patch-FreeBSD
deleted file mode 100644
index 130d5fca5451..000000000000
--- a/sysutils/linuxfdisk/files/patch-FreeBSD
+++ /dev/null
@@ -1,1204 +0,0 @@
-diff -rNu cfdisk.c cfdisk.c
---- cfdisk.c	Tue Nov 26 18:44:33 2002
-+++ cfdisk.c	Fri Jun 20 19:47:15 2003
-@@ -76,25 +76,14 @@
- #include <string.h>
- #include <sys/stat.h>
- #include <sys/ioctl.h>
--#include <linux/types.h>
- 
- #include "nls.h"
--#include "xstrncpy.h"
- #include "common.h"
- 
--#if defined(__GNUC__) || defined(HAS_LONG_LONG)
--typedef long long ext2_loff_t;
--#else
--typedef long      ext2_loff_t;
--#endif
--
--extern ext2_loff_t ext2_llseek(unsigned int fd, ext2_loff_t offset,
--			       unsigned int origin);
--
- #define VERSION UTIL_LINUX_VERSION
- 
--#define DEFAULT_DEVICE "/dev/hda"
--#define ALTERNATE_DEVICE "/dev/sda"
-+#define DEFAULT_DEVICE "/dev/ada0"
-+#define ALTERNATE_DEVICE "/dev/da0"
- 
- /* With K=1024 we have `binary' megabytes, gigabytes, etc.
-    Some misguided hackers like that.
-@@ -324,7 +313,8 @@
- int logical = 0;
- int logical_sectors[MAXIMUM_PARTS];
- 
--__sighandler_t old_SIGINT, old_SIGTERM;
-+void (*old_SIGINT)(int);
-+void (*old_SIGTERM)(int);
- 
- int arrow_cursor = FALSE;
- int display_units = MEGABYTES;
-@@ -571,7 +561,7 @@
- 
- static void
- read_sector(char *buffer, int sect_num) {
--    if (ext2_llseek(fd, ((ext2_loff_t) sect_num)*SECTOR_SIZE, SEEK_SET) < 0)
-+    if (lseek(fd, ((off_t) sect_num)*SECTOR_SIZE, SEEK_SET) < 0)
- 	fatal(_("Cannot seek on disk drive"), 2);
-     if (read(fd, buffer, SECTOR_SIZE) != SECTOR_SIZE)
- 	fatal(_("Cannot read disk drive"), 2);
-@@ -579,7 +569,7 @@
- 
- static void
- write_sector(char *buffer, int sect_num) {
--    if (ext2_llseek(fd, ((ext2_loff_t) sect_num)*SECTOR_SIZE, SEEK_SET) < 0)
-+    if (lseek(fd, ((off_t) sect_num)*SECTOR_SIZE, SEEK_SET) < 0)
- 	fatal(_("Cannot seek on disk drive"), 2);
-     if (write(fd, buffer, SECTOR_SIZE) != SECTOR_SIZE)
- 	fatal(_("Cannot write disk drive"), 2);
-@@ -603,11 +593,11 @@
- #define DOS_OSTYPE_SZ 8
- #define DOS_LABEL_SZ 11
- #define DOS_FSTYPE_SZ 8
--	ext2_loff_t offset;
-+	off_t offset;
- 
--	offset = ((ext2_loff_t) p_info[i].first_sector + p_info[i].offset)
-+	offset = ((off_t) p_info[i].first_sector + p_info[i].offset)
- 		* SECTOR_SIZE;
--	if (ext2_llseek(fd, offset, SEEK_SET) == offset
-+	if (lseek(fd, offset, SEEK_SET) == offset
- 	    && read(fd, &sector, sizeof(sector)) == sizeof(sector)) {
- 		dos_copy_to_info(p_info[i].ostype, OSTYPESZ,
- 				 sector+DOS_OSTYPE_OFFSET, DOS_OSTYPE_SZ);
-@@ -664,12 +654,12 @@
- 	} xfsb;
- 
- 	char *label;
--	ext2_loff_t offset;
-+	off_t offset;
- 	int j;
- 
--	offset = ((ext2_loff_t) p_info[i].first_sector + p_info[i].offset)
-+	offset = ((off_t) p_info[i].first_sector + p_info[i].offset)
- 		* SECTOR_SIZE + 1024;
--	if (ext2_llseek(fd, offset, SEEK_SET) == offset
-+	if (lseek(fd, offset, SEEK_SET) == offset
- 	    && read(fd, &e2fsb, sizeof(e2fsb)) == sizeof(e2fsb)
- 	    && e2fsb.s_magic[0] + (e2fsb.s_magic[1]<<8) == EXT2_SUPER_MAGIC) {
- 		label = e2fsb.s_volume_name;
-@@ -684,9 +674,9 @@
- 		return;
- 	}
- 
--	offset = ((ext2_loff_t) p_info[i].first_sector + p_info[i].offset)
-+	offset = ((off_t) p_info[i].first_sector + p_info[i].offset)
- 		* SECTOR_SIZE + 0;
--	if (ext2_llseek(fd, offset, SEEK_SET) == offset
-+	if (lseek(fd, offset, SEEK_SET) == offset
- 	    && read(fd, &xfsb, sizeof(xfsb)) == sizeof(xfsb)
- 	    && !strcmp(xfsb.s_magic, XFS_SUPER_MAGIC)) {
- 		label = xfsb.s_fname;
-@@ -698,9 +688,9 @@
- 	}
- 
- 	/* reiserfs? */
--	offset = ((ext2_loff_t) p_info[i].first_sector + p_info[i].offset)
-+	offset = ((off_t) p_info[i].first_sector + p_info[i].offset)
- 		* SECTOR_SIZE + REISERFS_DISK_OFFSET_IN_BYTES;
--	if (ext2_llseek(fd, offset, SEEK_SET) == offset
-+	if (lseek(fd, offset, SEEK_SET) == offset
- 	    && read(fd, &reiserfsb, 1024) == 1024
- 	    && is_reiserfs_magic_string(&reiserfsb)) {
- 		strncpy(p_info[i].fstype, "reiserfs", FSTYPESZ);
-@@ -1140,7 +1130,7 @@
-             print_warning(_("Menu item too long. Menu may look odd."));
- #endif
- 	if (lenName >= sizeof(buff)) {	/* truncate ridiculously long string */
--	    xstrncpy(buff, mi, sizeof(buff));
-+	    strlcpy(buff, mi, sizeof(buff));
- 	} else {
-             snprintf(buff, sizeof(buff),
- 		     (menuType & MENU_BUTTON) ? "[%*s%-*s]" : "%*s%-*s",
-@@ -1605,17 +1595,7 @@
- 	 opentype = O_RDWR;
-     opened = TRUE;
- 
--    /* Blocks are visible in more than one way:
--       e.g. as block on /dev/hda and as block on /dev/hda3
--       By a bug in the Linux buffer cache, we will see the old
--       contents of /dev/hda when the change was made to /dev/hda3.
--       In order to avoid this, discard all blocks on /dev/hda.
--       Note that partition table blocks do not live in /dev/hdaN,
--       so this only plays a role if we want to show volume labels. */
--    ioctl(fd, BLKFLSBUF);	/* ignore errors */
--				/* e.g. Permission Denied */
--
--    if (ioctl(fd, BLKGETSIZE, &actual_size))
-+    if (sys_bsd_getsectors(fd, &actual_size))
- 	fatal(_("Cannot get disk size"), 3);
- 
-     read_sector(buffer.c.b, 0);
-@@ -1824,7 +1804,7 @@
-     if (is_bdev) {
- 	 sync();
- 	 sleep(2);
--	 if (!ioctl(fd,BLKRRPART))
-+	 if (!sys_bsd_ptsync(fd))
- 	      changed = TRUE;
- 	 sync();
- 	 sleep(4);
-@@ -2850,9 +2830,11 @@
-     int c;
-     int i, len;
- 
-+#if 0
-     setlocale(LC_ALL, "");
-     bindtextdomain(PACKAGE, LOCALEDIR);
-     textdomain(PACKAGE);
-+#endif
- 
-     while ((c = getopt(argc, argv, "ac:gh:s:vzP:")) != -1)
- 	switch (c) {
-diff -rNu common.h common.h
---- common.h	Thu May  9 02:50:35 2002
-+++ common.h	Fri Jun 20 19:25:55 2003
-@@ -1,11 +1,10 @@
- /* common stuff for fdisk, cfdisk, sfdisk */
- 
--/* including <linux/fs.h> fails */
--#include <sys/ioctl.h>
--#define BLKRRPART  _IO(0x12,95)    /* re-read partition table */
--#define BLKGETSIZE _IO(0x12,96)    /* return device size */
--#define BLKFLSBUF  _IO(0x12,97)    /* flush buffer cache */
--#define BLKSSZGET  _IO(0x12,104)   /* get block device sector size */
-+#include <sys/types.h>
-+typedef u_int16_t __u16;
-+typedef u_int32_t __u32;
-+typedef int16_t __s16;
-+typedef u_int8_t __u8;
- 
- /* including <linux/hdreg.h> also fails */
- struct hd_geometry {
-@@ -15,9 +14,6 @@
-       unsigned long start;
- };
- 
--#define HDIO_GETGEO		0x0301	/* get device geometry */
--
--
- struct systypes {
- 	unsigned char type;
- 	char *name;
-@@ -26,3 +22,8 @@
- extern struct systypes i386_sys_types[];
- 
- extern char *partname(char *dev, int pno, int lth);
-+
-+unsigned int sys_bsd_sectorsize(int fd);
-+int sys_bsd_getsectors(int fd, unsigned long* s);
-+int sys_bsd_ptsync(int fd);
-+int sys_bsd_getgeometry(int, struct hd_geometry*);
-diff -rNu fdisk.c fdisk.c
---- fdisk.c	Sat Nov 23 18:05:24 2002
-+++ fdisk.c	Fri Jun 20 19:25:55 2003
-@@ -37,11 +37,6 @@
- #include "fdisksgilabel.h"
- #include "fdiskaixlabel.h"
- 
--#include "../defines.h"
--#ifdef HAVE_blkpg_h
--#include <linux/blkpg.h>
--#endif
--
- static void delete_partition(int i);
- 
- #define hex_val(c)	({ \
-@@ -194,23 +189,21 @@
- 
- 	switch (why) {
- 		case usage: message = _(
--"Usage: fdisk [-b SSZ] [-u] DISK     Change partition table\n"
--"       fdisk -l [-b SSZ] [-u] DISK  List partition table(s)\n"
--"       fdisk -s PARTITION           Give partition size(s) in blocks\n"
--"       fdisk -v                     Give fdisk version\n"
--"Here DISK is something like /dev/hdb or /dev/sda\n"
--"and PARTITION is something like /dev/hda7\n"
-+"Usage: fdisk-linux [-b SSZ] [-u] DISK     Change partition table\n"
-+"       fdisk-linux -l [-b SSZ] [-u] DISK  List partition table(s)\n"
-+"       fdisk-linux -s PARTITION           Give partition size(s) in blocks\n"
-+"       fdisk-linux -v                     Give fdisk version\n"
-+"Here DISK is something like /dev/ada1 or /dev/da0\n"
-+"and PARTITION is something like /dev/ada0s7\n"
- "-u: give Start and End in sector (instead of cylinder) units\n"
- "-b 2048: (for certain MO disks) use 2048-byte sectors\n");
- 			break;
- 		case usage2:
- 		  /* msg in cases where fdisk used to probe */
- 			message = _(
--"Usage: fdisk [-l] [-b SSZ] [-u] device\n"
--"E.g.: fdisk /dev/hda  (for the first IDE disk)\n"
--"  or: fdisk /dev/sdc  (for the third SCSI disk)\n"
--"  or: fdisk /dev/eda  (for the first PS/2 ESDI drive)\n"
--"  or: fdisk /dev/rd/c0d0  or: fdisk /dev/ida/c0d0  (for RAID devices)\n"
-+"Usage: fdisk-linux [-l] [-b SSZ] [-u] device\n"
-+"E.g.: fdisk-linux /dev/ada0  (for the first ATA disk)\n"
-+"  or: fdisk-linux /dev/da2  (for the third SCSI disk)\n"
- "  ...\n");
- 			break;
- 		case unable_to_open:
-@@ -231,7 +224,7 @@
- 			break;
- 		case ioctl_error:
- 			snprintf(error, sizeof(error),
--				 _("BLKGETSIZE ioctl failed on %s\n"),
-+				 _("DIOCGDINFO ioctl failed on %s\n"),
- 				disk_device);
- 			break;
- 		case out_of_memory:
-@@ -248,8 +241,8 @@
- 
- static void
- seek_sector(int fd, uint secno) {
--	ext2_loff_t offset = (ext2_loff_t) secno * sector_size;
--	if (ext2_llseek(fd, offset, SEEK_SET) == (ext2_loff_t) -1)
-+	off_t offset = (off_t) secno * sector_size;
-+	if (lseek(fd, offset, SEEK_SET) == (off_t) -1)
- 		fatal(unable_to_seek);
- }
- 
-@@ -725,53 +718,23 @@
- 	get_boot(create_empty_dos);
- }
- 
--#include <sys/utsname.h>
--#define MAKE_VERSION(p,q,r)     (65536*(p) + 256*(q) + (r))
--
--static int
--linux_version_code(void) {
--	static int kernel_version = 0;
--        struct utsname my_utsname;
--        int p, q, r;
--
--        if (!kernel_version && uname(&my_utsname) == 0) {
--                p = atoi(strtok(my_utsname.release, "."));
--                q = atoi(strtok(NULL, "."));
--                r = atoi(strtok(NULL, "."));
--                kernel_version = MAKE_VERSION(p,q,r);
--        }
--        return kernel_version;
--}
--
- static void
- get_sectorsize(int fd) {
--#if defined(BLKSSZGET)
--	if (!user_set_sector_size &&
--	    linux_version_code() >= MAKE_VERSION(2,3,3)) {
--		int arg;
--		if (ioctl(fd, BLKSSZGET, &arg) == 0)
--			sector_size = arg;
--		if (sector_size != DEFAULT_SECTOR_SIZE)
--			printf(_("Note: sector size is %d (not %d)\n"),
--			       sector_size, DEFAULT_SECTOR_SIZE);
--	}
--#else
--	/* maybe the user specified it; and otherwise we still
--	   have the DEFAULT_SECTOR_SIZE default */
--#endif
-+	unsigned int r = sys_bsd_sectorsize(fd);
-+	if (r)
-+		sector_size = r;
-+	if (sector_size != DEFAULT_SECTOR_SIZE)
-+		printf(_("Note: sector size is %d (not %d)\n"),
-+		       sector_size, DEFAULT_SECTOR_SIZE);
- }
- 
- static void
- get_kernel_geometry(int fd) {
--#ifdef HDIO_GETGEO
--	struct hd_geometry geometry;
--
--	if (!ioctl(fd, HDIO_GETGEO, &geometry)) {
--		kern_heads = geometry.heads;
--		kern_sectors = geometry.sectors;
--		/* never use geometry.cylinders - it is truncated */
-+	struct hd_geometry h;
-+	if (!sys_bsd_getgeometry(fd, &h)) {
-+		kern_heads = h.heads;
-+		kern_sectors = h.sectors;
- 	}
--#endif
- }
- 
- static void
-@@ -813,7 +776,7 @@
- 
- 	get_sectorsize(fd);
- 	sec_fac = sector_size / 512;
--	guess_device_type(fd);
-+	//guess_device_type(fd);
- 	heads = cylinders = sectors = 0;
- 	kern_heads = kern_sectors = 0;
- 	pt_heads = pt_sectors = 0;
-@@ -828,8 +791,11 @@
- 		pt_sectors ? pt_sectors :
- 		kern_sectors ? kern_sectors : 63;
- 
--	if (ioctl(fd, BLKGETSIZE, &longsectors))
--		longsectors = 0;
-+	;{
-+		unsigned long r;
-+		if (sys_bsd_getsectors(fd, &r) == 0)
-+			longsectors = r;
-+	}
- 
- 	sector_offset = 1;
- 	if (dos_compatible_flag)
-@@ -1404,7 +1370,7 @@
-  * Jan.  1990 (version 1.2.1 by Gordon W. Ross Aug. 1990; Modified by S.
-  * Lubkin Oct.  1991). */
- 
--static void long2chs(ulong ls, uint *c, uint *h, uint *s) {
-+static void long2chs(unsigned long ls, uint *c, uint *h, uint *s) {
- 	int	spc = heads * sectors;
- 
- 	*c = ls / spc;
-@@ -2102,16 +2068,8 @@
- 	printf(_("Calling ioctl() to re-read partition table.\n"));
- 	sync();
- 	sleep(2);
--	if ((i = ioctl(fd, BLKRRPART)) != 0) {
-+	if ((i = sys_bsd_ptsync(fd)) != 0) {
-                 error = errno;
--        } else {
--                /* some kernel versions (1.2.x) seem to have trouble
--                   rereading the partition table, but if asked to do it
--		   twice, the second time works. - biro@yggdrasil.com */
--                sync();
--                sleep(2);
--                if ((i = ioctl(fd, BLKRRPART)) != 0)
--                        error = errno;
-         }
- 
- 	if (i) {
-@@ -2403,9 +2361,11 @@
- 	int j, c;
- 	int optl = 0, opts = 0;
- 
-+#if 0
- 	setlocale(LC_ALL, "");
- 	bindtextdomain(PACKAGE, LOCALEDIR);
- 	textdomain(PACKAGE);
-+#endif
- 
- 	/*
- 	 * Calls:
-@@ -2455,7 +2415,7 @@
- 			break;
- 		case 'V':
- 		case 'v':
--			printf("fdisk v" UTIL_LINUX_VERSION "\n");
-+			printf("fdisk v" UTIL_LINUX_VERSION "-freebsd-portbld\n");
- 			exit(0);
- 		default:
- 			fatal(usage);
-@@ -2504,7 +2464,7 @@
- 			disk_device = argv[j];
- 			if ((fd = open(disk_device, type_open)) < 0)
- 				fatal(unable_to_open);
--			if (ioctl(fd, BLKGETSIZE, &size))
-+			if (sys_bsd_getsectors(fd, &size))
- 				fatal(ioctl_error);
- 			close(fd);
- 			if (opts == 1)
-diff -rNu fdisk.h fdisk.h
---- fdisk.h	2001-09-13 23:05:35 UTC
-+++ fdisk.h
-@@ -101,4 +101,4 @@
- /* prototypes for fdisksgilabel.c */
- extern int valid_part_table_flag(unsigned char *b);
- 
--#define PROC_PARTITIONS "/proc/partitions"
-+#define PROC_PARTITIONS "/compat/linux/proc/partitions"
-diff -rNu fdiskaixlabel.c fdiskaixlabel.c
---- fdiskaixlabel.c	Tue Apr 18 15:21:28 2000
-+++ fdiskaixlabel.c	Fri Jun 20 19:25:55 2003
-@@ -8,7 +8,7 @@
- #include <string.h>             /* strstr */
- #include <unistd.h>             /* write */
- 
--#include <endian.h>
-+#include <sys/endian.h>
- 
- #include "common.h"
- #include "fdisk.h"
-diff -rNu fdiskaixlabel.h fdiskaixlabel.h
---- fdiskaixlabel.h	Sun Feb 20 18:50:51 2000
-+++ fdiskaixlabel.h	Fri Jun 20 19:25:55 2003
-@@ -1,4 +1,3 @@
--#include <linux/types.h>   /* for __u32 etc */
- /*
-  * Copyright (C) Andreas Neuper, Sep 1998.
-  *	This file may be redistributed under
-diff -rNu fdiskbsdlabel.c fdiskbsdlabel.c
---- fdiskbsdlabel.c	Thu Oct 31 15:43:42 2002
-+++ fdiskbsdlabel.c	Fri Jun 20 19:25:55 2003
-@@ -566,7 +566,7 @@
-   sector = get_start_sect(xbsd_part);
- #endif
- 
--  if (ext2_llseek (fd, (ext2_loff_t) sector * SECTOR_SIZE, SEEK_SET) == -1)
-+  if (lseek (fd, (off_t) sector * SECTOR_SIZE, SEEK_SET) == -1)
-     fatal (unable_to_seek);
-   if (BSD_BBSIZE != write (fd, disklabelbuffer, BSD_BBSIZE))
-     fatal (unable_to_write);
-@@ -735,7 +735,7 @@
- 	sector = 0;
- #endif
- 
--	if (ext2_llseek (fd, (ext2_loff_t) sector * SECTOR_SIZE, SEEK_SET) == -1)
-+	if (lseek (fd, (off_t) sector * SECTOR_SIZE, SEEK_SET) == -1)
- 		fatal (unable_to_seek);
- 	if (BSD_BBSIZE != read (fd, disklabelbuffer, BSD_BBSIZE))
- 		fatal (unable_to_read);
-@@ -781,12 +781,12 @@
- 
- #if defined (__alpha__) && BSD_LABELSECTOR == 0
-   alpha_bootblock_checksum (disklabelbuffer);
--  if (ext2_llseek (fd, (ext2_loff_t) 0, SEEK_SET) == -1)
-+  if (lseek (fd, (off_t) 0, SEEK_SET) == -1)
-     fatal (unable_to_seek);
-   if (BSD_BBSIZE != write (fd, disklabelbuffer, BSD_BBSIZE))
-     fatal (unable_to_write);
- #else
--  if (ext2_llseek (fd, (ext2_loff_t) sector * SECTOR_SIZE + BSD_LABELOFFSET,
-+  if (lseek (fd, (off_t) sector * SECTOR_SIZE + BSD_LABELOFFSET,
- 		   SEEK_SET) == -1)
-     fatal (unable_to_seek);
-   if (sizeof (struct xbsd_disklabel) != write (fd, d, sizeof (struct xbsd_disklabel)))
-@@ -847,9 +847,11 @@
- 
- #if defined (__alpha__)
- 
-+/*
- #if !defined(__GLIBC__)
- typedef unsigned long long u_int64_t;
- #endif
-+*/
-
- void
- alpha_bootblock_checksum (char *boot)
-diff -rNu fdiskbsdlabel.h fdiskbsdlabel.h
---- fdiskbsdlabel.h	Thu Oct 31 15:45:34 2002
-+++ fdiskbsdlabel.h	Fri Jun 20 19:25:55 2003
-@@ -31,8 +31,6 @@
-  * SUCH DAMAGE.
-  */
- 
--#include <linux/types.h>	/* for __u32, __u16, __u8, __s16 */
--
- #ifndef BSD_DISKMAGIC
- #define BSD_DISKMAGIC     ((__u32) 0x82564557)
- #endif
-diff -rNu fdisksgilabel.c fdisksgilabel.c
---- fdisksgilabel.c	Thu May  9 02:51:31 2002
-+++ fdisksgilabel.c	Fri Jun 20 19:25:55 2003
-@@ -17,9 +17,8 @@
- #include <sys/stat.h>           /* stat */
- #include <assert.h>             /* assert */
- 
--#include <endian.h>
-+#include <sys/endian.h>
- #include "nls.h"
--#include <linux/major.h>        /* FLOPPY_MAJOR */
- 
- #include "common.h"
- #include "fdisk.h"
-@@ -382,7 +381,7 @@
- 	 */
- 	sgiinfo*info = fill_sgiinfo();	/* fills the block appropriately */
- 	int infostartblock = SSWAP32( sgilabel->directory[0].vol_file_start );
--	if( ext2_llseek(fd, (ext2_loff_t)infostartblock*
-+	if( lseek(fd, (off_t)infostartblock*
- 	    SECTOR_SIZE, SEEK_SET) < 0 )
- 	    fatal(unable_to_seek);
- 	if( write(fd, info, SECTOR_SIZE) != SECTOR_SIZE )
-@@ -735,11 +734,7 @@
- 
-     other_endian = (BYTE_ORDER == LITTLE_ENDIAN);
- 
--#ifdef HDIO_REQ
--    if (!ioctl(fd, HDIO_REQ, &geometry))
--#else
--    if (!ioctl(fd, HDIO_GETGEO, &geometry))
--#endif
-+    if (!sys_bsd_getgeometry(fd, &geometry))
-     {
- 	heads = geometry.heads;
- 	sectors = geometry.sectors;
-diff -rNu fdisksgilabel.h fdisksgilabel.h
---- fdisksgilabel.h	Tue Feb 20 12:26:53 2001
-+++ fdisksgilabel.h	Fri Jun 20 19:25:55 2003
-@@ -1,4 +1,3 @@
--#include <linux/types.h>   /* for __u32 etc */
- /*
-  * Copyright (C) Andreas Neuper, Sep 1998.
-  *	This file may be modified and redistributed under
-diff -rNu fdisksunlabel.c fdisksunlabel.c
---- fdisksunlabel.c	Fri Nov  1 03:55:25 2002
-+++ fdisksunlabel.c	Fri Jun 20 19:25:55 2003
-@@ -16,18 +16,18 @@
- #include <unistd.h>		/* write */
- #include <sys/ioctl.h>		/* ioctl */
- #include <sys/stat.h>		/* stat */
--#include <sys/sysmacros.h>	/* major */
-+//#include <sys/sysmacros.h>	/* major */
- 
- #include "nls.h"
- 
--#include <endian.h>
--#include "../defines.h"		/* for HAVE_scsi_h */
-+#include <sys/endian.h>
-+//#include "../defines.h"		/* for HAVE_scsi_h */
- #ifdef HAVE_scsi_h
- #define u_char	unsigned char
- #include <scsi/scsi.h>		/* SCSI_IOCTL_GET_IDLUN */
- #undef u_char
- #endif
--#include <linux/major.h>	/* FLOPPY_MAJOR */
-+//#include <linux/major.h>	/* FLOPPY_MAJOR */
- 
- #include "common.h"
- #include "fdisk.h"
-@@ -71,6 +71,7 @@
- 	return SSWAP32(p.num_sectors);
- }
- 
-+#if 0
- #ifndef IDE0_MAJOR
- #define IDE0_MAJOR 3
- #endif
-@@ -97,6 +98,7 @@
-                 floppy = 0;
- 	}
- }
-+#endif
- 
- static void
- set_sun_partition(int i, uint start, uint stop, int sysid) {
-@@ -296,11 +298,7 @@
- 	    }
- 	}
- 	if (!p || floppy) {
--#ifdef HDIO_REQ
--	    if (!ioctl(fd, HDIO_REQ, &geometry)) {
--#else
--	    if (!ioctl(fd, HDIO_GETGEO, &geometry)) {
--#endif
-+	    if (!sys_bsd_getgeometry(fd, &geometry)) {
- 	        heads = geometry.heads;
- 	        sectors = geometry.sectors;
- 	        cylinders = geometry.cylinders;
-diff -rNu fdisksunlabel.h fdisksunlabel.h
---- fdisksunlabel.h	Tue Oct  3 00:42:10 2000
-+++ fdisksunlabel.h	Fri Jun 20 19:25:55 2003
-@@ -1,4 +1,3 @@
--#include <linux/types.h>   /* for __u16, __u32 */
- 
- typedef struct {
- 	unsigned char info[128];   /* Informative text string */
-diff -rNu nls.h nls.h
---- nls.h	Thu Jan  1 03:00:00 1970
-+++ nls.h	Fri Jun 20 19:25:55 2003
-@@ -0,0 +1,2 @@
-+#define _(x) (x)
-+#define N_(x) (x)
-diff -rNu partname.c partname.c
---- partname.c	Sun Jul  7 15:16:43 2002
-+++ partname.c	Fri Jun 20 19:25:55 2003
-@@ -21,14 +21,16 @@
- 	p = "";
- 
- 	if (isdigit(dev[w-1]))
--		p = "p";
-+		p = "s";
- 
-+#if 0
- 	/* devfs kludge - note: fdisk partition names are not supposed
- 	   to equal kernel names, so there is no reason to do this */
- 	if (strcmp (dev + w - 4, "disc") == 0) {
- 		w -= 4;
- 		p = "part";
- 	}
-+#endif
- 
- 	wp = strlen(p);
- 		
-diff -rNu sfdisk.8 sfdisk.8
---- sfdisk.8	Fri Jun 20 20:37:34 2003
-+++ sfdisk.8	Fri Jun 20 20:43:24 2003
-@@ -9,9 +9,9 @@
- .SH NAME
- sfdisk \- Partition table manipulator for Linux
- .SH SYNOPSIS
--.BR sfdisk " [options] device"
-+.BR sfdisk-linux " [options] device"
- .br
--.BR "sfdisk \-s " [partition]
-+.BR "sfdisk-linux \-s " [partition]
- .SH DESCRIPTION
- .B sfdisk
- has four (main) uses: list the size of a partition, list the partitions
-@@ -19,7 +19,7 @@
- repartition a device.
- 
- .SS "List Sizes"
--.BI "sfdisk \-s " partition
-+.BI "sfdisk-linux \-s " partition
- gives the size of
- .I partition
- in blocks. This may be useful in connection with programs like
-@@ -27,16 +27,16 @@
- or so. Here
- .I partition
- is usually something like
--.I /dev/hda1
-+.I /dev/ada0s1
- or
--.IR /dev/sdb12 ,
-+.IR /dev/da2s12 ,
- but may also be an entire disk, like
--.IR /dev/xda .
-+.IR /dev/amrd0 .
- .br
- .RS
- .nf
- .if t .ft CW
--% sfdisk \-s /dev/hda9
-+% sfdisk-linux \-s /dev/ada0s9
- 81599
- %
- .if t .ft R
-@@ -49,12 +49,12 @@
- .RS
- .nf
- .if t .ft CW
--% sfdisk \-s
--/dev/hda: 208896
--/dev/hdb: 1025136
--/dev/hdc: 1031063
--/dev/sda: 8877895
--/dev/sdb: 1758927
-+% sfdisk-linux \-s
-+/dev/ada0: 208896
-+/dev/ada1: 1025136
-+/dev/ada2: 1031063
-+/dev/da0: 8877895
-+/dev/da1: 1758927
- total: 12901917 blocks
- %
- .if t .ft R
-@@ -70,16 +70,16 @@
- .br
- .nf
- .if t .ft CW
--% sfdisk \-l /dev/hdc
-+% sfdisk-linux \-l /dev/ada2
- 
--Disk /dev/hdc: 16 heads, 63 sectors, 2045 cylinders
-+Disk /dev/ada2: 16 heads, 63 sectors, 2045 cylinders
- Units = cylinders of 516096 bytes, blocks of 1024 bytes, counting from 0
- 
-    Device Boot Start     End   #cyls   #blocks   Id  System
--/dev/hdc1          0+    406     407\-   205096+  83  Linux native
--/dev/hdc2        407     813     407    205128   83  Linux native
--/dev/hdc3        814    2044    1231    620424   83  Linux native
--/dev/hdc4          0       \-       0         0    0  Empty
-+/dev/ada2s1        0+    406     407\-   205096+  83  Linux native
-+/dev/ada2s2      407     813     407    205128   83  Linux native
-+/dev/ada2s3      814    2044    1231    620424   83  Linux native
-+/dev/ada2s4        0       \-       0         0    0  Empty
- %
- .if t .ft R
- .fi
-@@ -89,17 +89,17 @@
*** 500 LINES SKIPPED ***