diff --git a/coreutils/Config.in b/coreutils/Config.in
index 07005b8..20b5955 100644
--- a/coreutils/Config.in
+++ b/coreutils/Config.in
@@ -120,11 +120,11 @@
 	default y
 	depends on CONFIG_DD
 	help
-	  sending a SIGUSR1 signal to a running `dd' process makes it 
-	  print to standard error the number of records read and written 
+	  sending a SIGUSR1 signal to a running `dd' process makes it
+	  print to standard error the number of records read and written
 	  so far, then to resume copying.
 
-	  $ dd if=/dev/zero of=/dev/null& pid=$! $ kill -USR1 $pid; sleep 1; kill $pid 
+	  $ dd if=/dev/zero of=/dev/null& pid=$! $ kill -USR1 $pid; sleep 1; kill $pid
 	  10899206+0 records in 10899206+0 records out
 
 config CONFIG_FEATURE_DD_IBS_OBS
@@ -744,9 +744,9 @@
 	depends on CONFIG_LS || CONFIG_MORE || CONFIG_TELNET
 	help
 	  This option allows utilities such as 'ls', 'more' and 'telnet'
-	  to determine the width of the screen, which can allow them to 
+	  to determine the width of the screen, which can allow them to
 	  display additional text or avoid wrapping text onto the next line.
-	  If you leave this disabled, your utilities will be especially 
+	  If you leave this disabled, your utilities will be especially
 	  primitive and will be unable to determine the current screen width.
 
 comment "Common options for df, du, ls"
diff --git a/coreutils/cal.c b/coreutils/cal.c
index 9628459..8996aa8 100644
--- a/coreutils/cal.c
+++ b/coreutils/cal.c
@@ -33,7 +33,7 @@
 };
 
 static const char sep1752[] = {
-	         1,	2,	14,	15,	16,
+		 1,	2,	14,	15,	16,
 	17,	18,	19,	20,	21,	22,	23,
 	24,	25,	26,	27,	28,	29,	30
 };
@@ -207,7 +207,7 @@
 
 	if ((month == 9) && (year == 1752)) {
 		size_t oday = 0;
-		
+
 		j_offset = julian * 244;
 		do {
 			days[oday+2] = sep1752[oday] + j_offset;
diff --git a/coreutils/cksum.c b/coreutils/cksum.c
index 9a45fd6..9bec3bf 100644
--- a/coreutils/cksum.c
+++ b/coreutils/cksum.c
@@ -10,7 +10,7 @@
 
 int cksum_main(int argc, char **argv)
 {
-	
+
 	uint32_t *crc32_table = crc32_filltable(1);
 
 	FILE *fp;
diff --git a/coreutils/cp.c b/coreutils/cp.c
index f5baa0d..85086aa 100644
--- a/coreutils/cp.c
+++ b/coreutils/cp.c
@@ -77,7 +77,7 @@
 	/* If there are only two arguments and...  */
 	if (optind + 2 == argc) {
 		s_flags = cp_mv_stat2(*argv, &source_stat,
-		                      (flags & FILEUTILS_DEREFERENCE) ? stat : lstat);
+				      (flags & FILEUTILS_DEREFERENCE) ? stat : lstat);
 		if ((s_flags < 0) || ((d_flags = cp_mv_stat(last, &dest_stat)) < 0)) {
 			exit(EXIT_FAILURE);
 		}
diff --git a/coreutils/dd.c b/coreutils/dd.c
index a9536a5..8d859ef 100644
--- a/coreutils/dd.c
+++ b/coreutils/dd.c
@@ -200,7 +200,7 @@
 				out_part++;
 		}
 	}
-	
+
 	if (ENABLE_FEATURE_DD_IBS_OBS && oc) {
 		xwrite(ofd, obuf, oc);
 		out_part++;
diff --git a/coreutils/diff.c b/coreutils/diff.c
index 22c1574..3c409b2 100644
--- a/coreutils/diff.c
+++ b/coreutils/diff.c
@@ -820,8 +820,8 @@
 }
 
 /*
- *      The following code uses an algorithm due to Harold Stone, 
- *      which finds a pair of longest identical subsequences in 
+ *      The following code uses an algorithm due to Harold Stone,
+ *      which finds a pair of longest identical subsequences in
  *      the two files.
  *
  *      The major goal is to generate the match vector J.
diff --git a/coreutils/head.c b/coreutils/head.c
index e961ca6..8dc6ee0 100644
--- a/coreutils/head.c
+++ b/coreutils/head.c
@@ -28,7 +28,7 @@
 	{ NULL, 0 }
 };
 #endif
-                                        
+
 static const char header_fmt_str[] = "\n==> %s <==\n";
 
 int head_main(int argc, char **argv)
@@ -83,8 +83,8 @@
 #if !ENABLE_FEATURE_FANCY_HEAD
 				count = bb_xgetularg10(p);
 #else
-				count = bb_xgetularg_bnd_sfx(p, 10, 
-								0, ULONG_MAX, 
+				count = bb_xgetularg_bnd_sfx(p, 10,
+								0, ULONG_MAX,
 								head_suffixes);
 #endif
 				break;
diff --git a/coreutils/ls.c b/coreutils/ls.c
index 828127a..0099f18 100644
--- a/coreutils/ls.c
+++ b/coreutils/ls.c
@@ -196,7 +196,7 @@
 #endif
 	{
 #ifdef CONFIG_SELINUX
-	        if  (is_selinux_enabled())  {
+		if  (is_selinux_enabled()) {
 		  lgetfilecon(fullname,&sid);
 		}
 #endif
diff --git a/coreutils/nohup.c b/coreutils/nohup.c
index 5dd90ad..9e9150d 100644
--- a/coreutils/nohup.c
+++ b/coreutils/nohup.c
@@ -1,11 +1,11 @@
 /* vi: set sw=4 ts=4: */
 /* nohup - invoke a utility immune to hangups.
- * 
+ *
  * Busybox version based on nohup specification at
  * http://www.opengroup.org/onlinepubs/007904975/utilities/nohup.html
- * 
+ *
  * Copyright 2006 Rob Landley <rob@landley.net>
- * 
+ *
  * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
  */
 
diff --git a/coreutils/seq.c b/coreutils/seq.c
index 0df0940..79fafbc 100644
--- a/coreutils/seq.c
+++ b/coreutils/seq.c
@@ -14,7 +14,7 @@
 int seq_main(int argc, char **argv)
 {
 	double last, first, increment, i;
-	
+
 	first = increment = 1;
 	switch (argc) {
 		case 4:
diff --git a/coreutils/sort.c b/coreutils/sort.c
index ea7752d..d86f8dc 100644
--- a/coreutils/sort.c
+++ b/coreutils/sort.c
@@ -5,7 +5,7 @@
  * Copyright (C) 2004 by Rob Landley <rob@landley.net>
  *
  * MAINTAINER: Rob Landley <rob@landley.net>
- * 
+ *
  * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
  *
  * See SuS3 sort standard at:
diff --git a/coreutils/who.c b/coreutils/who.c
index 95ad219..7566bfd 100644
--- a/coreutils/who.c
+++ b/coreutils/who.c
@@ -24,7 +24,7 @@
 static const char * idle_string (time_t t)
 {
 	static char str[6];
-	
+
 	time_t s = time(NULL) - t;
 
 	if (s < 60)
@@ -43,11 +43,11 @@
 	struct utmp *ut;
 	struct stat st;
 	char *name;
-	
+
 	if (argc > 1) {
 		bb_show_usage();
 	}
-	
+
 	setutent();
 	printf("USER       TTY      IDLE      TIME           HOST\n");
 	while ((ut = getutent()) != NULL) {
