diff --git a/util-linux/fdformat.c b/util-linux/fdformat.c
index 2f0854a..b3e918f 100644
--- a/util-linux/fdformat.c
+++ b/util-linux/fdformat.c
@@ -116,7 +116,7 @@
 			/* Check backwards so we don't need a counter */
 			while (--read_bytes >= 0) {
 				if (data[read_bytes] != FD_FILL_BYTE) {
-					 printf("bad data in cyl %d\nContinuing... ", cyl);
+					printf("bad data in cyl %d\nContinuing... ", cyl);
 				}
 			}
 		}
diff --git a/util-linux/fdisk.c b/util-linux/fdisk.c
index c0be15a..39eb27b 100644
--- a/util-linux/fdisk.c
+++ b/util-linux/fdisk.c
@@ -3023,7 +3023,7 @@
 				printf("\nThe current boot file is: %s\n",
 					sgi_get_bootfile());
 				if (read_maybe_empty("Please enter the name of the "
-						   "new boot file: ") == '\n')
+						"new boot file: ") == '\n')
 					printf("Boot file unchanged\n");
 				else
 					sgi_set_bootfile(line_ptr);
diff --git a/util-linux/flock.c b/util-linux/flock.c
index e9be4ee..05a747f 100644
--- a/util-linux/flock.c
+++ b/util-linux/flock.c
@@ -45,7 +45,7 @@
 	if (argv[1]) {
 		fd = open(argv[0], O_RDONLY|O_NOCTTY|O_CREAT, 0666);
 		if (fd < 0 && errno == EISDIR)
-		        fd = open(argv[0], O_RDONLY|O_NOCTTY);
+			fd = open(argv[0], O_RDONLY|O_NOCTTY);
 		if (fd < 0)
 			bb_perror_msg_and_die("can't open '%s'", argv[0]);
 		//TODO? close_on_exec_on(fd);
diff --git a/util-linux/ipcrm.c b/util-linux/ipcrm.c
index 274050c..888f70e 100644
--- a/util-linux/ipcrm.c
+++ b/util-linux/ipcrm.c
@@ -160,7 +160,7 @@
 
 			/* convert key to id */
 			id = ((c == 'q') ? msgget(key, 0) :
-				  (c == 'm') ? shmget(key, 0, 0) : semget(key, 0, 0));
+				(c == 'm') ? shmget(key, 0, 0) : semget(key, 0, 0));
 
 			if (id < 0) {
 				const char *errmsg;
@@ -189,8 +189,8 @@
 		}
 
 		result = ((c == 'q') ? msgctl(id, IPC_RMID, NULL) :
-				  (c == 'm') ? shmctl(id, IPC_RMID, NULL) :
-				  semctl(id, 0, IPC_RMID, arg));
+				(c == 'm') ? shmctl(id, IPC_RMID, NULL) :
+				semctl(id, 0, IPC_RMID, arg));
 
 		if (result) {
 			const char *errmsg;
diff --git a/util-linux/ipcs.c b/util-linux/ipcs.c
index ee7df5e..8fdaf0b 100644
--- a/util-linux/ipcs.c
+++ b/util-linux/ipcs.c
@@ -154,52 +154,52 @@
 		/* glibc 2.1.3 and all earlier libc's have ints as fields
 		   of struct shminfo; glibc 2.1.91 has unsigned long; ach */
 		printf("max number of segments = %lu\n"
-				  "max seg size (kbytes) = %lu\n"
-				  "max total shared memory (pages) = %lu\n"
-				  "min seg size (bytes) = %lu\n",
-				  (unsigned long) shminfo.shmmni,
-				  (unsigned long) (shminfo.shmmax >> 10),
-				  (unsigned long) shminfo.shmall,
-				  (unsigned long) shminfo.shmmin);
+				"max seg size (kbytes) = %lu\n"
+				"max total shared memory (pages) = %lu\n"
+				"min seg size (bytes) = %lu\n",
+				(unsigned long) shminfo.shmmni,
+				(unsigned long) (shminfo.shmmax >> 10),
+				(unsigned long) shminfo.shmall,
+				(unsigned long) shminfo.shmmin);
 		return;
 
 	case STATUS:
 		printf("------ Shared Memory %s --------\n", "Status");
-		printf(	  "segments allocated %d\n"
-				  "pages allocated %ld\n"
-				  "pages resident  %ld\n"
-				  "pages swapped   %ld\n"
-				  "Swap performance: %ld attempts\t%ld successes\n",
-				  shm_info.used_ids,
-				  shm_info.shm_tot,
-				  shm_info.shm_rss,
-				  shm_info.shm_swp,
-				  shm_info.swap_attempts, shm_info.swap_successes);
+		printf("segments allocated %d\n"
+				"pages allocated %ld\n"
+				"pages resident  %ld\n"
+				"pages swapped   %ld\n"
+				"Swap performance: %ld attempts\t%ld successes\n",
+				shm_info.used_ids,
+				shm_info.shm_tot,
+				shm_info.shm_rss,
+				shm_info.shm_swp,
+				shm_info.swap_attempts, shm_info.swap_successes);
 		return;
 
 	case CREATOR:
 		printf("------ Shared Memory %s --------\n", "Segment Creators/Owners");
-		printf(	  "%-10s %-10s %-10s %-10s %-10s %-10s\n",
-				  "shmid", "perms", "cuid", "cgid", "uid", "gid");
+		printf("%-10s %-10s %-10s %-10s %-10s %-10s\n",
+				"shmid", "perms", "cuid", "cgid", "uid", "gid");
 		break;
 
 	case TIME:
 		printf("------ Shared Memory %s --------\n", "Attach/Detach/Change Times");
-		printf(	  "%-10s %-10s %-20s %-20s %-20s\n",
-				  "shmid", "owner", "attached", "detached", "changed");
+		printf("%-10s %-10s %-20s %-20s %-20s\n",
+				"shmid", "owner", "attached", "detached", "changed");
 		break;
 
 	case PID:
 		printf("------ Shared Memory %s --------\n", "Creator/Last-op");
-		printf(	  "%-10s %-10s %-10s %-10s\n",
-				  "shmid", "owner", "cpid", "lpid");
+		printf("%-10s %-10s %-10s %-10s\n",
+				"shmid", "owner", "cpid", "lpid");
 		break;
 
 	default:
 		printf("------ Shared Memory %s --------\n", "Segments");
-		printf(	  "%-10s %-10s %-10s %-10s %-10s %-10s %-12s\n",
-				  "key", "shmid", "owner", "perms", "bytes", "nattch",
-				  "status");
+		printf("%-10s %-10s %-10s %-10s %-10s %-10s %-12s\n",
+				"key", "shmid", "owner", "perms", "bytes", "nattch",
+				"status");
 		break;
 	}
 
@@ -220,11 +220,11 @@
 				printf("%-10d %-10d", shmid, ipcp->uid);
 			/* ctime uses static buffer: use separate calls */
 			printf(" %-20.16s", shmseg.shm_atime
-					  ? ctime(&shmseg.shm_atime) + 4 : "Not set");
+					? ctime(&shmseg.shm_atime) + 4 : "Not set");
 			printf(" %-20.16s", shmseg.shm_dtime
-					  ? ctime(&shmseg.shm_dtime) + 4 : "Not set");
+					? ctime(&shmseg.shm_dtime) + 4 : "Not set");
 			printf(" %-20.16s\n", shmseg.shm_ctime
-					  ? ctime(&shmseg.shm_ctime) + 4 : "Not set");
+					? ctime(&shmseg.shm_ctime) + 4 : "Not set");
 			break;
 		case PID:
 			if (pw)
@@ -241,17 +241,17 @@
 			else
 				printf("%-10d %-10d", shmid, ipcp->uid);
 			printf(" %-10o %-10lu %-10ld %-6s %-6s\n", ipcp->mode & 0777,
-					  /*
-					   * earlier: int, Austin has size_t
-					   */
-					  (unsigned long) shmseg.shm_segsz,
-					  /*
-					   * glibc-2.1.3 and earlier has unsigned short;
-					   * Austin has shmatt_t
-					   */
-					  (long) shmseg.shm_nattch,
-					  ipcp->mode & SHM_DEST ? "dest" : " ",
-					  ipcp->mode & SHM_LOCKED ? "locked" : " ");
+					/*
+					 * earlier: int, Austin has size_t
+					 */
+					(unsigned long) shmseg.shm_segsz,
+					/*
+					 * glibc-2.1.3 and earlier has unsigned short;
+					 * Austin has shmatt_t
+					 */
+					(long) shmseg.shm_nattch,
+					ipcp->mode & SHM_DEST ? "dest" : " ",
+					ipcp->mode & SHM_LOCKED ? "locked" : " ");
 			break;
 		}
 	}
@@ -281,32 +281,32 @@
 		if ((semctl(0, 0, IPC_INFO, arg)) < 0)
 			return;
 		printf("max number of arrays = %d\n"
-				  "max semaphores per array = %d\n"
-				  "max semaphores system wide = %d\n"
-				  "max ops per semop call = %d\n"
-				  "semaphore max value = %d\n",
-				  seminfo.semmni,
-				  seminfo.semmsl,
-				  seminfo.semmns, seminfo.semopm, seminfo.semvmx);
+				"max semaphores per array = %d\n"
+				"max semaphores system wide = %d\n"
+				"max ops per semop call = %d\n"
+				"semaphore max value = %d\n",
+				seminfo.semmni,
+				seminfo.semmsl,
+				seminfo.semmns, seminfo.semopm, seminfo.semvmx);
 		return;
 
 	case STATUS:
 		printf("------ Semaphore %s --------\n", "Status");
-		printf(	  "used arrays = %d\n"
-				  "allocated semaphores = %d\n",
-				  seminfo.semusz, seminfo.semaem);
+		printf("used arrays = %d\n"
+				"allocated semaphores = %d\n",
+				seminfo.semusz, seminfo.semaem);
 		return;
 
 	case CREATOR:
 		printf("------ Semaphore %s --------\n", "Arrays Creators/Owners");
-		printf(	  "%-10s %-10s %-10s %-10s %-10s %-10s\n",
-				  "semid", "perms", "cuid", "cgid", "uid", "gid");
+		printf("%-10s %-10s %-10s %-10s %-10s %-10s\n",
+				"semid", "perms", "cuid", "cgid", "uid", "gid");
 		break;
 
 	case TIME:
 		printf("------ Shared Memory %s --------\n", "Operation/Change Times");
-		printf(	  "%-8s %-10s %-26.24s %-26.24s\n",
-				  "shmid", "owner", "last-op", "last-changed");
+		printf("%-8s %-10s %-26.24s %-26.24s\n",
+				"shmid", "owner", "last-op", "last-changed");
 		break;
 
 	case PID:
@@ -314,8 +314,8 @@
 
 	default:
 		printf("------ Semaphore %s --------\n", "Arrays");
-		printf(	  "%-10s %-10s %-10s %-10s %-10s\n",
-				  "key", "semid", "owner", "perms", "nsems");
+		printf("%-10s %-10s %-10s %-10s %-10s\n",
+				"key", "semid", "owner", "perms", "nsems");
 		break;
 	}
 
@@ -337,9 +337,9 @@
 				printf("%-8d %-10d", semid, ipcp->uid);
 			/* ctime uses static buffer: use separate calls */
 			printf("  %-26.24s", semary.sem_otime
-					  ? ctime(&semary.sem_otime) : "Not set");
+					? ctime(&semary.sem_otime) : "Not set");
 			printf(" %-26.24s\n", semary.sem_ctime
-					  ? ctime(&semary.sem_ctime) : "Not set");
+					? ctime(&semary.sem_ctime) : "Not set");
 			break;
 		case PID:
 			break;
@@ -351,13 +351,13 @@
 			else
 				printf("%-10d %-9d", semid, ipcp->uid);
 			printf(" %-10o %-10ld\n", ipcp->mode & 0777,
-					  /*
-					   * glibc-2.1.3 and earlier has unsigned short;
-					   * glibc-2.1.91 has variation between
-					   * unsigned short and unsigned long
-					   * Austin prescribes unsigned short.
-					   */
-					  (long) semary.sem_nsems);
+					/*
+					 * glibc-2.1.3 and earlier has unsigned short;
+					 * glibc-2.1.91 has variation between
+					 * unsigned short and unsigned long
+					 * Austin prescribes unsigned short.
+					 */
+					(long) semary.sem_nsems);
 			break;
 		}
 	}
@@ -383,42 +383,42 @@
 		if ((msgctl(0, IPC_INFO, (struct msqid_ds *) (void *) &msginfo)) < 0)
 			return;
 		printf("------ Message%s --------\n", "s: Limits");
-		printf(	  "max queues system wide = %d\n"
-				  "max size of message (bytes) = %d\n"
-				  "default max size of queue (bytes) = %d\n",
-				  msginfo.msgmni, msginfo.msgmax, msginfo.msgmnb);
+		printf("max queues system wide = %d\n"
+				"max size of message (bytes) = %d\n"
+				"default max size of queue (bytes) = %d\n",
+				msginfo.msgmni, msginfo.msgmax, msginfo.msgmnb);
 		return;
 
 	case STATUS:
 		printf("------ Message%s --------\n", "s: Status");
-		printf(	  "allocated queues = %d\n"
-				  "used headers = %d\n"
-				  "used space = %d bytes\n",
-				  msginfo.msgpool, msginfo.msgmap, msginfo.msgtql);
+		printf("allocated queues = %d\n"
+				"used headers = %d\n"
+				"used space = %d bytes\n",
+				msginfo.msgpool, msginfo.msgmap, msginfo.msgtql);
 		return;
 
 	case CREATOR:
 		printf("------ Message%s --------\n", " Queues: Creators/Owners");
-		printf(	  "%-10s %-10s %-10s %-10s %-10s %-10s\n",
-				  "msqid", "perms", "cuid", "cgid", "uid", "gid");
+		printf("%-10s %-10s %-10s %-10s %-10s %-10s\n",
+				"msqid", "perms", "cuid", "cgid", "uid", "gid");
 		break;
 
 	case TIME:
 		printf("------ Message%s --------\n", " Queues Send/Recv/Change Times");
-		printf(	  "%-8s %-10s %-20s %-20s %-20s\n",
-				  "msqid", "owner", "send", "recv", "change");
+		printf("%-8s %-10s %-20s %-20s %-20s\n",
+				"msqid", "owner", "send", "recv", "change");
 		break;
 
 	case PID:
 		printf("------ Message%s --------\n", " Queues PIDs");
-		printf(	  "%-10s %-10s %-10s %-10s\n",
-				  "msqid", "owner", "lspid", "lrpid");
+		printf("%-10s %-10s %-10s %-10s\n",
+				"msqid", "owner", "lspid", "lrpid");
 		break;
 
 	default:
 		printf("------ Message%s --------\n", " Queues");
-		printf(	  "%-10s %-10s %-10s %-10s %-12s %-12s\n",
-				  "key", "msqid", "owner", "perms", "used-bytes", "messages");
+		printf("%-10s %-10s %-10s %-10s %-12s %-12s\n",
+				"key", "msqid", "owner", "perms", "used-bytes", "messages");
 		break;
 	}
 
@@ -438,11 +438,11 @@
 			else
 				printf("%-8d %-10d", msqid, ipcp->uid);
 			printf(" %-20.16s", msgque.msg_stime
-					  ? ctime(&msgque.msg_stime) + 4 : "Not set");
+					? ctime(&msgque.msg_stime) + 4 : "Not set");
 			printf(" %-20.16s", msgque.msg_rtime
-					  ? ctime(&msgque.msg_rtime) + 4 : "Not set");
+					? ctime(&msgque.msg_rtime) + 4 : "Not set");
 			printf(" %-20.16s\n", msgque.msg_ctime
-					  ? ctime(&msgque.msg_ctime) + 4 : "Not set");
+					? ctime(&msgque.msg_ctime) + 4 : "Not set");
 			break;
 		case PID:
 			if (pw)
@@ -459,13 +459,13 @@
 			else
 				printf("%-10d %-10d", msqid, ipcp->uid);
 			printf(" %-10o %-12ld %-12ld\n", ipcp->mode & 0777,
-					  /*
-					   * glibc-2.1.3 and earlier has unsigned short;
-					   * glibc-2.1.91 has variation between
-					   * unsigned short, unsigned long
-					   * Austin has msgqnum_t
-					   */
-					  (long) msgque.msg_cbytes, (long) msgque.msg_qnum);
+					/*
+					 * glibc-2.1.3 and earlier has unsigned short;
+					 * glibc-2.1.91 has variation between
+					 * unsigned short, unsigned long
+					 * Austin has msgqnum_t
+					 */
+					(long) msgque.msg_cbytes, (long) msgque.msg_qnum);
 			break;
 		}
 	}
@@ -483,18 +483,18 @@
 	}
 
 	printf("\nShared memory Segment shmid=%d\n"
-			  "uid=%d\tgid=%d\tcuid=%d\tcgid=%d\n"
-			  "mode=%#o\taccess_perms=%#o\n"
-			  "bytes=%ld\tlpid=%d\tcpid=%d\tnattch=%ld\n",
-			  shmid,
-			  ipcp->uid, ipcp->gid, ipcp->cuid, ipcp->cgid,
-			  ipcp->mode, ipcp->mode & 0777,
-			  (long) shmds.shm_segsz, shmds.shm_lpid, shmds.shm_cpid,
-			  (long) shmds.shm_nattch);
+			"uid=%d\tgid=%d\tcuid=%d\tcgid=%d\n"
+			"mode=%#o\taccess_perms=%#o\n"
+			"bytes=%ld\tlpid=%d\tcpid=%d\tnattch=%ld\n",
+			shmid,
+			ipcp->uid, ipcp->gid, ipcp->cuid, ipcp->cgid,
+			ipcp->mode, ipcp->mode & 0777,
+			(long) shmds.shm_segsz, shmds.shm_lpid, shmds.shm_cpid,
+			(long) shmds.shm_nattch);
 	printf("att_time=%-26.24s\n",
-			  shmds.shm_atime ? ctime(&shmds.shm_atime) : "Not set");
+			shmds.shm_atime ? ctime(&shmds.shm_atime) : "Not set");
 	printf("det_time=%-26.24s\n",
-			  shmds.shm_dtime ? ctime(&shmds.shm_dtime) : "Not set");
+			shmds.shm_dtime ? ctime(&shmds.shm_dtime) : "Not set");
 	printf("change_time=%-26.24s\n\n", ctime(&shmds.shm_ctime));
 }
 
@@ -510,24 +510,24 @@
 	}
 
 	printf("\nMessage Queue msqid=%d\n"
-			  "uid=%d\tgid=%d\tcuid=%d\tcgid=%d\tmode=%#o\n"
-			  "cbytes=%ld\tqbytes=%ld\tqnum=%ld\tlspid=%d\tlrpid=%d\n",
-			  msqid, ipcp->uid, ipcp->gid, ipcp->cuid, ipcp->cgid, ipcp->mode,
-			  /*
-			   * glibc-2.1.3 and earlier has unsigned short;
-			   * glibc-2.1.91 has variation between
-			   * unsigned short, unsigned long
-			   * Austin has msgqnum_t (for msg_qbytes)
-			   */
-			  (long) buf.msg_cbytes, (long) buf.msg_qbytes,
-			  (long) buf.msg_qnum, buf.msg_lspid, buf.msg_lrpid);
+			"uid=%d\tgid=%d\tcuid=%d\tcgid=%d\tmode=%#o\n"
+			"cbytes=%ld\tqbytes=%ld\tqnum=%ld\tlspid=%d\tlrpid=%d\n",
+			msqid, ipcp->uid, ipcp->gid, ipcp->cuid, ipcp->cgid, ipcp->mode,
+			/*
+			 * glibc-2.1.3 and earlier has unsigned short;
+			 * glibc-2.1.91 has variation between
+			 * unsigned short, unsigned long
+			 * Austin has msgqnum_t (for msg_qbytes)
+			 */
+			(long) buf.msg_cbytes, (long) buf.msg_qbytes,
+			(long) buf.msg_qnum, buf.msg_lspid, buf.msg_lrpid);
 
 	printf("send_time=%-26.24s\n",
-			  buf.msg_stime ? ctime(&buf.msg_stime) : "Not set");
+			buf.msg_stime ? ctime(&buf.msg_stime) : "Not set");
 	printf("rcv_time=%-26.24s\n",
-			  buf.msg_rtime ? ctime(&buf.msg_rtime) : "Not set");
+			buf.msg_rtime ? ctime(&buf.msg_rtime) : "Not set");
 	printf("change_time=%-26.24s\n\n",
-			  buf.msg_ctime ? ctime(&buf.msg_ctime) : "Not set");
+			buf.msg_ctime ? ctime(&buf.msg_ctime) : "Not set");
 }
 
 static void print_sem(int semid)
@@ -544,19 +544,19 @@
 	}
 
 	printf("\nSemaphore Array semid=%d\n"
-			  "uid=%d\t gid=%d\t cuid=%d\t cgid=%d\n"
-			  "mode=%#o, access_perms=%#o\n"
-			  "nsems = %ld\n"
-			  "otime = %-26.24s\n",
-			  semid,
-			  ipcp->uid, ipcp->gid, ipcp->cuid, ipcp->cgid,
-			  ipcp->mode, ipcp->mode & 0777,
-			  (long) semds.sem_nsems,
-			  semds.sem_otime ? ctime(&semds.sem_otime) : "Not set");
+			"uid=%d\t gid=%d\t cuid=%d\t cgid=%d\n"
+			"mode=%#o, access_perms=%#o\n"
+			"nsems = %ld\n"
+			"otime = %-26.24s\n",
+			semid,
+			ipcp->uid, ipcp->gid, ipcp->cuid, ipcp->cgid,
+			ipcp->mode, ipcp->mode & 0777,
+			(long) semds.sem_nsems,
+			semds.sem_otime ? ctime(&semds.sem_otime) : "Not set");
 	printf("ctime = %-26.24s\n"
-			  "%-10s %-10s %-10s %-10s %-10s\n",
-			  ctime(&semds.sem_ctime),
-			  "semnum", "value", "ncount", "zcount", "pid");
+			"%-10s %-10s %-10s %-10s %-10s\n",
+			ctime(&semds.sem_ctime),
+			"semnum", "value", "ncount", "zcount", "pid");
 
 	arg.val = 0;
 	for (i = 0; i < semds.sem_nsems; i++) {
diff --git a/util-linux/lspci.c b/util-linux/lspci.c
index 5184858..514678a 100644
--- a/util-linux/lspci.c
+++ b/util-linux/lspci.c
@@ -74,11 +74,11 @@
 
 	if (option_mask32 & OPT_m) {
 		printf("%s \"Class %04x\" \"%04x\" \"%04x\" \"%04x\" \"%04x\"",
-		       pci_slot_name, pci_class, pci_vid, pci_did,
-		       pci_subsys_vid, pci_subsys_did);
+			pci_slot_name, pci_class, pci_vid, pci_did,
+			pci_subsys_vid, pci_subsys_did);
 	} else {
 		printf("%s Class %04x: %04x:%04x",
-		       pci_slot_name, pci_class, pci_vid, pci_did);
+			pci_slot_name, pci_class, pci_vid, pci_did);
 	}
 
 	if ((option_mask32 & OPT_k) && driver) {
diff --git a/util-linux/mount.c b/util-linux/mount.c
index 525fdcc..bcb298c 100644
--- a/util-linux/mount.c
+++ b/util-linux/mount.c
@@ -927,7 +927,7 @@
 static bool_t xdr_fhstatus(XDR *xdrs, fhstatus *objp)
 {
 	if (!xdr_u_int(xdrs, &objp->fhs_status))
-		 return FALSE;
+		return FALSE;
 	if (objp->fhs_status == 0)
 		return xdr_fhandle(xdrs, objp->fhstatus_u.fhs_fhandle);
 	return TRUE;
@@ -941,8 +941,8 @@
 static bool_t xdr_fhandle3(XDR *xdrs, fhandle3 *objp)
 {
 	return xdr_bytes(xdrs, (char **)&objp->fhandle3_val,
-			   (unsigned int *) &objp->fhandle3_len,
-			   FHSIZE3);
+			(unsigned int *) &objp->fhandle3_len,
+			FHSIZE3);
 }
 
 static bool_t xdr_mountres3_ok(XDR *xdrs, mountres3_ok *objp)
@@ -950,10 +950,10 @@
 	if (!xdr_fhandle3(xdrs, &objp->fhandle))
 		return FALSE;
 	return xdr_array(xdrs, &(objp->auth_flavours.auth_flavours_val),
-			   &(objp->auth_flavours.auth_flavours_len),
-			   ~0,
-			   sizeof(int),
-			   (xdrproc_t) xdr_int);
+			&(objp->auth_flavours.auth_flavours_len),
+			~0,
+			sizeof(int),
+			(xdrproc_t) xdr_int);
 }
 
 static bool_t xdr_mountstat3(XDR *xdrs, mountstat3 *objp)
@@ -1522,19 +1522,19 @@
 		switch (pm_mnt.pm_prot) {
 		case IPPROTO_UDP:
 			mclient = clntudp_create(&mount_server_addr,
-						 pm_mnt.pm_prog,
-						 pm_mnt.pm_vers,
-						 retry_timeout,
-						 &msock);
+						pm_mnt.pm_prog,
+						pm_mnt.pm_vers,
+						retry_timeout,
+						&msock);
 			if (mclient)
 				break;
 			mount_server_addr.sin_port = htons(pm_mnt.pm_port);
 			msock = RPC_ANYSOCK;
 		case IPPROTO_TCP:
 			mclient = clnttcp_create(&mount_server_addr,
-						 pm_mnt.pm_prog,
-						 pm_mnt.pm_vers,
-						 &msock, 0, 0);
+						pm_mnt.pm_prog,
+						pm_mnt.pm_vers,
+						&msock, 0, 0);
 			break;
 		default:
 			mclient = NULL;
@@ -1555,18 +1555,18 @@
 
 			if (pm_mnt.pm_vers == 3)
 				clnt_stat = clnt_call(mclient, MOUNTPROC3_MNT,
-					      (xdrproc_t) xdr_dirpath,
-					      (caddr_t) &pathname,
-					      (xdrproc_t) xdr_mountres3,
-					      (caddr_t) &status,
-					      total_timeout);
+						(xdrproc_t) xdr_dirpath,
+						(caddr_t) &pathname,
+						(xdrproc_t) xdr_mountres3,
+						(caddr_t) &status,
+						total_timeout);
 			else
 				clnt_stat = clnt_call(mclient, MOUNTPROC_MNT,
-					      (xdrproc_t) xdr_dirpath,
-					      (caddr_t) &pathname,
-					      (xdrproc_t) xdr_fhstatus,
-					      (caddr_t) &status,
-					      total_timeout);
+						(xdrproc_t) xdr_dirpath,
+						(caddr_t) &pathname,
+						(xdrproc_t) xdr_fhstatus,
+						(caddr_t) &status,
+						total_timeout);
 
 			if (clnt_stat == RPC_SUCCESS)
 				goto prepare_kernel_data; /* we're done */
diff --git a/util-linux/readprofile.c b/util-linux/readprofile.c
index 4ed8011..974fe89 100644
--- a/util-linux/readprofile.c
+++ b/util-linux/readprofile.c
@@ -163,7 +163,7 @@
 	while (fgets(mapline, S_LEN, map)) {
 		if (sscanf(mapline, "%llx %s %s", &fn_add, mode, fn_name) != 3)
 			bb_error_msg_and_die("%s(%i): wrong map line",
-					     mapFile, maplineno);
+					mapFile, maplineno);
 
 		if (!strcmp(fn_name, "_stext")) /* only elf works like this */ {
 			add0 = fn_add;
@@ -198,7 +198,7 @@
 
 		if (indx >= len / sizeof(*buf))
 			bb_error_msg_and_die("profile address out of range. "
-					     "Wrong map file?");
+					"Wrong map file?");
 
 		while (indx < (next_add-add0)/step) {
 			if (optBins && (buf[indx] || optAll)) {
@@ -220,10 +220,10 @@
 		) {
 			if (optVerbose)
 				printf("%016llx %-40s %6i %8.4f\n", fn_add,
-				       fn_name, this, this/(double)fn_len);
+					fn_name, this, this/(double)fn_len);
 			else
 				printf("%6i %-40s %8.4f\n",
-				       this, fn_name, this/(double)fn_len);
+					this, fn_name, this/(double)fn_len);
 			if (optSub) {
 				unsigned long long scan;
 
@@ -233,8 +233,8 @@
 
 					addr = (scan - 1)*step + add0;
 					printf("\t%#llx\t%s+%#llx\t%u\n",
-					       addr, fn_name, addr - fn_add,
-					       buf[scan]);
+						addr, fn_name, addr - fn_add,
+						buf[scan]);
 				}
 			}
 		}
@@ -251,10 +251,10 @@
 	/* trailer */
 	if (optVerbose)
 		printf("%016x %-40s %6i %8.4f\n",
-		       0, "total", total, total/(double)(fn_add-add0));
+			0, "total", total, total/(double)(fn_add-add0));
 	else
 		printf("%6i %-40s %8.4f\n",
-		       total, "total", total/(double)(fn_add-add0));
+			total, "total", total/(double)(fn_add-add0));
 
 	fclose(map);
 	free(buf);
diff --git a/util-linux/volume_id/linux_raid.c b/util-linux/volume_id/linux_raid.c
index 761e54f..209eaab 100644
--- a/util-linux/volume_id/linux_raid.c
+++ b/util-linux/volume_id/linux_raid.c
@@ -69,9 +69,9 @@
 	volume_id_set_uuid(id, uuid, UUID_DCE);
 
 //	snprintf(id->type_version, sizeof(id->type_version)-1, "%u.%u.%u",
-//		 le32_to_cpu(mdp->major_version),
-//		 le32_to_cpu(mdp->minor_version),
-//		 le32_to_cpu(mdp->patch_version));
+//		le32_to_cpu(mdp->major_version),
+//		le32_to_cpu(mdp->minor_version),
+//		le32_to_cpu(mdp->patch_version));
 
 	dbg("found raid signature");
 //	volume_id_set_usage(id, VOLUME_ID_RAID);
diff --git a/util-linux/volume_id/util.c b/util-linux/volume_id/util.c
index 0e2d24b..061545f 100644
--- a/util-linux/volume_id/util.c
+++ b/util-linux/volume_id/util.c
@@ -129,7 +129,7 @@
 
 void volume_id_set_label_unicode16(struct volume_id *id, const uint8_t *buf, enum endian endianess, size_t count)
 {
-	 volume_id_set_unicode16(id->label, sizeof(id->label), buf, endianess, count);
+	volume_id_set_unicode16(id->label, sizeof(id->label), buf, endianess, count);
 }
 
 void volume_id_set_uuid(struct volume_id *id, const uint8_t *buf, enum uuid_format format)
