diff --git a/miscutils/chat.c b/miscutils/chat.c
index 2040c3f..8b151fd 100644
--- a/miscutils/chat.c
+++ b/miscutils/chat.c
@@ -10,7 +10,7 @@
 #include "libbb.h"
 
 // default timeout: 45 sec
-#define	DEFAULT_CHAT_TIMEOUT 45*1000
+#define DEFAULT_CHAT_TIMEOUT 45*1000
 // max length of "abort string",
 // i.e. device reply which causes termination
 #define MAX_ABORT_LEN 50
diff --git a/miscutils/crond.c b/miscutils/crond.c
index 7f2d54c..5bf0536 100644
--- a/miscutils/crond.c
+++ b/miscutils/crond.c
@@ -35,7 +35,7 @@
 # define CRONUPDATE     "cron.update"
 #endif
 #ifndef MAXLINES
-# define MAXLINES       256	/* max lines in non-root crontabs */
+# define MAXLINES       256  /* max lines in non-root crontabs */
 #endif
 
 
@@ -170,7 +170,7 @@
 
 		/* Handle numeric digit or symbol or '*' */
 		if (*ptr == '*') {
-			n1 = 0;		/* everything will be filled */
+			n1 = 0;  /* everything will be filled */
 			n2 = modvalue - 1;
 			skip = 1;
 			++ptr;
diff --git a/miscutils/devfsd.c b/miscutils/devfsd.c
index 8f19288..35e4319 100644
--- a/miscutils/devfsd.c
+++ b/miscutils/devfsd.c
@@ -75,7 +75,7 @@
 
 /* Various defines taken from linux/devfs_fs.h */
 #define DEVFSD_PROTOCOL_REVISION_KERNEL  5
-#define	DEVFSD_IOCTL_BASE	'd'
+#define DEVFSD_IOCTL_BASE	'd'
 /*  These are the various ioctls  */
 #define DEVFSDIOC_GET_PROTO_REV         _IOR(DEVFSD_IOCTL_BASE, 0, int)
 #define DEVFSDIOC_SET_EVENT_MASK        _IOW(DEVFSD_IOCTL_BASE, 2, int)
diff --git a/miscutils/flash_eraseall.c b/miscutils/flash_eraseall.c
index b832cc1..68596e1 100644
--- a/miscutils/flash_eraseall.c
+++ b/miscutils/flash_eraseall.c
@@ -14,10 +14,10 @@
 #include <mtd/mtd-user.h>
 #include <linux/jffs2.h>
 
-#define OPTION_J	(1 << 0)
-#define OPTION_Q	(1 << 1)
-#define IS_NAND		(1 << 2)
-#define BBTEST		(1 << 3)
+#define OPTION_J  (1 << 0)
+#define OPTION_Q  (1 << 1)
+#define IS_NAND   (1 << 2)
+#define BBTEST    (1 << 3)
 
 /* mtd/jffs2-user.h used to have this atrocity:
 extern int target_endian;
diff --git a/miscutils/hdparm.c b/miscutils/hdparm.c
index d946c71..38b265d 100644
--- a/miscutils/hdparm.c
+++ b/miscutils/hdparm.c
@@ -1745,7 +1745,7 @@
 		if (-1 == read(fd, buf, sizeof(buf)))
 			bb_perror_msg("read of 512 bytes failed");
 	}
-#endif	/* HDIO_DRIVE_CMD */
+#endif  /* HDIO_DRIVE_CMD */
 	if (getset_mult || get_identity) {
 		multcount = -1;
 		if (ioctl(fd, HDIO_GET_MULTCOUNT, &multcount)) {
diff --git a/miscutils/last.c b/miscutils/last.c
index 888a0a3..fec5b70 100644
--- a/miscutils/last.c
+++ b/miscutils/last.c
@@ -46,14 +46,14 @@
 	static const char _ut_lin[] ALIGN1 =
 			"~\0" "{\0" "|\0" /* "LOGIN\0" "date\0" */;
 	enum {
-		TYPE_RUN_LVL = RUN_LVL,		/* 1 */
-		TYPE_BOOT_TIME = BOOT_TIME,	/* 2 */
+		TYPE_RUN_LVL = RUN_LVL,         /* 1 */
+		TYPE_BOOT_TIME = BOOT_TIME,     /* 2 */
 		TYPE_SHUTDOWN_TIME = SHUTDOWN_TIME
 	};
 	enum {
-		_TILDE = EMPTY,				/* 0 */
-		TYPE_NEW_TIME,	/* NEW_TIME, 3 */
-		TYPE_OLD_TIME	/* OLD_TIME, 4 */
+		_TILDE = EMPTY, /* 0 */
+		TYPE_NEW_TIME,  /* NEW_TIME, 3 */
+		TYPE_OLD_TIME   /* OLD_TIME, 4 */
 	};
 
 	if (argv[1]) {
diff --git a/miscutils/less.c b/miscutils/less.c
index d737e4c..500059d 100644
--- a/miscutils/less.c
+++ b/miscutils/less.c
@@ -21,7 +21,7 @@
  *   redirected input has been read from stdin
  */
 
-#include <sched.h>	/* sched_yield() */
+#include <sched.h>  /* sched_yield() */
 
 #include "libbb.h"
 #if ENABLE_FEATURE_LESS_REGEXP
@@ -477,7 +477,7 @@
 {
 	int percentage;
 
-	if (less_gets_pos >= 0)	/* don't touch statusline while input is done! */
+	if (less_gets_pos >= 0) /* don't touch statusline while input is done! */
 		return;
 
 	clear_line();
@@ -503,7 +503,7 @@
 {
 	const char *p;
 
-	if (less_gets_pos >= 0)	/* don't touch statusline while input is done! */
+	if (less_gets_pos >= 0) /* don't touch statusline while input is done! */
 		return;
 
 	/* Change the status if flags have been set */
diff --git a/miscutils/makedevs.c b/miscutils/makedevs.c
index bba7fa6..e74c47c 100644
--- a/miscutils/makedevs.c
+++ b/miscutils/makedevs.c
@@ -121,7 +121,7 @@
 
 		if ((2 > sscanf(line, "%40s %c %o %40s %40s %u %u %u %u %u",
 					name, &type, &mode, user, group,
-					&major,	&minor, &start, &increment, &count))
+					&major, &minor, &start, &increment, &count))
 		 || ((unsigned)(major | minor | start | count | increment) > 255)
 		) {
 			bb_error_msg("invalid line %d: '%s'", linenum, line);
diff --git a/miscutils/mt.c b/miscutils/mt.c
index d19866a..142901b 100644
--- a/miscutils/mt.c
+++ b/miscutils/mt.c
@@ -108,7 +108,7 @@
 	if (argv[2])
 		op.mt_count = xatoi_positive(argv[2]);
 	else
-		op.mt_count = 1;		/* One, not zero, right? */
+		op.mt_count = 1;  /* One, not zero, right? */
 
 	switch (opcode_value[idx]) {
 		case MTWEOF:
diff --git a/miscutils/nandwrite.c b/miscutils/nandwrite.c
index de30a0c..831d2f7 100644
--- a/miscutils/nandwrite.c
+++ b/miscutils/nandwrite.c
@@ -53,12 +53,12 @@
 #define IS_NANDDUMP  (ENABLE_NANDDUMP && (!ENABLE_NANDWRITE || (applet_name[4] == 'd')))
 #define IS_NANDWRITE (ENABLE_NANDWRITE && (!ENABLE_NANDDUMP || (applet_name[4] != 'd')))
 
-#define OPT_p	(1 << 0) /* nandwrite only */
-#define OPT_o	(1 << 0) /* nanddump only */
-#define OPT_s	(1 << 1)
-#define OPT_b	(1 << 2)
-#define OPT_f	(1 << 3)
-#define OPT_l	(1 << 4)
+#define OPT_p  (1 << 0) /* nandwrite only */
+#define OPT_o  (1 << 0) /* nanddump only */
+#define OPT_s  (1 << 1)
+#define OPT_b  (1 << 2)
+#define OPT_f  (1 << 3)
+#define OPT_l  (1 << 4)
 
 /* helper for writing out 0xff for bad blocks pad */
 static void dump_bad(struct mtd_info_user *meminfo, unsigned len, int oob)
diff --git a/miscutils/runlevel.c b/miscutils/runlevel.c
index 608e87f..363e450 100644
--- a/miscutils/runlevel.c
+++ b/miscutils/runlevel.c
@@ -1,11 +1,11 @@
 /* vi: set sw=4 ts=4: */
 /*
- * runlevel	Prints out the previous and the current runlevel.
+ * Prints out the previous and the current runlevel.
  *
- * Version:	@(#)runlevel  1.20  16-Apr-1997  MvS
+ * Version: @(#)runlevel  1.20  16-Apr-1997  MvS
  *
- *		This file is part of the sysvinit suite,
- *		Copyright 1991-1997 Miquel van Smoorenburg.
+ * This file is part of the sysvinit suite,
+ * Copyright 1991-1997 Miquel van Smoorenburg.
  *
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  *
diff --git a/miscutils/strings.c b/miscutils/strings.c
index 40478de..7ab0e22 100644
--- a/miscutils/strings.c
+++ b/miscutils/strings.c
@@ -9,10 +9,10 @@
 
 #include "libbb.h"
 
-#define WHOLE_FILE		1
-#define PRINT_NAME		2
-#define PRINT_OFFSET	4
-#define SIZE			8
+#define WHOLE_FILE    1
+#define PRINT_NAME    2
+#define PRINT_OFFSET  4
+#define SIZE          8
 
 int strings_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
 int strings_main(int argc UNUSED_PARAM, char **argv)
diff --git a/miscutils/watchdog.c b/miscutils/watchdog.c
index 3325396..36902a2 100644
--- a/miscutils/watchdog.c
+++ b/miscutils/watchdog.c
@@ -21,7 +21,7 @@
 {
 	static const char V = 'V';
 
-	write(3, &V, 1);	/* Magic, see watchdog-api.txt in kernel */
+	write(3, &V, 1);  /* Magic, see watchdog-api.txt in kernel */
 	if (ENABLE_FEATURE_CLEAN_UP)
 		close(3);
 	exit(EXIT_SUCCESS);
