diff --git a/util-linux/fdformat.c b/util-linux/fdformat.c
index 6f49cec..6ef6445 100644
--- a/util-linux/fdformat.c
+++ b/util-linux/fdformat.c
@@ -93,7 +93,7 @@
 	}
 
 	xioctl(fd, FDFMTEND, NULL);
-	printf("done\n");
+	puts("Done");
 
 	/* VERIFY */
 	if (verify) {
@@ -126,7 +126,7 @@
 
 		if (ENABLE_FEATURE_CLEAN_UP) free(data);
 
-		printf("done\n");
+		puts("Done");
 	}
 
 	if (ENABLE_FEATURE_CLEAN_UP) close(fd);
diff --git a/util-linux/fdisk.c b/util-linux/fdisk.c
index 7fe70fb..f49ce95 100644
--- a/util-linux/fdisk.c
+++ b/util-linux/fdisk.c
@@ -1102,11 +1102,11 @@
 		printf(" sectors");
 	if (!g_cylinders)
 		printf(" cylinders");
-	printf(
 #if ENABLE_FEATURE_FDISK_WRITABLE
-		" (settable in the extra functions menu)"
+	puts(" (settable in the extra functions menu)");
+#else
+	bb_putchar('\n');
 #endif
-		"\n");
 	return 1;
 }
 
@@ -1150,7 +1150,7 @@
 
 	p = pex->part_table;
 	if (!get_start_sect(p)) {
-		printf("Bad offset in primary extended partition\n");
+		puts("Bad offset in primary extended partition");
 		return;
 	}
 
@@ -1450,8 +1450,8 @@
 			current_label_type = LABEL_OSF;
 			return 0;
 		}
-		printf("This disk has both DOS and BSD magic.\n"
-			 "Give the 'b' command to go to BSD mode.\n");
+		puts("This disk has both DOS and BSD magic.\n"
+		     "Give the 'b' command to go to BSD mode.");
 	}
 #endif
 
@@ -1461,9 +1461,9 @@
 #else
 	if (!valid_part_table_flag(MBRbuffer)) {
 		if (what == OPEN_MAIN) {
-			printf("Device contains neither a valid DOS "
-				  "partition table, nor Sun, SGI, OSF or GPT "
-				  "disklabel\n");
+			puts("Device contains neither a valid DOS "
+			     "partition table, nor Sun, SGI, OSF or GPT "
+			     "disklabel");
 #ifdef __sparc__
 			IF_FEATURE_SUN_LABEL(create_sunlabel();)
 #else
@@ -1596,7 +1596,7 @@
 		}
 		if (value >= low && value <= high)
 			break;
-		printf("Value is out of range\n");
+		puts("Value is out of range");
 	}
 	return value;
 }
@@ -1641,7 +1641,7 @@
 		printf("Selected partition %u\n", pno+1);
 		return pno;
 	}
-	printf("No partition is defined yet!\n");
+	puts("No partition is defined yet!");
 	return -1;
 
  not_unique:
@@ -1668,7 +1668,7 @@
 		printf("Selected partition %u\n", pno+1);
 		return pno;
 	}
-	printf("All primary partitions have been defined already!\n");
+	puts("All primary partitions have been defined already!");
 	return -1;
 
  not_unique:
@@ -1703,10 +1703,10 @@
 	dos_compatible_flag = 1 - dos_compatible_flag;
 	if (dos_compatible_flag) {
 		sector_offset = g_sectors;
-		printf("DOS Compatibility flag is set\n");
+		printf("DOS Compatibility flag is %sset\n", "");
 	} else {
 		sector_offset = 1;
-		printf("DOS Compatibility flag is not set\n");
+		printf("DOS Compatibility flag is %sset\n", "not ");
 	}
 }
 
@@ -1813,16 +1813,16 @@
 		sys = read_hex(get_sys_types());
 
 		if (!sys && !LABEL_IS_SGI && !LABEL_IS_SUN) {
-			printf("Type 0 means free space to many systems\n"
-				   "(but not to Linux). Having partitions of\n"
-				   "type 0 is probably unwise.\n");
+			puts("Type 0 means free space to many systems\n"
+				"(but not to Linux). Having partitions of\n"
+				"type 0 is probably unwise.");
 			/* break; */
 		}
 
 		if (!LABEL_IS_SUN && !LABEL_IS_SGI) {
 			if (IS_EXTENDED(sys) != IS_EXTENDED(p->sys_ind)) {
-				printf("You cannot change a partition into"
-					   " an extended one or vice versa\n");
+				puts("You cannot change a partition into"
+					" an extended one or vice versa");
 				break;
 			}
 		}
@@ -1830,10 +1830,10 @@
 		if (sys < 256) {
 #if ENABLE_FEATURE_SUN_LABEL
 			if (LABEL_IS_SUN && i == 2 && sys != SUN_WHOLE_DISK)
-				printf("Consider leaving partition 3 "
-					   "as Whole disk (5),\n"
-					   "as SunOS/Solaris expects it and "
-					   "even Linux likes it\n\n");
+				puts("Consider leaving partition 3 "
+					"as Whole disk (5),\n"
+					"as SunOS/Solaris expects it and "
+					"even Linux likes it\n");
 #endif
 #if ENABLE_FEATURE_SGI_LABEL
 			if (LABEL_IS_SGI &&
@@ -1842,10 +1842,10 @@
 					(i == 8 && sys != 0)
 				)
 			) {
-				printf("Consider leaving partition 9 "
-					   "as volume header (0),\nand "
-					   "partition 11 as entire volume (6)"
-					   "as IRIX expects it\n\n");
+				puts("Consider leaving partition 9 "
+					"as volume header (0),\nand "
+					"partition 11 as entire volume (6)"
+					"as IRIX expects it\n");
 			}
 #endif
 			if (sys == origsys)
@@ -2067,7 +2067,7 @@
 	int i,k;
 
 	if (!wrong_p_order(NULL)) {
-		printf("Ordering is already correct\n\n");
+		puts("Ordering is already correct\n");
 		return;
 	}
 
@@ -2095,7 +2095,7 @@
 	if (i)
 		fix_chain_of_logicals();
 
-	printf("Done.\n");
+	puts("Done");
 }
 #endif
 
@@ -2178,7 +2178,7 @@
 	 * if this is a sgi, sun or aix labeled disk... */
 	if (LABEL_IS_DOS && wrong_p_order(NULL)) {
 		/* FIXME */
-		printf("\nPartition table entries are not in disk order\n");
+		puts("\nPartition table entries are not in disk order");
 	}
 }
 
@@ -2192,7 +2192,7 @@
 
 	printf("\nDisk %s: %u heads, %u sectors, %u cylinders\n\n",
 		disk_device, g_heads, g_sectors, g_cylinders);
-	printf("Nr AF  Hd Sec  Cyl  Hd Sec  Cyl      Start       Size ID\n");
+	puts("Nr AF  Hd Sec  Cyl  Hd Sec  Cyl      Start       Size ID");
 	for (i = 0; i < g_partitions; i++) {
 		pe = &ptes[i];
 		p = (extend ? pe->ext_pointer : pe->part_table);
@@ -2419,7 +2419,7 @@
 			limit = first[i] - 1;
 	}
 	if (start > limit) {
-		printf("No free sectors available\n");
+		puts("No free sectors available");
 		if (n > 4)
 			g_partitions--;
 		return;
@@ -2490,9 +2490,9 @@
 		return;
 	}
 	if (LABEL_IS_AIX) {
-		printf("Sorry - this fdisk cannot handle AIX disk labels.\n"
+		puts("Sorry - this fdisk cannot handle AIX disk labels.\n"
 "If you want to add DOS-type partitions, create a new empty DOS partition\n"
-"table first (use 'o'). This will destroy the present disk contents.\n");
+"table first (use 'o'). This will destroy the present disk contents.");
 		return;
 	}
 
@@ -2500,7 +2500,7 @@
 		free_primary += !ptes[i].part_table->sys_ind;
 
 	if (!free_primary && g_partitions >= MAXIMUM_PARTS) {
-		printf("The maximum number of partitions has been created\n");
+		puts("The maximum number of partitions has been created");
 		return;
 	}
 
@@ -2508,8 +2508,8 @@
 		if (extended_offset)
 			add_logical();
 		else
-			printf("You must delete some partition and add "
-				 "an extended partition first\n");
+			puts("You must delete some partition and add "
+				 "an extended partition first");
 	} else {
 		char c, line[80];
 		snprintf(line, sizeof(line),
@@ -2547,7 +2547,7 @@
 {
 	int i;
 
-	printf("Calling ioctl() to re-read partition table\n");
+	puts("Calling ioctl() to re-read partition table");
 	sync();
 	/* Users with slow external USB disks on a 320MHz ARM system (year 2011)
 	 * report that sleep is needed, otherwise BLKRRPART may fail with -EIO:
@@ -2558,10 +2558,10 @@
 			"failed, kernel still uses old table");
 #if 0
 	if (dos_changed)
-		printf(
+		puts(
 		"\nWARNING: If you have created or modified any DOS 6.x\n"
 		"partitions, please see the fdisk manual page for additional\n"
-		"information\n");
+		"information");
 #endif
 
 	if (leave) {
@@ -2589,7 +2589,7 @@
 		}
 	}
 	else if (LABEL_IS_SGI) {
-		/* no test on change? the printf below might be mistaken */
+		/* no test on change? the "altered" msg below might be mistaken */
 		sgi_write_table();
 	}
 	else if (LABEL_IS_SUN) {
@@ -2601,7 +2601,7 @@
 		}
 	}
 
-	printf("The partition table has been altered.\n");
+	puts("The partition table has been altered.");
 	reread_partition_table(1);
 }
 #endif /* FEATURE_FDISK_WRITABLE */
@@ -2744,8 +2744,8 @@
 			user_sectors = g_sectors = read_int(1, g_sectors, 63, 0, "Number of sectors");
 			if (dos_compatible_flag) {
 				sector_offset = g_sectors;
-				printf("Warning: setting sector offset for DOS "
-					"compatiblity\n");
+				puts("Warning: setting sector offset for DOS "
+					"compatiblity");
 			}
 			update_units();
 			break;
@@ -3024,7 +3024,7 @@
 					sgi_get_bootfile());
 				if (read_maybe_empty("Please enter the name of the "
 						"new boot file: ") == '\n')
-					printf("Boot file unchanged\n");
+					puts("Boot file unchanged");
 				else
 					sgi_set_bootfile(line_ptr);
 			}
@@ -3106,8 +3106,8 @@
 #if ENABLE_FEATURE_FDISK_ADVANCED
 		case 'x':
 			if (LABEL_IS_SGI) {
-				printf("\n\tSorry, no experts menu for SGI "
-					"partition tables available\n\n");
+				puts("\n\tSorry, no experts menu for SGI "
+					"partition tables available\n");
 			} else
 				xselect();
 			break;
diff --git a/util-linux/fdisk_gpt.c b/util-linux/fdisk_gpt.c
index 5786d5f..715e227 100644
--- a/util-linux/fdisk_gpt.c
+++ b/util-linux/fdisk_gpt.c
@@ -106,7 +106,7 @@
 		(unsigned long long)SWAP_LE64(gpt_hdr->first_usable_lba),
 		(unsigned long long)SWAP_LE64(gpt_hdr->last_usable_lba));
 
-	printf("Number  Start (sector)    End (sector)  Size       Code  Name\n");
+	puts("Number  Start (sector)    End (sector)  Size       Code  Name");
 	for (i = 0; i < n_parts; i++) {
 		gpt_partition *p = gpt_part(i);
 		if (p->lba_start) {
@@ -119,7 +119,7 @@
 				numstr6,
 				0x0700 /* FIXME */);
 			gpt_print_wide(p->name, 18);
-			printf("\n");
+			bb_putchar('\n');
 		}
 	}
 }
diff --git a/util-linux/fsck_minix.c b/util-linux/fsck_minix.c
index 33767a1..d2f3524 100644
--- a/util-linux/fsck_minix.c
+++ b/util-linux/fsck_minix.c
@@ -371,9 +371,9 @@
 		}
 	}
 	if (def)
-		printf("y\n");
+		puts("y");
 	else {
-		printf("n\n");
+		puts("n");
 		errors_uncorrected = 1;
 	}
 	return def;
@@ -405,7 +405,7 @@
 		if (isatty(0) && isatty(1))
 			cont = ask("Do you really want to continue", 0);
 		if (!cont) {
-			printf("Check aborted\n");
+			puts("Check aborted");
 			exit(EXIT_SUCCESS);
 		}
 	}
@@ -470,8 +470,8 @@
 	if (!nr)
 		return;
 	if (nr < FIRSTZONE || nr >= ZONES) {
-		printf("Internal error: trying to write bad block\n"
-			   "Write request ignored\n");
+		puts("Internal error: trying to write bad block\n"
+			"Write request ignored");
 		errors_uncorrected = 1;
 		return;
 	}
@@ -659,7 +659,7 @@
 	if (INODE_BUFFER_SIZE != read(dev_fd, inode_buffer, INODE_BUFFER_SIZE))
 		die("can't read inodes");
 	if (NORM_FIRSTZONE != FIRSTZONE) {
-		printf("warning: firstzone!=norm_firstzone\n");
+		puts("warning: firstzone!=norm_firstzone");
 		errors_uncorrected = 1;
 	}
 	get_dirsize();
@@ -713,7 +713,7 @@
 	} else
 		links++;
 	if (!++inode_count[nr]) {
-		printf("Warning: inode count too big\n");
+		puts("Warning: inode count too big");
 		inode_count[nr]--;
 		errors_uncorrected = 1;
 	}
@@ -1299,7 +1299,7 @@
 	}
 	if (changed) {
 		write_tables();
-		printf("FILE SYSTEM HAS BEEN CHANGED\n");
+		puts("FILE SYSTEM HAS BEEN CHANGED");
 		sync();
 	} else if (OPT_repair)
 		write_superblock();
diff --git a/util-linux/getopt.c b/util-linux/getopt.c
index 58df1c8..b9dadf1 100644
--- a/util-linux/getopt.c
+++ b/util-linux/getopt.c
@@ -378,7 +378,7 @@
 		if (compatible) {
 			/* For some reason, the original getopt gave no error
 			 * when there were no arguments. */
-			printf(" --\n");
+			puts(" --");
 			return 0;
 		}
 		bb_error_msg_and_die("missing optstring argument");
diff --git a/util-linux/ipcrm.c b/util-linux/ipcrm.c
index 888f70e..38d81af 100644
--- a/util-linux/ipcrm.c
+++ b/util-linux/ipcrm.c
@@ -119,7 +119,7 @@
 
 			if (remove_ids(what, &argv[2]))
 				fflush_stdout_and_exit(EXIT_FAILURE);
-			printf("resource(s) deleted\n");
+			puts("resource(s) deleted");
 			return 0;
 		}
 	}
