diff --git a/coreutils/sort.c b/coreutils/sort.c
index 972477b..1ba05ec 100644
--- a/coreutils/sort.c
+++ b/coreutils/sort.c
@@ -153,7 +153,7 @@
 		/* Perform actual comparison */
 		switch(flags&7) {
 			default:
-				bb_error_msg_and_die("Unknown sort type.");
+				bb_error_msg_and_die("unknown sort type");
 				break;
 			/* Ascii sort */
 			case 0:
@@ -233,12 +233,12 @@
 		switch(*line) {
 #ifdef CONFIG_FEATURE_SORT_BIG
 			case 'o':
-				if(outfile) bb_error_msg_and_die("Too many -o.");
+				if(outfile) bb_error_msg_and_die("too many -o");
 				outfile=xfopen(optarg,"w");
 				break;
 			case 't':
 				if(key_separator || optarg[1])
-					bb_error_msg_and_die("Too many -t.");
+					bb_error_msg_and_die("too many -t");
 				key_separator=*optarg;
 				break;
 			/* parse sort key */
@@ -262,7 +262,7 @@
 						temp2=strchr(optlist,*temp);
 						flag=(1<<(temp2-optlist));
 						if(!temp2 || (flag>FLAG_M && flag<FLAG_b))
-							bb_error_msg_and_die("Unknown key option.");
+							bb_error_msg_and_die("unknown key option");
 						/* b after , means strip _trailing_ space */
 						if(i && flag==FLAG_b) flag=FLAG_bb;
 						key->flags|=flag;
diff --git a/coreutils/uudecode.c b/coreutils/uudecode.c
index a08d985..8b7de74 100644
--- a/coreutils/uudecode.c
+++ b/coreutils/uudecode.c
@@ -23,7 +23,7 @@
 		char *line_ptr = line;
 
 		if (strcmp(line, "end") == 0) {
-			return(EXIT_SUCCESS);
+			return EXIT_SUCCESS;
 		}
 		length = ((*line_ptr - 0x20) & 0x3f)* 4 / 3;
 
@@ -32,13 +32,13 @@
 			continue;
 		}
 		if (length > 60) {
-			bb_error_msg_and_die("Line too long");
+			bb_error_msg_and_die("line too long");
 		}
 
 		line_ptr++;
 		/* Tolerate an overly long line to accomodate a possible exta '`' */
 		if (strlen(line_ptr) < (size_t)length) {
-			bb_error_msg_and_die("Short file");
+			bb_error_msg_and_die("short file");
 		}
 
 		while (length > 0) {
@@ -63,7 +63,7 @@
 		}
 		free(line);
 	}
-	bb_error_msg_and_die("Short file");
+	bb_error_msg_and_die("short file");
 }
 
 static int read_base64(FILE *src_stream, FILE *dst_stream)
@@ -84,7 +84,7 @@
 			do {
 				ch = fgetc(src_stream);
 				if (ch == EOF) {
-					bb_error_msg_and_die("Short file");
+					bb_error_msg_and_die("short file");
 				}
 			} while ((table_ptr = strchr(base64_table, ch)) == NULL);
 
@@ -101,7 +101,7 @@
 			else if (*table_ptr == '\n') {
 				/* Check for terminating line */
 				if (term_count == 5) {
-					return(EXIT_SUCCESS);
+					return EXIT_SUCCESS;
 				}
 				term_count = 1;
 				continue;
@@ -175,7 +175,7 @@
 		free(line);
 		ret = decode_fn_ptr(src_stream, dst_stream);
 		fclose_if_not_stdin(src_stream);
-		return(ret);
+		return ret;
 	}
-	bb_error_msg_and_die("No `begin' line");
+	bb_error_msg_and_die("no 'begin' line");
 }
