diff --git a/disk/part_amiga.c b/disk/part_amiga.c
index 4a67689..d4316b8 100644
--- a/disk/part_amiga.c
+++ b/disk/part_amiga.c
@@ -207,27 +207,27 @@
  * Test if the given partition has an Amiga partition table/Rigid
  * Disk block
  */
-static int test_part_amiga(struct blk_desc *dev_desc)
+static int part_test_amiga(struct blk_desc *dev_desc)
 {
     struct rigid_disk_block *rdb;
     struct bootcode_block *bootcode;
 
-    PRINTF("test_part_amiga: Testing for an Amiga RDB partition\n");
+    PRINTF("part_test_amiga: Testing for an Amiga RDB partition\n");
 
     rdb = get_rdisk(dev_desc);
     if (rdb)
     {
 	bootcode = get_bootcode(dev_desc);
 	if (bootcode)
-	    PRINTF("test_part_amiga: bootable Amiga disk\n");
+	    PRINTF("part_test_amiga: bootable Amiga disk\n");
 	else
-	    PRINTF("test_part_amiga: non-bootable Amiga disk\n");
+	    PRINTF("part_test_amiga: non-bootable Amiga disk\n");
 
 	return 0;
     }
     else
     {
-	PRINTF("test_part_amiga: no RDB found\n");
+	PRINTF("part_test_amiga: no RDB found\n");
 	return -1;
     }
 
@@ -318,7 +318,7 @@
     return 0;
 }
 
-static void print_part_amiga(struct blk_desc *dev_desc)
+static void part_print_amiga(struct blk_desc *dev_desc)
 {
     struct rigid_disk_block *rdb;
     struct bootcode_block *boot;
@@ -329,14 +329,14 @@
     rdb = get_rdisk(dev_desc);
     if (!rdb)
     {
-	PRINTF("print_part_amiga: no rdb found\n");
+	PRINTF("part_print_amiga: no rdb found\n");
 	return;
     }
 
-    PRINTF("print_part_amiga: Scanning partition list\n");
+    PRINTF("part_print_amiga: Scanning partition list\n");
 
     block = rdb->partition_list;
-    PRINTF("print_part_amiga: partition list at 0x%x\n", block);
+    PRINTF("part_print_amiga: partition list at 0x%x\n", block);
 
     printf("Summary:  DiskBlockSize: %d\n"
 	   "          Cylinders    : %d\n"
@@ -382,8 +382,8 @@
 	.name		= "AMIGA",
 	.part_type	= PART_TYPE_AMIGA,
 	.get_info	= part_get_info_amiga,
-	.print		= print_part_amiga,
-	.test		= test_part_amiga,
+	.print		= part_print_amiga,
+	.test		= part_test_amiga,
 };
 
 #endif
diff --git a/disk/part_dos.c b/disk/part_dos.c
index 0ed1374..511917a 100644
--- a/disk/part_dos.c
+++ b/disk/part_dos.c
@@ -87,7 +87,7 @@
 }
 
 
-static int test_part_dos(struct blk_desc *dev_desc)
+static int part_test_dos(struct blk_desc *dev_desc)
 {
 	ALLOC_CACHE_ALIGN_BUFFER(unsigned char, buffer, dev_desc->blksz);
 
@@ -285,7 +285,7 @@
 	return -1;
 }
 
-void print_part_dos(struct blk_desc *dev_desc)
+void part_print_dos(struct blk_desc *dev_desc)
 {
 	printf("Part\tStart Sector\tNum Sectors\tUUID\t\tType\n");
 	print_partition_extended(dev_desc, 0, 0, 1, 0);
@@ -301,8 +301,8 @@
 	.name		= "DOS",
 	.part_type	= PART_TYPE_DOS,
 	.get_info	= part_get_info_ptr(part_get_info_dos),
-	.print		= part_print_ptr(print_part_dos),
-	.test		= test_part_dos,
+	.print		= part_print_ptr(part_print_dos),
+	.test		= part_test_dos,
 };
 
 #endif
diff --git a/disk/part_efi.c b/disk/part_efi.c
index b20907b..77bdfcb 100644
--- a/disk/part_efi.c
+++ b/disk/part_efi.c
@@ -176,7 +176,7 @@
  * Public Functions (include/part.h)
  */
 
-void print_part_efi(struct blk_desc *dev_desc)
+void part_print_efi(struct blk_desc *dev_desc)
 {
 	ALLOC_CACHE_ALIGN_BUFFER_PAD(gpt_header, gpt_head, 1, dev_desc->blksz);
 	gpt_entry *gpt_pte = NULL;
@@ -319,7 +319,7 @@
 	return -2;
 }
 
-static int test_part_efi(struct blk_desc *dev_desc)
+static int part_test_efi(struct blk_desc *dev_desc)
 {
 	ALLOC_CACHE_ALIGN_BUFFER_PAD(legacy_mbr, legacymbr, 1, dev_desc->blksz);
 
@@ -959,7 +959,7 @@
 	.name		= "EFI",
 	.part_type	= PART_TYPE_EFI,
 	.get_info	= part_get_info_ptr(part_get_info_efi),
-	.print		= part_print_ptr(print_part_efi),
-	.test		= test_part_efi,
+	.print		= part_print_ptr(part_print_efi),
+	.test		= part_test_efi,
 };
 #endif
diff --git a/disk/part_iso.c b/disk/part_iso.c
index 76eab39..b83983b 100644
--- a/disk/part_iso.c
+++ b/disk/part_iso.c
@@ -223,7 +223,7 @@
 	return part_get_info_iso_verb(dev_desc, part_num, info, 1);
 }
 
-static void print_part_iso(struct blk_desc *dev_desc)
+static void part_print_iso(struct blk_desc *dev_desc)
 {
 	disk_partition_t info;
 	int i;
@@ -242,7 +242,7 @@
 	} while (part_get_info_iso_verb(dev_desc, i, &info, 0) != -1);
 }
 
-static int test_part_iso(struct blk_desc *dev_desc)
+static int part_test_iso(struct blk_desc *dev_desc)
 {
 	disk_partition_t info;
 
@@ -253,7 +253,7 @@
 	.name		= "ISO",
 	.part_type	= PART_TYPE_ISO,
 	.get_info	= part_get_info_iso,
-	.print		= print_part_iso,
-	.test		= test_part_iso,
+	.print		= part_print_iso,
+	.test		= part_test_iso,
 };
 #endif
diff --git a/disk/part_mac.c b/disk/part_mac.c
index ce57b57..3952b8d 100644
--- a/disk/part_mac.c
+++ b/disk/part_mac.c
@@ -40,7 +40,7 @@
 /*
  * Test for a valid MAC partition
  */
-static int test_part_mac(struct blk_desc *dev_desc)
+static int part_test_mac(struct blk_desc *dev_desc)
 {
 	ALLOC_CACHE_ALIGN_BUFFER(mac_driver_desc_t, ddesc, 1);
 	ALLOC_CACHE_ALIGN_BUFFER(mac_partition_t, mpart, 1);
@@ -63,7 +63,7 @@
 	return (0);
 }
 
-static void print_part_mac(struct blk_desc *dev_desc)
+static void part_print_mac(struct blk_desc *dev_desc)
 {
 	ulong i, n;
 	ALLOC_CACHE_ALIGN_BUFFER(mac_driver_desc_t, ddesc, 1);
@@ -240,7 +240,7 @@
 	.name		= "MAC",
 	.part_type	= PART_TYPE_MAC,
 	.get_info	= part_get_info_mac,
-	.print		= print_part_mac,
-	.test		= test_part_mac,
+	.print		= part_print_mac,
+	.test		= part_test_mac,
 };
 #endif
