use more busybox functions and remove redundant code
diff --git a/coreutils/sum.c b/coreutils/sum.c
index 2618648..d68043c 100644
--- a/coreutils/sum.c
+++ b/coreutils/sum.c
@@ -56,11 +56,9 @@
 		fp = stdin;
 		have_read_stdin = 1;
 	} else {
-		fp = fopen(file, "r");
-		if (fp == NULL) {
-			bb_perror_msg("%s", file);
+		fp = bb_wfopen(file, "r");
+		if (fp == NULL)
 			return 0;
-		}
 	}
 
 	while ((ch = getc(fp)) != EOF) {
@@ -71,22 +69,22 @@
 	}
 
 	if (ferror(fp)) {
-		bb_perror_msg("%s", file);
-		if (!IS_STDIN(file))
-			fclose(fp);
+		bb_perror_msg(file);
+		bb_fclose_nonstdin(fp);
 		return 0;
 	}
 
-	if (!IS_STDIN(file) && fclose(fp) == EOF) {
-		bb_perror_msg("%s", file);
+	if (bb_fclose_nonstdin(fp) == EOF) {
+		bb_perror_msg(file);
 		return 0;
 	}
 
-	printf("%05d %5s", checksum,
+	printf("%05d %5s ", checksum,
 	       make_human_readable_str(total_bytes, 1, 1024));
 	if (print_name > 1)
-		printf(" %s", file);
-	putchar('\n');
+		puts(file);
+	else
+		printf("\n");
 
 	return 1;
 }
@@ -112,7 +110,7 @@
 	} else {
 		fd = open(file, O_RDONLY);
 		if (fd == -1) {
-			bb_perror_msg("%s", file);
+			bb_perror_msg(file);
 			return 0;
 		}
 	}
@@ -125,7 +123,7 @@
 			break;
 
 		if (bytes_read == -1) {
-			bb_perror_msg("%s", file);
+			bb_perror_msg(file);
 			if (!IS_STDIN(file))
 				close(fd);
 			return 0;
@@ -137,18 +135,19 @@
 	}
 
 	if (!IS_STDIN(file) && close(fd) == -1) {
-		bb_perror_msg("%s", file);
+		bb_perror_msg(file);
 		return 0;
 	}
 
 	r = (s & 0xffff) + ((s & 0xffffffff) >> 16);
 	checksum = (r & 0xffff) + (r >> 16);
 
-	printf("%d %s", checksum,
+	printf("%d %s ", checksum,
 	       make_human_readable_str(total_bytes, 1, 512));
 	if (print_name)
-		printf(" %s", file);
-	putchar('\n');
+		puts(file);
+	else
+		printf("\n");
 
 	return 1;
 }